随着windows98的推出,越来越多的微机用户已习惯于windows操作系统。不过windows应用软件的开发对于一般工程技术领域的技术人员来说并非易事,然而使用微软的visualbasic6.0(简称vb6)来开发这些方面的windows应用软件就十分方便,编程工作量相对较小,只需进行主要应用功能的编程和少量界面控制的编程。本文介绍利用vb6串行通信编程的方法对采用了rs-232接口的仪器,进行串行通信的计算机测控软件开发和实现仪器功能和指标的验收。
vb6提供了许多供用户选择的控件(customcontrol),这些控件以.ocx为文件后缀名,其中mscomm.ocx即是用于串行通信的控件。如果需要使用该控件,可将该控件添加到工具箱(toolbox)内,这样就可以利用该控件进行串行通信程序的设计。
下面举一个简单的例子,说明如何进行串行通信程序的设计,该程序在windows98环境下已调试通过。该例介绍通过rs-232对一台hp53150a微波计数器的程控功能和性能指标的验收。
1 设计用户界面
首先新建一个“标准exe”工程,然后选择“工程/部件”菜单项,在“部件”对话框中选择microsoft comm control6.0即可添加mscomm控件;再在窗体中依次布置如下控件并设置其属性。
2 编写程序代码
编写的程序代码如下:
private sub form_load()
msc1.commport=1 ’ 使用串行口1
’波特率9600,偶校验,8个数据位,1个停止位
msc 1.settings=“9600,e,8,1”
’当使用msc 1.input时,每次从接收缓冲区取一个字节。
msc1.inputlen=0 ’读取整个接收缓冲区内码或消除
msc1.portopen=true ’ 打开串行口
end sub
private sub comd1_click()
on error resume next ’简单的错误处理
if txt1.text = "" then
x = msgbox("被检仪器程控码不能为空值", 16)
exit sub
end if
msc1.output = txt1.text + chr$(13)
’发送程控码
for i = 1 to 20000000
next
end sub
private sub comd2_click()
txt1.text = ""
txt1.setfocus
end sub
private sub comd3_click()
dim instring as string
instring = msc1.input
msc1.output = txt2.text + chr$(13)
do
doevents
loop until msc1.inbuffercount >= 20
instring = msc1.input ’ 从接收队列中读入字符串
txt2.text = ""
txt2.text = instring ’ 显示读入的字符串
end sub
private sub comd4_click()
txt2.text = ""
txt2.setfocus
end sub
private sub comd5_click()
msc1.portopen = false ’ 关闭串行口
end
end sub
3 程序简要说明
上述程序设置的端口通信协议为: 9600波特率,偶校验,8个数据位,1个停止位。当退出程序时,一定要关闭串行口,通过comm1.portopen=false完成。使用时,在“请输入被检仪器程控码控制仪器功能”文本框中输入“func‘freq 1;freq:res1hz”即仪器的程控码为:“功能通道1测频,分辨率为1hz。单击“确定”后,hp53150a置于相应功能。加入信号后即可测量检测,当读取测量数据时在“请输入被检仪器程控码读取仪器数据”框中输入“data?”,单击“确定”后,该框中以字符的形式显示测量结果。从而实现仪器程控功能和性能指标的检测。上述只是一个简单的例子。要实现完善的功能,必须进一步改进程序。
上面介绍了笔者在使用vb6开发windows环境下测控软件的一点收获,可以看出使用vb6开发windows98下与仪器进行串口通信程序是非常简单的。