文档库 最新最全的文档下载
当前位置:文档库 › 上位机快速开发教程

上位机快速开发教程

上位机快速开发教程
上位机快速开发教程

https://www.wendangku.net/doc/b66649293.html,上位机开发

10自动化胡志强

目录

一、准备工作 (3)

二、串口通信常识 (3)

常用属性和方法 (3)

三、开发步骤(仅供参考) (4)

四、源代码 (9)

五、程序中用到的几个函数解释: (13)

一、准备工作

一台装有VS2010的计算机,用于测试的虚拟串口软件。同时你必须具有VB基础知识,这个VB上位机开发是入门级的,仅将https://www.wendangku.net/doc/b66649293.html,通信基础方法稍作介绍。

二、串口通信常识

在串口通信中,通过编写单片机程序知道,我们应对如下参数进行设置:波特率、数据位和停止位、奇偶校验位。如果自己编写上位机的时候,我们考虑的不能仅仅是这些了,下面介绍上位机开发过程中需要特别注意的知识点。

MSComm控件提供了两种处理通信的方式:一种为事件驱动方式,该方式相当于一般程序设计中的中断方式。当串口发生事件或错误时,MSComm控件会产生OnComm事件,用户程序可以捕获该事件进行相应处理。

常用属性和方法

利用MSComm控件实现计算机通信的关键是理解并正确设置MSComm控件众多属性和方法。以下是MSComm控件的常用属性和方法:

●Commport:设置或返回串口号。其值从COM1到COM16。

●Settings:以字符串的形式设置或返回串口通信参数。

●Portopen:设置或返回串口状态。

●InputMode:设置或返回接收数据的类型。有文本和二进制两种类型。

●Inputlen:设置或返回一次从接收缓冲区中读取字节数。

●InBufferSize:设置或返回接收缓冲区的大小,缺省值为1024字节。

●InBufferCount:设置或返回接收缓冲区中等待计算机接收的字符数。

●Input:从接收缓冲区中读取数据并清空该缓冲区,该属性设计时无效,运行时只读。

●OutBufferSize:设置或返回发送缓冲区的大小,缺省值为512字节。

●OutBufferCount:设置或返回发送缓冲区中等待计算机发送的字符数。

●Output:向发送缓冲区发送数据,该属性设计时无效,运行时只读。

●Rthreshold:该属性为一阀值。当接收缓冲区中字符数达到该值时,MSComm控件设置Commevent属性为ComEvReceive,并产生OnComm事件。用户可在OnComm事件处理程序中进行相应处理。若Rthreshold属性设置为0,则不产生OnComm事件。例如用户希望接收缓冲区中达到一个字符就接收一个字符,可将Rthreshold设置为1。这样接收缓冲区中接收到一个字符,就产生一次OnComm事件。

●Sthreshold:该属性亦为一阀值。当发送缓冲区中字符数小于该值时,MSComm控件设置Commevent属性为ComEvSend,并产生OnComm事件。若Sthreshold属性设置为0,则不产生OnComm事件。要特别注意的是仅当发送缓冲区中字符数小于该值的瞬间才产生OnComm 事件,其后就不再产生OnComm事件。例如Sthreshold设置为3,仅当发送缓冲区中字符数从3降为2时,MSComm控件设置Commevent属性为ComEvSend,同时产生OnComm事件,如发送缓冲区中字符始终为2,则不会再产生OnComm事件。这就避免了发送缓冲区中数据未发送完就反复发生OnComm事件。

●CommEvent:这是一个非常重要的属性。该属性设计时无效,运行时只读。一旦串口发生通信事件或产生错误,依据产生的事件和错误,MSComm控件为CommEvent属性赋不同的代码,同时产生OnComm事件。用户程序就可在OnComm事件处理程序中针对不同的代码,进行相应的处理。

三、开发步骤(仅供参考)

1.运行VS2010,新建一个Visual Basic的Windows窗体应用程序项目。将窗体的

StartPosition属性改为CenterScreen,运行程序时,窗体在屏幕中央显示。

2. 由于默认情况下,通信所需的“Microsoft Communications Control,version 6.0”

组件不在工具箱里面,所以我们需要手动添加。单击左侧的工具箱,并在控件栏单击鼠标右键,在弹出的菜单中选中“选择项”,在弹出的对话框中单击“COM 组件”并选中“MicrosoftCommunications Control,version 6.0”,单击确定即可完成添加。

此时移动鼠标到窗体上时,鼠标箭头就会变成电话的形状,在窗体任意位置单击放置该控件。

3.单击工具箱,在窗体上添加5个Label,并在属性里将Text属性依次改为:串口号、波

特率、校验、数据位、停止位。再向窗体上添加5个ComboBox,从上到下依次排列。

4.向窗体添加一个OvalShape和一个Button。将OvalShape的size属性改为“24,24”,

FillStyle改为Solid。

5.向窗体添加一个CheckBox、一个按钮Button和一个TextBox,将CheckBox的Text属

性改为“十六进制发送”将这个按钮的text属性改为“发送”。

6.向窗体添加一个Label和一个TextBox。更改Label的Text属性为“接收区”。

7.向窗体添加一个CheckBox,将其Text属性改为“十六进制显示”

界面布局

下面将要对部分控件进行设置,这样可以减少代码的长度

将波特率一栏ComboBox的Item属性中添加如下内容:

将校验一栏ComboBox的Item属性中添加如下内容

将数据位一栏ComboBox的Item属性中添加如下内容

将波特率一栏ComboBox的Item属性中添加如下内容

四、源代码

Public Class Form1

Dim cpSetting As String

Dim com_last_num As Integer = 0 '定义一个全局变量,作用为记录上一个串口号

Sub GetSerialPortNames() '搜索计算机中所有可用串口函数

On Error GoTo eRRHND '错误处理

'搜索计算机中可用串口

For Each sp As String In https://www.wendangku.net/doc/b66649293.html,puter.Ports.SerialPortNames

ComboBox1.Items.Add(sp)

Next

ComboBox1.Sorted = True

ComboBox1.SelectedIndex = 0 '选择搜索到的第一个串口名称

Exit Sub

eRRHND: '表示未搜到串口

MsgBox("Oh, NO!")

End Sub

'检测串口是否可用函数

Private Function Test_COM(ByVal com_num As Integer) As Boolean

If com_num <> com_last_num Or Button1.Text = "打开端口"Then'如果选择的端口跟上次一样就不检测了

On Error GoTo Comm_Error

https://www.wendangku.net/doc/b66649293.html,mPort = com_num '将新串口号赋给ComPort

AxMSComm1.PortOpen = True'打开串口

AxMSComm1.PortOpen = False'关闭串口

Test_COM = True'串口可用则返回

Exit Function

Comm_Error: '根据错误号作出相应处理

If Err.Number = 8002 Then

MsgBox("串口错误,请重新选择串口", vbOKOnly, "错误提示!")

ElseIf Err.Number = 8005 Then

MsgBox("串口已打开!")

Else

MsgBox("其它错误")

End If

Test_COM = False'如果出错,则返回0

Exit Function

Resume Next

End If

End Function

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

'载入窗体初始化

GetSerialPortNames() '将搜到的串口在下拉菜单中显示出来

AxMSComm1.InBufferSize = 1024 '接收缓冲区大小,此项无法在串口打开时进行设置

AxMSComm1.OutBufferSize = 1024 '发送缓冲区大小

ComboBox2.Text = "9600"

ComboBox3.Text = "无校验"

ComboBox4.Text = "8"

ComboBox5.Text = "1"

ChangePortProperty()

'设置接收数据的格式为二进制

AxMSComm1.InputMode = https://www.wendangku.net/doc/b66649293.html,InputModeBinary

AxMSComm1.InputLen = 0 '设置从缓冲区读取全部数据

AxMSComm1.RThreshold = 1 '设置接收串口OnCommon事件

AxMSComm1.PortOpen = True'打开串口

If AxMSComm1.PortOpen = True Then

OvalShape1.FillColor = Color.Green 'OvalShape颜色设为绿色

Button1.Text = "关闭端口"'按钮上的文字显示为关闭端口

Else

OvalShape1.FillColor = Color.Red 'OvalShape颜色设为红色

Button1.Text = "打开端口"'按钮上的文字显示为打开端口

End If

End Sub

'打开关闭串口代码

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

Dim ptNum As Integer

'通过串口名称获取串口号

If Len(ComboBox1.SelectedItem) > 4 Then

ptNum = Val(Microsoft.VisualBasic.Strings.Right(ComboBox1.Text, 2))

Else

ptNum = Val(Microsoft.VisualBasic.Strings.Right(ComboBox1.Text, 1))

End If

If AxMSComm1.PortOpen = False Then'如果串口是关闭的

If Test_COM(ptNum) = True Then'如果选择的串口可用?

' ChangePortProperty()

AxMSComm1.PortOpen = True'则打开该串口

Button1.Text = "关闭端口"'按钮上的文字显示为关闭端口

OvalShape1.FillColor = Color.Green 'OvalShape颜色设为绿色

End If

Else

AxMSComm1.PortOpen = False'关闭该串口

OvalShape1.FillColor = Color.Red 'OvalShape颜色设为红色

Button1.Text = "打开端口"'按钮上的文字显示为打开端口

End If

End Sub

'如下是访问网站的链接的代码,可以选择访问网站的浏览器,这里只使用默认的IE浏览器Private Sub LinkLabel1_LinkClicked(ByVal sender As System.Object, ByVal e As

System.Windows.Forms.LinkLabelLinkClickedEventArgs) Handles LinkLabel1.LinkClicked LinkLabel1.LinkVisited = True

System.Diagnostics.Process.Start("https://www.wendangku.net/doc/b66649293.html,/p/huzhiqianglz")

End Sub

'处理发送数据的代码

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

Dim hexString() As Byte

Dim source_Txt As String

Dim i As Integer

source_Txt = TextBox1.Text '将要发送的数据存放到变量source_Txt中

If CheckBox1.CheckState = CheckState.Checked Then'如果十六进制发送复选框被勾上If Len(source_Txt) Mod 2 = 0 And Len(source_Txt) <> 0 Then'如果将要发送的数据长度不为或者能被2整除

ReDim hexString(Len(source_Txt) / 2 - 1) '重新定义hexString数组

For i = 0 To Len(source_Txt) - 1 Step 2

hexString(i / 2) = Val("&H" & Mid(source_Txt, i + 1, 2)) '将hexString转换成十六进制显示

Next

AxMSComm1.Output = hexString '将转换的数据发送到串口

Else'否则提示格式不正确

MsgBox("格式不正确!")

End If

Else'否则输出字符串

AxMSComm1.Output = TextBox1.Text

End If

End Sub

Sub ChangePortProperty()

Dim comSetting As String

Dim parity As String = ""

'关闭端口

If AxMSComm1.PortOpen = True Then

AxMSComm1.PortOpen = False

End If

'获取串口号

If Len(ComboBox1.SelectedItem) > 4 Then

https://www.wendangku.net/doc/b66649293.html,mPort = Val(Microsoft.VisualBasic.Strings.Right(ComboBox1.Text, 2)) Else

https://www.wendangku.net/doc/b66649293.html,mPort = Val(Microsoft.VisualBasic.Strings.Right(ComboBox1.Text, 1)) End If

'设置校验方式

If ComboBox3.Text = "无校验"Then

parity = "N"

ElseIf ComboBox3.Text = "奇校验"Then

parity = "O"

ElseIf ComboBox3.Text = "偶校验"Then

parity = "E"

End If

comSetting = ComboBox2.Text & "," & parity & "," & ComboBox4.Text & "," &

ComboBox5.Text

'串口设置格式:9600,N,8,1

AxMSComm1.Settings = comSetting

End Sub

'将十进制转换为16进制

Private Function Decimal2Hex(ByRef c As String) As String

Decimal2Hex = Hex(CInt(c))

If Len(Decimal2Hex) < 2 Then

Decimal2Hex = "0" & Decimal2Hex

End If

End Function

'串口号发生改变的处理程序

Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged

ChangePortProperty()

End Sub

Private ReadStr As String = ""

Private Sub AxMSComm1_OnComm(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles AxMSComm1.OnComm

Dim i As Object

Dim bytData As Object'用来从接收缓冲区读取数据

Select Case https://www.wendangku.net/doc/b66649293.html,mEvent

'对接收事件进行处理

Case https://www.wendangku.net/doc/b66649293.html,EvReceive

bytData = AxMSComm1.Input '将接收到的数据暂存

For i = 0 To UBound(bytData)

If CheckBox2.CheckState = CheckState.Checked Then

ReadStr = ReadStr & Decimal2Hex(CStr(bytData(i)))

Else

ReadStr = ReadStr & CStr(bytData(i))

End If

Next

TextBox2.Text = ReadStr '将转换后的数据在接收区显示

End Select

End Sub

End Class

五、程序中用到的几个函数解释:

Microsoft.VisualBasic.Strings.Right(String,Num):将字符串从右边开始截取字符串String中Num 个字符。例如当String的值为“Welcome”,Num值为3,则该函数返回的值为字符串“ome”。另外通过将COM1拆分即可得到1,这是上例中得到得到串口号的方法。

Val(String):将字符串类型转换为数值型。例如String为字符串“123”,则返回值为数值型123。

Hex(Integer):将整型数转换为16进制数。如:Integer为13,则返回十六进制的D

其实有些函数看不懂也没关系,可能我介绍的不是很详细,有些资料上网查一下也很方便的,这里就不再多罗嗦了。

说明:该上位机能够在运行时自动搜索计算机上可用的串口,比以往的版本更加方便使用,适合入门者学习。但由于时间的关系,仓促之间写完本教程,仍有瑕疵,在此我不再仔细找问题了,望大家谅解。为方便大家学习,本教程及工程文件将会放到网盘与大家共享,并在此基础上增加一个例程,以方便大家理解上位机编写的方法。

网盘地址:https://www.wendangku.net/doc/b66649293.html,/share/link?shareid=486811&uk=1879534498

上位机监控软件的开发

深圳PLC编程、深圳上位机编、承接自动化项目深圳变频节能改造项目、自动化设备改造 与维修、PLC程序修改解密、上位机软件定制、免费提供自动化解决方案咨询。 1、工业过程控制系统: 提供西门子、S7-200, S7-300, S7-400,三菱FX1N FX2N,施耐德、欧姆龙、松下、台达、LG、AB 等主流PLC编程,研华、泓格模块、安装于防爆区域P+F turck、MTL远程I/O产品 选型、组态编程,各种通讯转换模块、HM I 、现场温度、压力仪表选型。为您的项目提供解决方案咨询,技术方案、投标协议图纸等制作、现场设备程序编写、组态、调试、用户培训验收等技术服务。 2、上位机软件: 软件根据您的项目需求可以提供LabVIEW、VC、VB 等软件平台,同时为了方便您对数据的 查询和处理,提供SQLSERVE R MySq卜嵌入式数据库SQLite等数据库系统,软件具备实时曲线、棒图、历史曲线、打印报表、企业内部局域网连接客户端实现联网查询功能,界面友好丰富。可更具具体需求开发相应功能。软件支持串口RS485\RS422\RS232以太网接口、 下位机包括PLC采集模块、各种智能仪表等。 组态软件编程:Wincc、iFix、组态王等应用范围各工控项目监控软件、仪表模块初始化调试软件、数据采集和仪器控制软件 3、变频节能改造项目:变频节能改造:水泵、风机、空压机、注塑机、中央空调、恒压供水等 VB/VC 等上位机软件开发 硫化机PLC上位机监控软件的开发 作者:佚名来源:本站整理发布时间:2009-6-17 13:16:00 [收藏][评论]随着硫化机自动控制水平的不断提高,硫化机的温度压力数据采集记录方法经历了圆盘记录仪、打点式记录仪、智能化无纸记录仪乃至目前较先进的上位机监控系统。上位机监控系统界面友好、控制安全可靠、精度高、数据存储量大,已越来越受用户青睐。笔者采用电阻式触摸平板电脑作为上位机,把现场数据通过传感器采集经PLC处理后送入上位机,组成一个 监控系统。 1监控系统构成 整个监控系统由A/ D模块、D/ A模块、CPU传感器、电气转换器、平板电脑组成,如图 1 所示。 上位机对数据进行分析、存盘、综合处理、打印、报警、图形显示、人机对话,并可通过数据传送对PLC进行控制。 2监控软件的设计 2.1 窗体设计在软件的编程过程中,人机界面(MM ,)非常重要,因为它直接与操作员产生信息交流,友好的人机界面要求能真实再现控制设备的状态以及准确的采集所需参数的数据,这主要依靠

说把手教你编写LabView上位机程序

手把手教你从零开始用labview编写智能车上位机程序(1) labview, 智能, 手把手, 程序, 编写 软件安装和基础知识准备 其几天把我的上位机软件发布在里这里,发现大家对这个还是很感兴趣的,因为上位机软件对于做摄像头的来说是必备的工具(也许有人说他不需要,那我很佩服他的判断能力和程序调试能力,他肯定是天才级别的人物,希望我能拜他为师,呵呵!)。不过这种东西还是自己编写的用起来顺手。想显示什么就显示什么。选择labview编写是因为labview容易上手,我从完全不会到编写到完成那个上位机软件也就用了一个星期而已。如果学VC,MFC的话,你估计对用上1个月也许还做不出什么。但是labview功能也很强大,可是我们用到的并不多,网上教程多,可是我们能用上的也并不多,学起来麻烦。我下面就专门针对这个labview的智能车上位 机软件的编写来讲解吧! 首先发布一个关于labview的广告,大家了解一下labview主要是干什么的。 LabVIEW是一种程序开发环境,由美国国家仪器(NI)公司研制开发的,类似于C和BASIC开发环境,但是LabVIEW与其他计算机语言的显著区别是:其他计算机语言都是采用基于文本的语言产生代码,而LabVIEW使用的是图形化编辑语言G编写程序,产生的 程序是框图的形式。 与C和BASIC一样,LabVIEW也是通用的编程系统,有一个完成任何编程任务的庞大函数库。LabVIEW的函数库包括数据采集、GPIB、串口控制、数据分析、数据显示及数据存储,等等。LabVIEW也有传统的程序调试工具,如设置断点、以动画方式显示数据及 其子程序(子VI)的结果、单步执行等等,便于程序的调试。 虚拟仪器(virtual instrumention)是基于计算机的仪器。计算机和仪器的密切结合是目前仪器发展的一个重要方向。粗略地说这种结合有两种方式,一种是将计算机装入仪器,其典型的例子就是所谓智能化的仪器。随着计算机功能的日益强大以及其体积的日趋缩小,这类仪器功能也越来越强大,目前已经出现含嵌入式系统的仪器。另一种方式是将仪器装入计算机。以通用的计算机硬件及操作系统为依托,实现各种仪器功能。虚拟仪器主要是指这种方式。下面的框图反映了常见的虚拟仪器方案。 虚拟仪器的主要特点有: 尽可能采用了通用的硬件,各种仪器的差异主要是软件。 可充分发挥计算机的能力,有强大的数据处理功能,可以创造出功能更强的仪器。 用户可以根据自己的需要定义和制造各种仪器。 虚拟仪器实际上是一个按照仪器需求组织的数据采集系统。虚拟仪器的研究中涉及的基础理论主要有计算机数据采集和数字信号处理。目前在这一领域内,使用较为广泛的计算机语言是美国NI公司的LabVIEW。 虚拟仪器的起源可以追溯到20世纪70年代,那时计算机测控系统在国防、航天等领域已经有了相当的发展。PC机出现以后,仪

上位机人机界面组态软件HMIMaker

上位机人机界面组态软件HMIMaker HMIMaker专为易显工控机(工控电脑),VGA工控机开发的的界面编辑设计软件! 具有绘图、按钮、位开关、字符控件、数据监控、实时曲线、动态图片、用户与密码设置等功能,完善的界面设计控件和通讯协议,使用简单,灵活,方便。只需用单机机或PLC通过串口简单发送指令,您的显示部分就一切轻松搞定!"所见即所得"、"0"代码!快速生成超炫图形界面设计,如"制作PPT"一样容易、快速!支持离线和在线模拟,快速验证您的设计效果,方便设计和调试,大大减轻软件开发人员在人机界面开发的负担和提高开发效率,专心于专业产品的开发,避免重复性劳动。为您大大地短了产品的开发周期。 HMIMaker组态软件有以下几方面的功能: (1)强大的界面显示组态功能。可视化的风格界面、丰富的工具栏,操作人员可以直接进人开发状态,节省时间。丰富的图形控仵和工况图库,既提供所需的组件,又是界面制作向导。提供给用户丰富的作图工具,丰富的动画连接方式,如隐含、闪烁、移动等等,使界面生动、直观。可随心所欲地绘制出各种工业界面,并可任意编辑,从而将开发人员从繁重的界面设计中解放出来。 (2)良好的开放性。指组态软件能与多种通信协议互联,支持多种硬件设备。开放性是衡量一个组态软件好坏的重要指标。组态软件向下应能与低层的数据采集设备通信,向上能与管理层通信,实现上位机与下位机的双向通信。 (3) 丰富的功能模块。提供丰富的控件功能库,满足用户的测控要求和现场需求。利用各种功能模块,完成实时监控产生功能报表显示历史曲线、实时曲线、提示报警等功能,使系统具有良好的人机界面,易于操作,系统既叫适用于单机集中式控制、DCS分布式控制,也可以是带远程遇信能力的远程测控系统. (4)强大的数据库。配有实时数据库,可存储各种数据,如模拟量、离散量、字符型等,实现与外部设备的数据交换。

什么叫上位机

什么叫上位机,下位机啊,它们是干什么用的啊? #4

级:

‘’‘ PLC组态软件上位机软件 悬赏分:0 - 解决时间:2009-3-25 11:53 PLC组态软件和上位机软件是一回事吗? 提问者:562727077 - 二级最佳答案 组态软件包含了人机界面的功能和与PLC通讯的功能,可以直接编写程序后,使PLC的状态得到形象的体现,同时也可以对PLC下达指令。 上位机包含的意义更广,它不紧包含了组态软件,也可能是VC\VB之类编写的人机界面,或者是类似触摸屏之类的控制件。 因此两者概念不同,不过,通常人所提的上位机一般都指组态软件。

组态软件 百科内容来自于: 组态软件 是指一些数据采集与过程控制的专用软件,它们是在自动控制系统监控层一级的软件平台和开发环境,使用灵活的组态方式,为用户提供快速构建工业自动控制系统监控功能的、通用层次的软件工具。 组态软件应该能支持各种工控设备和常见的通信协议,并且通常应提供分布式数据管理和网络功能。对应于原有的HMI(人机接口软件,Human Machine Interface)的概念,组态软件应该是一个使用户能快速建立自己的HMI的软件工具,或开发环境。在组态软件出现之前,工控领域的用户通过手工或委托第三方编写HMI 应用,开发时间长,效率低,可靠性差;或者购买专用的工控系统,通常是封闭的系统,选择余地小,往往不能满足需求,很难与外界进行数据交互,升级和增加功能都受到严重的限制。组态软件的出现,把用户从这些困境中解脱出来,可以利用组态软件的功能,构建一套最适合自己的应用系统。随着它的快速发展,实时数据库、实时控制、SCADA、通讯及联网、开放数据接口、对I/O设备的广泛支持已经成为它的主要内容,随着技术的发展,监控组态软件将会不断被赋予新的内容。 国外组态软件 1、InTouch:Wonderware的InTouch软件是最早进入我国的组态软件。在80年代末、90年代初,基于Windows3.1的InTouch软件曾让我们耳目一新,并且InTouch提供了丰富的图库。但是,早期的InTouch软件采用DDE方式与驱动程序通信,性能较差,最新的InTouch7.0版已经完全基于32位的Windows平台,并且提供了OPC支持。 2、Fix:Intellution公司以Fix组态软件起家,1995年被爱默生收购,现在是爱默生集团的全资子公司,Fix6.x软件提供工控人员熟悉的概念和操作界面,并提供完备的驱动程序(需单独购买)。Intellution将自己最新的产品系列命名为iFiX,在iFiX中,Intellution提供了强大的组态功能,但新版本与以往的6.x版本并

上位机快速开发教程

https://www.wendangku.net/doc/b66649293.html,上位机开发 10自动化胡志强

目录 一、准备工作 (3) 二、串口通信常识 (3) 常用属性和方法 (3) 三、开发步骤(仅供参考) (4) 四、源代码 (9) 五、程序中用到的几个函数解释: (13)

一、准备工作 一台装有VS2010的计算机,用于测试的虚拟串口软件。同时你必须具有VB基础知识,这个VB上位机开发是入门级的,仅将https://www.wendangku.net/doc/b66649293.html,通信基础方法稍作介绍。 二、串口通信常识 在串口通信中,通过编写单片机程序知道,我们应对如下参数进行设置:波特率、数据位和停止位、奇偶校验位。如果自己编写上位机的时候,我们考虑的不能仅仅是这些了,下面介绍上位机开发过程中需要特别注意的知识点。 MSComm控件提供了两种处理通信的方式:一种为事件驱动方式,该方式相当于一般程序设计中的中断方式。当串口发生事件或错误时,MSComm控件会产生OnComm事件,用户程序可以捕获该事件进行相应处理。 常用属性和方法 利用MSComm控件实现计算机通信的关键是理解并正确设置MSComm控件众多属性和方法。以下是MSComm控件的常用属性和方法: ●Commport:设置或返回串口号。其值从COM1到COM16。 ●Settings:以字符串的形式设置或返回串口通信参数。 ●Portopen:设置或返回串口状态。 ●InputMode:设置或返回接收数据的类型。有文本和二进制两种类型。 ●Inputlen:设置或返回一次从接收缓冲区中读取字节数。 ●InBufferSize:设置或返回接收缓冲区的大小,缺省值为1024字节。 ●InBufferCount:设置或返回接收缓冲区中等待计算机接收的字符数。 ●Input:从接收缓冲区中读取数据并清空该缓冲区,该属性设计时无效,运行时只读。 ●OutBufferSize:设置或返回发送缓冲区的大小,缺省值为512字节。 ●OutBufferCount:设置或返回发送缓冲区中等待计算机发送的字符数。 ●Output:向发送缓冲区发送数据,该属性设计时无效,运行时只读。 ●Rthreshold:该属性为一阀值。当接收缓冲区中字符数达到该值时,MSComm控件设置Commevent属性为ComEvReceive,并产生OnComm事件。用户可在OnComm事件处理程序中进行相应处理。若Rthreshold属性设置为0,则不产生OnComm事件。例如用户希望接收缓冲区中达到一个字符就接收一个字符,可将Rthreshold设置为1。这样接收缓冲区中接收到一个字符,就产生一次OnComm事件。 ●Sthreshold:该属性亦为一阀值。当发送缓冲区中字符数小于该值时,MSComm控件设置Commevent属性为ComEvSend,并产生OnComm事件。若Sthreshold属性设置为0,则不产生OnComm事件。要特别注意的是仅当发送缓冲区中字符数小于该值的瞬间才产生OnComm 事件,其后就不再产生OnComm事件。例如Sthreshold设置为3,仅当发送缓冲区中字符数从3降为2时,MSComm控件设置Commevent属性为ComEvSend,同时产生OnComm事件,如发送缓冲区中字符始终为2,则不会再产生OnComm事件。这就避免了发送缓冲区中数据未发送完就反复发生OnComm事件。 ●CommEvent:这是一个非常重要的属性。该属性设计时无效,运行时只读。一旦串口发生通信事件或产生错误,依据产生的事件和错误,MSComm控件为CommEvent属性赋不同的代码,同时产生OnComm事件。用户程序就可在OnComm事件处理程序中针对不同的代码,进行相应的处理。

上位机

LabVIEW 百科名片 LabVIEW程序 LabVIEW是一种程序开发环境,由美国国家仪器(NI)公司研制开发的,类似于C和BASIC开发环境,但是LabVIEW与其他计算机语言的显著区别是:其他计算机语言都是采用基于文本的语言产生代码,而LabVIEW使用的是图形化编辑语言G编写程序,产生的程序是框图的形式。 目录

版本信息 简介 特点 版本信息 展开 编辑本段简介 虚拟仪器(VI) 的概念 虚拟仪器[1](virtual instrument)是基于计算机的仪器。计算机和仪器的密切结合是目前仪器发展的一个重要方向。粗略地说这种结合有两种方式,一种是将计算机装入仪器,其典型的例子就是所谓智能化的仪器。随着计算机功能的日益强大以及其体积的日趋缩小,这类仪器功能也越来越强大,目前已经出现含嵌入式系统的仪器。另一种方式是将仪器装入计算机。以通用的计算机硬件及操作系统为依托,实现各种仪器功能。虚拟仪器主要是指这种方式。上面的框图反映了常见的虚拟仪器方案。 虚拟仪器[1]实际上是一个按照仪器需求组织的数据采集系统。虚拟仪器[1]的研究中涉及的基础理论主要有计算机数据采集和数字信号处理。目前在这一领域内,使用较为广泛的计算机语言是美国 NI 公司的 LabVIEW[2]。 虚拟仪器的起源可以追溯到20世纪70年代,那时计算机测控系统在国防、航天等领域已经有了相当的发展。PC机出现以后,仪器级的计算机化成为可能,甚至在 Microsof t公司的 Windows 诞生之前,NI公司已经在Macintosh计算机上推出了LabVIEW2.0 以前的版本。对虚拟仪器和LabVIEW [2]长期、系统、有效的研究开发使得该公司成为业界公认的权威。目前LabVIEW 的最新版本为 LabVIEW2009,LabVIEW 2009 为多线程功能添加了更多特性,这种特性在 1998 年的版本 5 中被初次引入。使用LabVIEW 软件,用户可以借助于它提供的软件环境,该环境由于其数据流编程特性、LabVIEW Real-Time 工具对嵌入式平台开发的多核支持,以及自上而下的为多核而设计的软件层次,是进行并行编程的首选。 普通的 PC 有一些不可避免的弱点。用它构建的虚拟仪器[1]或计算机测试系统性能不可能太高。目前作为计算机化仪器的一个重要发展方向是制定了VXI 标准,这是一种插卡式的仪器。每一种仪器是一个插卡,为了保证仪器的性能,又采用了较多的硬件,但这些卡式仪器本身都没有面板,其面板仍然用虚拟的方式在计算机屏幕上出现。这些卡插入标准的 VXI 机箱,再与计算机相连,就组成了一个测试系统。VXI 仪器价格昂贵,目前又推出了一种较为便宜的 PXI 标准仪器。 LabVIEW 的概念

USB上位机开发指南

第10章 上位机程序开发 在USB设备开发中,上位机程序是用于与用户进行接口的。上位机程序通过USB设备驱动程序和外部的USB硬件进行通信,USB固件程序执行所用的硬件操作。一般来说,根据选择开发平台的不同,可以使用Visual C++、Visual C#和LabVIEW等开发上位机程序。 本章首先介绍了Visual C++中控制USB设备的相关函数,接着介绍了Visual C#中读写USB设备的主意函数,最后介绍了在LabVIEW中如何读写USB设备。本章内容包括: Visual C++读写USB设备; Visual C#读写USB设备; LabVIEW读写USB设备。 10.1 Visual C++读写USB设备 在USB设备开发过程中,上位机程序可以采用广泛应用的Visual C++来实现。对于Cypress公司的EZ-USB系列芯片,其提供了全面的CY3684开发包。在该开发包中,可以使用CYIOCTL控制函数类和CyAPI控制函数类来实现Visual C++环境下对USB设备的读写。 10.1.1 CYIOCTL控制函数类 CYIOCTL控制函数类为Cypress公司的EZ-USB FX2LP系列USB接口芯片,提供了简单的控制接口。在使用Cypress公司提供的驱动程序基础上,只需在主机Visual C++程序中加入头文件cyioctl.h,然后便可以调用相应的控制函数。 为了能够使用这些函数,主机程序必须首先获得USB设备的控制句柄。可以通过以下的代码在程序中获得连接到主机的USB设备句柄。 CCyUSBDevice *USBDevice = new CCyUSBDevice(); //USB设备 HANDLE hDevice = USBDevice->DeviceHandle(); //打开设备句柄 其中,hDevice即为获得的USB设备句柄。在退出程序的时候,需要释放该USB设备句柄,使用如下的语句即可: delete USBDevice; 在主程序获得USB设备的控制句柄后,便可以调用CYIOCTL控制函数类提供的接口控制函数,下面分别进行介绍。 1.中止I/O端点的请求接口IOCTL_ADAPT_ABORT_PIPE 中止I/O端点的请求接口IOCTL_ADAPT_ABORT_PIPE用于中止I/O端点的请求,其使用示例代码如下: DWORD dwBytes = 0; =0x82; //地址 Address UCHAR DeviceIoControl(hDevice, IOCTL_ADAPT_ABORT_PIPE, //DeviceIoControl函数 &Address, sizeof (UCHAR),

上位机监控软件的开发讲课稿

深圳PLC编程、深圳上位机编、承接自动化项目,深圳变频节能改造项目、自动化设备改造与维修、PLC程序修改解密、上位机软件定制、免费提供自动化解决方案咨询。 1、工业过程控制系统: 提供西门子、S7-200,S7-300,S7-400,三菱FX1N,FX2N,施耐德、欧姆龙、松下、台达、LG、AB等主流PLC编程,研华、泓格模块、安装于防爆区域P+F、turck、MTL远程I/O产品选型、组态编程,各种通讯转换模块、HMI、现场温度、压力仪表选型。为您的项目提供解决方案咨询,技术方案、投标协议图纸等制作、现场设备程序编写、组态、调试、用户培训验收等技术服务。 2、上位机软件: 软件根据您的项目需求可以提供LabVIEW、VC、VB等软件平台,同时为了方便您对数据的查询和处理,提供SQLSERVER、MySql、嵌入式数据库SQLite等数据库系统,软件具备实时曲线、棒图、历史曲线、打印报表、企业内部局域网连接客户端实现联网查询功能,界面友好丰富。可更具具体需求开发相应功能。软件支持串口RS485\RS422\RS232、以太网接口、下位机包括PLC、采集模块、各种智能仪表等。 组态软件编程:Wincc、iFix、组态王等 应用范围各工控项目监控软件、仪表模块初始化调试软件、数据采集和仪器控制软件 3、变频节能改造项目: 变频节能改造:水泵、风机、空压机、注塑机、中央空调、恒压供水等 VB/VC等上位机软件开发 硫化机PLC上位机监控软件的开发 作者:佚名来源:本站整理发布时间:2009-6-17 13:16:00[收藏] [评论] 随着硫化机自动控制水平的不断提高,硫化机的温度压力数据采集记录方法经历了圆盘记录仪、打点式记录仪、智能化无纸记录仪乃至目前较先进的上位机监控系统。上位机监控系统界面友好、控制安全可靠、精度高、数据存储量大,已越来越受用户青睐。笔者采用电阻式触摸平板电脑作为上位机,把现场数据通过传感器采集经PLC处理后送入上位机,组成一个监控系统。 1 监控系统构成 整个监控系统由A/D模块、D/A模块、CPU、传感器、电气转换器、平板电脑组成,如图1所示。 上位机对数据进行分析、存盘、综合处理、打印、报警、图形显示、人机对话,并可通过数据传送对PLC进行控制。 2 监控软件的设计 2.1 窗体设计

单片机上位机界面编程软件一览

目前用在单片机嵌入式上位机编程的开发工具有很多,让很多刚入门的工程师们无所适从。那么用来编写单片机嵌入式上位机的工具有那几款呢?下面小编为大家细数一下使用最普遍的几款。 (1)LabVIEW:是NI推出的,和C和BASIC开发环境类似,但是LabVIEW与其他计算机语言有很大区别,其他计算机语言都是采用基于文本的语言产生代码,而LabVIEW使用的是图形化编辑语言G编写程序,产生的程序是框图的形式。特点是:采用了通用的硬件,可以通过改变软件在计算机上实现多种仪器的功能。被公认为测试之王。 2)VB:是由Microsoft公司开发的结构化的、模块化的、面向对象的、包含协助开发环境的事件驱动为机制的可视化程序设计语言。从任何标准来说,VB都是世界上使用人数最多的语言——不仅是盛赞VB的开发者还是抱怨VB的开发者的数量。它源自于BASIC编程语言。VB拥有图形用户界面(GUI)和快速应用程序开发(RAD)系统,可以轻易的使用DAO、RDO、ADO连接数据库,或者轻松的创建ActiveX控件。程序员可以轻松的使用VB提供的组件快速建立一个应用程序。 (3)VS:它是微软提供的一个工具集,由各种各样的工具组成。VS可以支持C/C++、VB、JAVA、C#编程。然了一次只能支持一种编程方式。在VS安装完成,第一次运行的时候会让你选择常用语言,如果你选择C/C++,那么他就成了能够进行C/C++编程的平台也许就是你所说的VC了。如果不想用C/C++的话,只需要修改一下他的初始化设置,选择别的编程语言,就成为了另一种的语言的编程环境了。所以总的来说它是一个集成平台。

真正地组件编程。基本上,Qt同X Window上的Motif,Openwin,GTK等图形界面库和Windows平台上的MFC,OWL,VCL,ATL是同类型的东西。

从零编写上位机

好了既然安装好了,也知道labview是用来干什么,下面就给几个基础教程吧!这都是入门级的。 LabVIEW从入门到频率测量系统的开发.pdf 《LabVIEW 8.20程序设计从入门到精通》课件.rar 再介绍一个labview学习的论坛吧,我上面介绍的两个资料在这里都可以找到。 https://www.wendangku.net/doc/b66649293.html,/bbs/index.php 既然是上位机,当然离不开串口通信,不了解串口是不行的,下面再发一个资料 串口通信.pdf 前面的你大概只用花一天时间就可以解决。在具备计算机软件环境和基础知识后就可以动手编写程序了。 先把我做的串口接收例子发布出来,大家看看吧,很简单的。还有就是单片机里的串口驱动和printp函数,这个在论坛里有下载,自己找吧,我不想发重复的东西。 串口接收示例.rar 串口收发示例.rar 到现在为止,假设你已经成功安装了软件,包括驱动和破解,而且看完了labview的基础知识和串口的基础知识。手头上也有我给你们的串口例子,相当简单。还有就是DG128上的printp。于是就可以在上位机上显示单片机发来的数据了。下一篇再详细讲述吧! 串口程序初步详解 在第一篇中,我已经给大家介绍了labview的用途,主要是用于虚拟仪器,数据采集和控制。labview的安装,破解以及其驱动的安装,其中大家可能会遇到点麻烦,如果电脑技术可以的话,很轻松的就能解决,不过在网上也能搜到解决办法。还有就是介绍两个资料,这是基础,如果不知道的话,下面很难进行。

建议你们把那个PPT里面的小练习做一下,可以很快的熟悉labview。同时labview目录下的帮助文档也写得非常好,在\National Instruments\LabVIEW 8.5\manuals里面,尤其是 LV_Getting_Started.pdf这个,按照它的步骤做个示波器,然后你就对G编程有个大概的了解的。 有了串口的基本知识,和G编程基本了解,下面就详细讲解一下我在上一篇文章中发给大家的串口示例。 这是串口程序的前面板,最左边是5个输入控件,用于配置串口属性,上面还有一个开关串口的开关。中间是一个字符显示控件,如果你大概看了一下前面的labview资料,这个应该很容易就能拖出来。

MFC上位机软件设计

MFC上位机软件设计 VC++串口上位机简单例程(源码及详细步骤) VC++串口上位机简单例程(源码及详细步骤) VC++串口上位机简单例程.rar (4.33 MB) VC++编写简单串口上位机程序 2010年4月13日10:23:40 串口通信,MCU跟PC通信经常用到的一种通信方式,做界面、写上位机程序的编程语言、编译环境等不少,VB、C#、LABVIEW等等,我会的语言很少,C语言用得比较多,但是还没有找到如何用C语言来写串口通信上位机程序的资料,在图书管理找到了用VC++编写串口上位机的资料,参考书籍,用自己相当蹩脚的C++写出了一个简单的串口上位机程序,分享一下,体验一下单片机和PC通信的乐趣。 编译环境:VC++6.0 操作系统:VMWare虚拟出来的Windows XP 程序实现功能: 1、 PC初始化COM1口,使用n81方式,波特率57600与单片机通信。PC的COM口编号可以通过如下方式修改:

当然也可以通过上位机软件编写,通过按钮来选择COM端口号,但是此次仅仅是简单的例程,就没有弄那么复杂了。COM1口可用的话,会提示串口初始化完毕。否则会提示串口已经打开Port already open,表示串口已经打开,被占用了。 2、点击开始转换,串口会向单片机发送0xaa,单片机串口中断接收到0xaa 后启动ADC转换一次,并把转换结果ADCL、ADCH共两个字节的结果发送至PC,PC 进行数值转换后在窗口里显示。(见文章末尾图) 3、为防止串口被一只占用,点击关闭串口可以关闭COM1,供其它程序使用,点击后按钮变为打开串口,点击可重新打开COM1。 程序的编写: 1、打开VC++6.0建立基于对话框的MFC应用程序Test,

USB上位机开发指南

第10章 上位机程序开发 在USB 设备开发中,上位机程序是用于与用户进行接口的。上位机程序通过USB 设备驱动程序和外部的USB 硬件进行通信,USB 固件程序执行所用的硬件操作。一般来说,根据选择开发平台的不同,可以使用Visual C++、Visual C#和LabVIEW 等开发上位机程序。 本章首先介绍了Visual C++中控制USB 设备的相关函数,接着介绍了Visual C#中读写USB 设备的主意函数,最后介绍了在LabVIEW 中如何读写USB 设备。本章内容包括: Visual C++读写USB 设备; Visual C#读写USB 设备; LabVIEW 读写USB 设备。 10.1 Visual C++读写USB 设备 在USB 设备开发过程中,上位机程序可以采用广泛应用的Visual C++来实现。对于Cypress 公司的 EZ-USB 系列芯片,其提供了全面的CY3684开发包。在该开发包中,可以使用CYIOCTL 控制函数类和CyAPI 控制函数类来实现Visual C++环境下对USB 设备的读写。 10.1.1 CYIOCTL 控制函数类 CYIOCTL 控制函数类为Cypress 公司的EZ-USB FX2LP 系列USB 接口芯片,提供了简单的控制接口。在使用Cypress 公司提供的驱动程序基础上,只需在主机Visual C++程序中加入头文件cyioctl.h ,然后便可以调用相应的控制函数。 为了能够使用这些函数,主机程序必须首先获得USB 设备的控制句柄。可以通过以下的代码在程序中获得连接到主机的USB 设备句柄。 CCyUSBDevice *USBDevice = new CCyUSBDevice(); //USB 设备 HANDLE hDevice = USBDevice->DeviceHandle(); //打开设备句柄 其中,hDevice 即为获得的USB 设备句柄。在退出程序的时候,需要释放该USB 设备句柄,使用如下的语句即可: delete USBDevice; 在主程序获得USB 设备的控制句柄后,便可以调用CYIOCTL 控制函数类提供的接口控制函数,下面分别进行介绍。 1.中止I/O 端点的请求接口IOCTL_ADAPT_ABORT_PIPE 中止I/O 端点的请求接口IOCTL_ADAPT_ABORT_PIPE 用于中止I/O 端点的请求,其使用示例代码如下: DWORD dwBytes = 0; UCHAR Address = 0x82; //地址 DeviceIoControl(hDevice, IOCTL_ADAPT_ABORT_PIPE, //DeviceIoControl 函数 &Address, sizeof (UCHAR),

单片机上位机界面编程软件一览(精)

目前用在单片机嵌入式上位机编程的开发工具有很多,让很多刚入门的工程师们无所适从。那么用来编写单片机嵌入式上位机的工具有那几款呢?下面小编为大家细数一下使用最普遍的几款。 (1LabVIEW:是NI推出的,和C和BASIC开发环境类似,但是LabVIEW与其他计算机语言有很大区别,其他计算机语言都是采用基于文本的语言产生代码,而LabVIEW使用的是图形化编辑语言G编写程序,产生的程序是框图的形式。特点是:采用了通用的硬件,可以通过改变软件在计算机上实现多种仪器的功能。被公认为测试之王。 2VB:是由Microsoft公司开发的结构化的、模块化的、面向对象的、包含协助开发环境的事件驱动为机制的可视化程序设计语言。从任何标准来说,VB都是世界上使用人数最多的语言——不仅是盛赞VB的开发者还是抱怨VB的开发者的数量。它源自于BASIC编程语言。VB拥有图形用户界面(GUI和快速应用程序开发(RAD系统,可以轻易的使用DAO、RDO、ADO连接数据库,或者轻松的创建ActiveX控件。程序员可以轻松的使用VB提供的组件快速建立一个应用程序。 (3VS:它是微软提供的一个工具集,由各种各样的工具组成。VS可以支持 C/C++、VB、JAVA、C#编程。然了一次只能支持一种编程方式。在VS安装完成,第一次运行的时候会让你选择常用语言,如果你选择C/C++,那么他就成了能够进行C/C++编程的平台也许就是你所说的VC了。如果不想用C/C++的话,只需要修改一下他的初始化设置,选择别的编程语言,就成为了另一种的语言的编程环境了。所以总的来说它是一个集成平台。 (4VC:是微软的C++开发工具,有集成开发环境,可提供编辑C语言,C++以及 C++/CLI 等编程语言。VC++有便利的除错工具,特别是包含了微软视窗程式设计(Windows API、三维动画DirectX API,Microsoft .NET框架,开发速度比较快。 (5Delphi:是一个集成开发环境(IDE,使用的核心是由传统Pascal语言发展而来 的Object Pascal,以图形用户界面为开发环境,透过IDE、VCL工具与编译器,配合连结数据库的功能,构成一个以面向对象程序设计为中心的应用程序开发工具。似乎

【第三章】C_上位机实战开发指南

第三章Windows窗体程序 3.1第一个窗体程序 3.1.1新建本地工程文件夹 为了使工程易于管理,我们首先在电脑本地新建一个文件夹用于存放整个共工程,比如命名为”DEMO”。注意文件夹名虽然根据喜好命名,但最好不要使用中文命名,因为有时候如果上位机需要加载本地文件遇到中文名必须要转码,比如加载本地URL时路径存在中文就相对麻烦,因此我建议使用英文命名。 3.1.2新建工程 启动VS2015,新建一个工程,如图3-1所示。 图3-1:在VS2015中新建工程 1.选择.NET版本 通常我们可以选择.NET2.0或者.NET4.0,.NET3.x版本兼容性差,BUG较多,几乎没有人使用,.NET4.5以上版本太高,不再支持Windows XP。 一般情况下,Windows XP已经很少使用.NET4.0,而.NET2.0可以流畅的在Windows XP及其以上版本系统上运行,即使在企业级开发中4.0也已经算非常高的版本了,因此出于兼容性的考虑,建议选择.NET2.0进行开发。当然在讲到波形绘制项目时,我们会优先选择.NET4.0。

2.选择项目类别 上位机开发选择Windows窗体应用程序。 3.命名项目名 建议使用英文名命名,避免路径中出现中文,这里我取名”Demo”。 图3-2:创建项目 我们将新建的工程放置于DEMO文件夹中即可。此时VS2015切换至窗体设计器界面。 4.控件及属性栏介绍 Windows窗体程序离不开控件的使用,在新建好工程后我们就需要找到Windows原生的控件库。 在界面左边的工具箱中就存放着所有我们可能会用到的Windows原生控件。一般情况工具箱会自动隐藏,考虑到设计界面时我们需要比较大的空间去揣摩界面设计思路,因此建议使用时都将工具箱隐藏,用到时再选择控件即可。 当然出于个人喜好又或者开发电脑有一个非常大的屏幕,我们也可以将工具栏显示在设计器界面中。 属性栏一般在界面右下角,使用频率非常高,控件样式,事件的注册等都需要在属性一栏中进行设置。

一步一步教你制作上位机图像处理软件

一步一步教你制作上位机图像处理软件 一、前言: 教程开始前,先说明一下本次教程适合哪一些人类观看和模仿学习,我觉得你应该是参加智能车竞赛的选手,并且是摄像头组的。因为只有摄像头组的,并且想拿奖的组别才会认识到上位机仿真的重要性。当然不反对其它组别的来学习本教程,只是我觉得本对其它组别的没有一点用而已。也当然的,除了参加智能车比赛的,搞图像处理方面的有兴趣也可以一看,但是声明本教程只适合初级者观看,也不反对大牛们拍砖。(在这里我理解的初级者是这样的一些人类,他应该学过C语言或者知道C语言是干什么的,然后对图像有点了解,这里的了解我觉得你朦胧的知道图像是对应一个二维数组,然后你对一个二维数组处理,图像就变了,有这等见识就足够了。对了,可能还需要你会安装软件,因为可能你没有安装开发环境。) 二、开发环境和平台: 我个人使用的平台和环境如下: 操作系统:Windows 7、64位(不是说Win7不兼容VC6.0吗?答曰:见后文下载链接。) 开发环境:VC 6.0(很是古老,但是莫笑,也莫鄙视它,原因不告诉你。) 个人觉得最佳环境为:Windows XP3 32 位+ VC6.0(木有测试过,只是凭空YY)。 三、准备下载一些库: 因为本次教程使用到大名鼎鼎的一个开源库CxImage。对于这个库我想先解释一下。首先本库是强大的,你可以使用本库轻易地开发出相当高级功能的软件,并且是开源的,也就是说本库里面任何一句代码你都可以一览无遗,如果你比较勤奋的看看了里面的代码,并且不小心优化了一些问题,我觉得你还真是有实质能力上提高。但是如果没有时间的话,库里面的代码还是先搁一边吧。先把东西搞出来然后自己研究各种算法,拿了个智能车竞赛的奖再说,毕竟在无数人眼里拿奖就是能力的重要表现,也是各种殿堂的敲门砖块,这么多人都有这样的想法,当然你不想作为一个奇葩,我还是很理解的。扯得有点远了,先泡杯奶茶回来再续写。 最重要的一点是使用本库不用遵守什么的协议,只要怀有一颗感恩的心就足够了,当然不是感谢我哈~,不过你要感谢我,我同样也会很开心和愉快。因为太多开源的库都要遵循类似于GPL 或者LGPL等等的约束。在这里不解释这些协议了,感兴趣的问问肚娘去。 废话完,该下载东西了,到以下网址下载(后文有链接):

上位机应用软件设计

4 错误!文档中没有指定样式的文字。硕士论文 1.1上位机应用软件设计 在用户看来,USB系统就是USB设备到主机的连接,但对开发人员来说,这种连接可以被分为3个逻辑层:功能层、USB设备层和USB总线接口层,且每一层都是由主机和USB设备的不同模块组成如图 1.1.1所示。 图 1.1.1 USB通信模型 在主机和设备之间通信最终都通过USB电缆进行,在上层水平层之间存在逻辑的主机到设备信息流。主机上客户软件和设备功能部件之间的通信是基于实际应用需求及设备所能提供的能力,客户软件与功能部件之间的透明通信的要求,决定主机和设备下层部件的功能以及它们的界面。 1、客户软件 负责和USB设备的功能单元进行通信,以实现其特定功能。这是本系统开发重点。客户软件不能直接访问USB设备。它一般包括USB设备驱动程序和界面应用程序两部分。USB设备驱动程序负责和USB系统软件实现接口,通常USB总线驱动程序发出I/O 请求包以启动一次USB数据传输。界面应用程序负责和USB设备驱动程序实现接口,以操控USB设备,并向用户提供可视化操作。 2、USB系统软件 负责和USB逻辑设备进行配置通信,并管理客户软件启动的数据传输。一般包括USB总线驱动程序、USB主控制器驱动程序和非USB主机软件三部分。这部分软件通常是由操作系统提供,本系统开发不需要涉及此部分。

3、USB总线接口 包括主控制器和根集线器两部分。根集线器为USB系统提供连接起点,主控制器负责完成主机和USB设备之间数据的实际传输。该模块与USB系统软件的接口依赖于主控制器的硬件实现[2]。 在USB系统中只允许一个主机,本系统主要分为3个不同模块:客户软件、USB 系统软件和USB总线接口。对于本弹丸速度测试系统来说,工作重点是放在客户软件即上位机应用软件的编写,包括USB设备驱动程序和用户端应用程序。 1.1.1上位机软件总规划 如上节所介绍的,上位机的软件主要包括两个方面:一方面是USB设备驱动程序,针对系统设计所使用的USB接口芯片,给系统提供完善的应用层操作接口;另一方面是本弹丸速度测试系统的用户端应用程序设计,负责和USB设备驱动程序实现接口,以控制USB设备,这方面也就是本节着重要介绍的。 整个软件采用MFC开发工具进行编写,界面简洁流畅,便于用户操作。 1.1.2CH375设备驱动程序 USB设备的开发需要计算机端的驱动程序,驱动程序文件图标如图1.1.2所示。 图 1.1.2 CH375驱动程序 由于USB设备属于PnP(即插即用)设备,因此当第一次插入CH375设备时,PnP 管理器能够自动检测硬件并分配I/O资源。系统初次使用该设备时,系统会提示安装驱动程序,这就是在上节提到的硬件查找。CH375WDM.INF包括了安装驱动程序的位置和信息,CH375DLL.DLL相当于给应用层的接口。 图 1.1.3 CH375头文件和库文件 上位机要进行数据传输,就需要用到接口函数,因此需要有相应头文件和链接库文件,如图 1.1.3所示。CH375DLL.H是USB总线接口芯片CH375的应用层接口库。在上位机程序和MCU程序中都要添加头文件CH375DLL.H和动态链接库。

VB上位机程序编写

VB Mscomm控件基本介绍 VB Mscomm控件 一、MSComm控件的主要属性、事件 1、MSComm的属性 Commport:设置或返回串口号。如设成1(默认值),表示对Com1进行操作。Settings:以字符串的形式设置或返回串口通信参数。包括串口通讯的比特率,奇偶校验,数据位长度、停止位等。其默认值是“9600,N,8,1”,表示串口比特率是9600bit/s,不作奇偶校验,8位数据位,1个停止位。 Portopen:设置或返回串口状态。值为True时打开串口,值为False时关闭串口。InputMode:设置或返回接收数据的类型。若值为0,则表示以文本形式读取;值为1, 则表示以二进制形式读取。 Inputlen:设置或返回一次从接收缓冲区中读取字节数。 InBufferSize:设置或返回接收缓冲区的大小,缺省值为1024字节。InBufferCount:设置或返回接收缓冲区中等待计算机接收的字符数。当将其值设为0 时,则输入寄存器将被清空。 Input:从接收缓冲区中读取数据并清空该缓冲区,该属性设计时无效,运行时只读。 OutBufferSize:设置或返回发送缓冲区的大小,缺省值为512字节。OutBufferCount:设置或返回发送缓冲区中等待计算机发送的字符数。当将其值设为0 时,则输出寄存器将被清空。 Output:向发送缓冲区发送数据,该属性设计时无效,运行时只读。Rthreshold:该属性为一阀值。当接收缓冲区中字符数达到该值时,MSComm控件设置Commevent属性为ComEvReceive,并产生OnComm事件。用户可在OnComm事件处理程序中进行相应处理。若Rthreshold属性设置为0,则不产生OnComm事件。例如用户希望接收缓冲区中达到一个字符就接收一个字符,可将Rthreshold设置为1。这样接收缓冲区中接收到一个字符,就产生一次OnComm事件。 Sthreshold:该属性亦为一阀值。当发送缓冲区中字符数小于该值时,MSComm控件设置Commevent属性为ComEvSend,并产生OnComm事件。若Sthreshold属性设置为0,则不产生OnComm事件。要特别注意的是仅当发送缓冲区中字符数小于该值的瞬间才产生OnComm事件,其后就不再产生OnComm事件。例如Sthreshold设置为3,仅当发送缓冲区中字符数从3降为2时,MSComm控件设置Commevent属性为ComEvSend,同时产生OnComm事件,如发送缓冲区中字符始终为2,则不会再产生OnComm事件。这就避免了发送缓冲区中数据未发送完就反复发生OnComm事件。CommEvent:这是一个非常重要的属性。该属性设计时无效,运行时只读。一旦串口发生通信事件或产生错误,依据产生的事件和错误,MSComm控件为CommEvent属性赋不同的代码,同时产生OnComm事件。用户程序就可在OnComm事件处理程序中针对不同的

相关文档