我在我的程序中用MSComm控件与一个仪表进行通讯,不知道怎么用,写了下面的一段代码,可是读不出数据:
Dim ReadData As String
Dim InData As StringPrivate Sub Command1_Click()
MSComm1.CommPort = 2
MSComm1.Settings = "4800,n,8,1"
MSComm1.PortOpen = True
MSComm1.InBufferCount = 0
' MSComm1.Output = ReadData
Do
Loop Until MSComm1.InBufferCount >= 10
InData = MSComm1.Input
Text1.Text = InData
End Sub
这个仪表是以固定的波特率采集数据,并在采集完成之后以只讲的方式向外发送数据的.问题:
我用单步的方法,看MSComm1.Input,可是一直都是空的请问如何写才能实现最简单的读出数据?谢谢!
Dim ReadData As String
Dim InData As StringPrivate Sub Command1_Click()
MSComm1.CommPort = 2
MSComm1.Settings = "4800,n,8,1"
MSComm1.PortOpen = True
MSComm1.InBufferCount = 0
' MSComm1.Output = ReadData
Do
Loop Until MSComm1.InBufferCount >= 10
InData = MSComm1.Input
Text1.Text = InData
End Sub
这个仪表是以固定的波特率采集数据,并在采集完成之后以只讲的方式向外发送数据的.问题:
我用单步的方法,看MSComm1.Input,可是一直都是空的请问如何写才能实现最简单的读出数据?谢谢!
帮你顶一下我很感兴趣 也要学 我看到有的书上用psis(好像是这么写的)仿真器来仿真电脑串口通信
我是自己学 还是新手 对单片机还不了解 考虑到价格和功能因素 请问采用哪种型号的仿真测试的产品 搂主能帮我推荐一下么
Do
Loop Until MSComm1.InBufferCount >= 10
长期没有数据传入,你的界面不就死在这儿啦,对其他操作无法响应!加上DoEvent吧!
comm.InputMode = comInputModeBinary '用二进制
comm.InputLen = 1 '读1字节
其它设置如楼主
这是一个接受过程,在模块中
Public Sub RFreceive(bb() As Byte, MSComm1 As MSComm, dLen As Integer)
'bb()为接收的数组,iLen为数据长度
On Error GoTo errh
Dim bufin() As Byte
dLen = 0
i = 1
debugSS = "" '调试用字符串
Do While MSComm1.InBufferCount > 0
bufin = MSComm1.Input
bb(i) = bufin(0)
debugSS = debugSS & " " & Hex(bufin(0)) '调试信息,即返回的数据信息
i = i + 1
Loop
dLen = i - 1
' MsgBox debugSS
Exit Sub
errh:
MsgBox "接收过程错误:" & Err.Description
End Sub
一种是你自己判断时间去接收,一种是用串口空间的ONCOMM事件
第一种如楼主所写,但要加入DOEVENTS
DO
DOEVENTS
LOOP UNTIL...
第二种需要设置,MSCOMM的RTHRESHOLD属性,即在串口收到多少个字节数据时触发事件,0为禁止这项功能,1 为每收到一字节就触发