'如果OOF是在前面的话,就取数据的第四位开始处理吧. Dim ST As String ST = MSComm1.Input ST = Mid(ST, 4) MsgBox ST
午夜逛街大侠的方法很好, 不过需要改经如下: 既然所有的命令都有开始符和结束符号, 可以这样:'去掉00F Private strAllBuffer as string ''总Buffer, 用于保存接收的全部信息, 慢慢再处理Private sub MSComm1_OnComm() Dim ST As String ST = MSComm1.Input ST = Replace(ST, Chr(2) & "00F" & Chr(3) , "") strAllBuffer=strAllBuffer & ST End Sub
Dim ST As String
ST = MSComm1.Input
ST = Replace(ST, "00F", "")
MsgBox ST
因为该项目涉及到数据采集,所以数据的读取必须很及时,所以不可能等到在缓冲里过滤之后再读出来啊。to tztz520(午夜逛街):
采集的数据中也可能出现00Fto Wenking003(文君):
那你的意思是说一个字节一个字节的读吗?先谢谢三位的回答
Dim ST As String
ST = MSComm1.Input
ST = Mid(ST, 4)
MsgBox ST
既然所有的命令都有开始符和结束符号, 可以这样:'去掉00F
Private strAllBuffer as string ''总Buffer, 用于保存接收的全部信息, 慢慢再处理Private sub MSComm1_OnComm()
Dim ST As String
ST = MSComm1.Input
ST = Replace(ST, Chr(2) & "00F" & Chr(3) , "")
strAllBuffer=strAllBuffer & ST
End Sub
楼主是搞闸门自动控制的? 那我们是同行了
"给PLC发读指令,每5秒发一次,它会给我返回一些数据" 这部分数据中应该没有"00F"的吧
那每次发送的时候把 MSComm1.InBufferCount = 0 ‘清除接收缓冲区
每5秒发一次时间不算短,我发送的命令每0.005秒发一次.还要通过crc16的处理也可以的.(不过我只是读数据 ModBus协议)