之前发过几个帖子,求助串口通信程序的编制,得到了无能前辈的无私帮助,还有我的两位同学的大力支持。 2 s/ q& F: o% h3 U现在程序基本完成,写个小结,说不上经验,毕竟我也是第一次写通信程序,算是教训吧。 : G1 f8 g6 m$ U% r1 H5 R1. 通信协议的理解' T' [/ Z/ f* G. \: J# \' _$ D0 f 每个硬件设备厂商都有自己的一套通信协议,比如发送或接收命令的定义,发送命令之后返回数据的定义等等。这应该是通信程序收发数据逻辑顺序的依据。 ; ^1 _. Q! u0 M% o8 R- ^2. 接受、发送数据的格式 0 l5 F) c( y/ xMSComm接、发数据有两种格式,在属性InputMode里设置,一为comInputModeBinary,二进制;二为comInputModeText,为文本。 , n* V) X# L- c& I我之前就是数据格式弄混了,所以一直出现错误。例如,MSComm1.Output = "R00000016U"," "里面的就是文本形式的数据,如果InputMode里设置的是InputMode=comInputModeBinary,那么发送肯定有误。 5 ^4 W9 A+ N- E5 m1 E0 S3. 清空缓存和清空接收数据存放的缓冲数组 , I: k$ R: C# o3 }# G每收发一次数据,就要清空缓存或是数据存放的缓冲数组。以免两次收发的数据发生交叠,产生错误。0 `6 I6 _- @' _; l) P 1 }/ v, w* \( K! D% ~ $ U: i3 E$ X) @/ p 这三点是之前编程时最常犯的错误。希望能给各位需要编制串口通信程序的社友提个醒。' Z4 G8 z# b$ A" e- _; V" F+ w B( E* D9 t- a% \ 再次感谢各位社友的关注和帮助!5 \( U0 W6 F# U8 I; B V
- Y3 Y9 ]( d- D4 x/ Z* W: r# d7 l! l6 A$ n' m" B3 p% c' U9 F ' y% g/ R9 T9 q' P+ p) r* e
|