VB编写的简单的上位机
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一个简单的用VB编写的上位机程序
自己想做一个简单上位机,却发现相关的资料很少,于是在做出来之后把自己的这样一个简单程序上传,给新入门的朋友一个借鉴学习的资料。
窗口布局
用到的MSComm控件的基本属性(必用)
CommPort:设置或返回串口通信的串口号(COM口)
设置格式是:mPort[=value],其中object为控件名,
如MSComm1;value的合法值是整形的数据,例如1,2……
比如mPort=1(默认值),表示我们将用COM1口进
行通信
COM口可以通过鼠标右击“我的电脑(计算机)”图标,在弹出的快捷菜单中选择“管理”,弹出如下图左边的对话框
左键点击“设备管理器”可以看到上图右边对话框
左键点击设备管理器可以看到如上图右边视图
其中的就是当前连接到计算机的可用串口了Settings:以字符串的形式设置或返回串口通信参数。
设置格式:mPort[=value]其中object为控件名,如MSComm1;
Value需为一字符串,由四个设置值组成
其格式为:“波特率,奇偶校验,数据位,停止位”
Portopen:设置或返回串口状态,若其已经打开,则返回TRUE,否则返回FALSE 设置格式:object.Portopen[=value]其中object为控件名,如
MSComm1;value为一逻辑值,若为TRUE,则打开,否则关闭注意:如果串口不是打开(关闭),而对它进行关闭(打开)将会出错RThreshold:该属性为一阀值。当接收缓冲区中字符数达到该值时,MSComm 控件设置Commevent属性为ComEvReceive,并产生OnComm事件。
用户可在OnComm事件处理程序中进行相应处理。若Rthreshold属
性设置为0,则不产生OnComm事件。例如用户希望接收缓冲区中
达到一个字符就接收一个字符,可将Rthreshold设置为1。这样接收
缓冲区中接收到一个字符,就产生一次OnComm事件。InputMode:设置或返回接收数据的类型。
设置格式:object.InputMode[=value],其中value的值有两个;
comInputModeBinary表示以二进制方式接收数据,Input属性返回值为一字符串
comInputModeText表示以字符方式接收数据,Input属性返回值为一字数组
InputLen:设置或返回一次从接收缓冲区中读取字节数。
设置格式:object.InputLen[=value],value为一个整形数据;当其设
置为0时,表示一次读取接收缓冲区中的全部内容。这个属性在定字
节读取中非常有用
Input:从接收缓冲区中读取数据并清空该缓冲区,该属性设计时无效,运行时只读。
使用格式:str=object.Input,str为一字符串型变量或对象
Output:向发送缓冲区发送数据,该属性设计时无效,运行时只读。
使用格式:object.Output=value,value为一字符串型变量或任意类型的
数组
CommEvent:这是一个非常重要的属性。该属性设计时无效,运行时只读。一旦串口发生通信事件或产生错误,依据产生的事件和错误,MSComm
控件为CommEvent属性赋不同的代码,同时产生OnComm事件。
用户程序就可在OnComm事件处理程序中针对不同的代码,进行相
应的处理。
ComEvReceive接受到Rthreshold个字符。该事件将持续产生,直
到用Input属性从接受缓冲区中读取并删除字符。
其它的属性,需要时可以在网上查找相关资料(下面附几个网址)/view/84fb2949336c1eb91a375d91.html
这个里面讲的很详细的
程序代码
Private Sub Combo2_Click()
MSComm1.Settings=Combo2.Text+",n,8,1"
End Sub
Private Sub Command6_Click()
On Error GoTo uerror:
If Command6.Caption="打开串口"Then
MSComm1.PortOpen=True
Command6.Caption="关闭串口"
Shape1.FillColor=RGB(0,255,0)
Else
MSComm1.PortOpen=False
Command6.Caption="打开串口"
Shape1.FillColor=RGB(128,128,128)
End If
Exit Sub
uerror:
msg$="无效端口号"
Title$="串口调试"
X=MsgBox(msg$,48,Title$)
End Sub
Private Sub Form_Load()
Text1=""
Text3=""
Combo2.ListIndex=0
Combo1.ListIndex=0
Timer1.Interval=Val(Text2)
mPort=Combo1.ListIndex+1
MSComm1.RThreshold=1
MSComm1.InputLen=0
If Option3Then MSComm1.InputMode=comInputModeBinary End Sub
Private Sub Form_Unload(Cancel As Integer)
If MSComm1.PortOpen Then MSComm1.PortOpen=False End Sub