之前发过几个帖子,求助串口通信程序的编制,得到了无能前辈的无私帮助,还有我的两位同学的大力支持。/ u0 \( Y) V( O9 J
现在程序基本完成,写个小结,说不上经验,毕竟我也是第一次写通信程序,算是教训吧。, \! X {, A2 c0 @
1. 通信协议的理解0 i5 S0 {5 z% n/ r( X. j! \' v
每个硬件设备厂商都有自己的一套通信协议,比如发送或接收命令的定义,发送命令之后返回数据的定义等等。这应该是通信程序收发数据逻辑顺序的依据。. i; f0 {- ^: N- _9 r, y
2. 接受、发送数据的格式& H9 D4 a3 P, N' m
MSComm接、发数据有两种格式,在属性InputMode里设置,一为comInputModeBinary,二进制;二为comInputModeText,为文本。, |. n. N% Z7 V, ?7 U
我之前就是数据格式弄混了,所以一直出现错误。例如,MSComm1.Output = "R00000016U"," "里面的就是文本形式的数据,如果InputMode里设置的是InputMode=comInputModeBinary,那么发送肯定有误。1 w m* N; V, q
3. 清空缓存和清空接收数据存放的缓冲数组
2 S, G4 H. c) o) D8 Z每收发一次数据,就要清空缓存或是数据存放的缓冲数组。以免两次收发的数据发生交叠,产生错误。2 ]) G6 Q7 @. I, ^3 k
/ M% O1 h% L: A% J. r* ]
5 n9 Y, J; }+ {+ i! ~这三点是之前编程时最常犯的错误。希望能给各位需要编制串口通信程序的社友提个醒。( v$ d, U( T0 x# o. L
+ y/ m; u2 n1 X% l再次感谢各位社友的关注和帮助!
" ^. u7 b: d- ^+ l' x
/ b, d: [- y, O& X2 ^. A( c* C
2 Y- h( \- c! S: a- f9 Y p
1 n. @; u! E" U k! N. J |