我用VB编成,在制做的VB窗口中有三个文本框,需要将某检测设备数据通过计算机串口读到vb窗口的文本框中。请帮忙解答!如能提供源代码更感谢!!
谢谢!
北京
杨2006-7-27
你是什么样的检测设备。你的检测设备应该是可编程的,它应该有它的编程模式。最好看它的编程手册。
下面的这段代码不知你能不能用上。
Public Function COMCommand(CommandData As String) As String
Dim strbuf As String
Dim i As Integer
Dim j As Integer
Dim l As String
Form1.MSComm4.Output = CommandData & Chr(&HD) & Chr(&HA)
strbuf = ""
For i = 0 To 10000
If Form1.MSComm4.InBufferCount > 0 Then
strbuf = strbuf & Form1.MSComm4.Input
If Asc(Right(strbuf, 1)) = &HA Then
COMCommand = ""
For j = 1 To Len(strbuf)
l = Mid(strbuf, j, 1)
If Asc(l) > 32 Then COMCommand = COMCommand & l
Next j
Exit Function
End If
End If
Next i
COMCommand = "COMERROR"
End Function
先读取端口连接后的内容,分析一下其中的内容,根据光谱仪读出的内容对程序做相应的调整,使VB能读出正确的信息.
VB提供了串行端口控制Mscomm来为应用程序提供串行通讯。该控件屏蔽了通信过程中的底层操作,程序员可以设置、监视Mscomm控件的属性和事件,结合Timer控件即可完成对串行口的初始化和数据的输入输出工作。Mscomm控件的主要属性如下:
(1)Commport设置并返回通讯端口号。端口号可以设置为1~16的任何数,如Mscomm.Commport=2表示设置当前通讯端口为COM2。
(2)Setting设置并返回波特率、奇偶校验、数据位、停止位。格式为Mscomm.Setting=String。String是一个包含四部分的字符串:第一部分为波特率;第二部分为奇偶校验,N表示不校验,M表示符号校验,E表示偶校验,O表示奇校验,S表示空格校验;第三部分为数据位数,其可选值为4,5,6,7,8;第四部分为停止位位数,其可选值为1,1.5,2。Setting属性的缺省值为“9600,N,8,1”。
(3)Portopen设置并返回通讯端口的状态,也可以打开和关闭端口。
(4)Input从接收缓冲区返回和删除字符。该属性在运行时为只读。
(5)InputLen设置并返回每次Input属性从接收缓冲区中读取的字符数。InputLen属性的缺省值为0。设置InputLen为0时,Input将读取接收缓冲区的全部字符。
(6)Output向传送缓冲区写数据。要传送的数据可是文本数据或二进制数据。
(7)CommEvent返回最近的通讯事件或错误。只要有通讯错误或事件发生错误时就会产生Oncomm事件。CommEvent属性中存有该错误或事件的数值代码。
Timer控件的主要属性如下:
(1)Enabled返回或设置一个值,该值用来确定一个窗体或控件否能够对用户产生的事件作出反应。通过把Enabled设置为“Galse”来使Timer控件成为无效,将取消由控件的Interval属性所建立的倒计时数。
(2)Interval返回或设置对Timer控件的计时事件调用间的毫秒数。Timer控件的Enabled属性决定该控件是否对时间的推移作出响应。将Enabled设置为“False”会关闭Timer控件,设置为“True”则打开Timer控件。当Timer控件置为有效时,倒计时总是从其Interval属性设置值开始。创建Timer事件程序。可通知VB在每次Interval到时该做什么。Timer控件和Enabled属性设置为“True”时,VB将在Interval时间到后自动访问Timer_Timer过程。
为实现通讯程序,须在VB开发环境下设置一个用做控制通讯的窗体。窗体上主要有一个通讯控件Mscomml和两个Timer控件。VB的特点是事件驱动,定时器控件会定时触发相应事件的驱动程序。