之前发过几个帖子,求助串口通信程序的编制,得到了无能前辈的无私帮助,还有我的两位同学的大力支持。# {6 D( p5 M: K" ^: Q8 y5 g
现在程序基本完成,写个小结,说不上经验,毕竟我也是第一次写通信程序,算是教训吧。8 l$ E: B$ S& P2 a
1. 通信协议的理解* [. S7 y9 |3 j$ s6 g; F" p
每个硬件设备厂商都有自己的一套通信协议,比如发送或接收命令的定义,发送命令之后返回数据的定义等等。这应该是通信程序收发数据逻辑顺序的依据。, m$ W/ Z6 G+ d0 G; s; I: H
2. 接受、发送数据的格式! l8 q" B! p- D5 K9 }
MSComm接、发数据有两种格式,在属性InputMode里设置,一为comInputModeBinary,二进制;二为comInputModeText,为文本。
" y5 ]& G- I& K; G' a我之前就是数据格式弄混了,所以一直出现错误。例如,MSComm1.Output = "R00000016U"," "里面的就是文本形式的数据,如果InputMode里设置的是InputMode=comInputModeBinary,那么发送肯定有误。
; X8 M2 l8 E' n3. 清空缓存和清空接收数据存放的缓冲数组
% v5 e$ Y' T- y1 P2 T' n每收发一次数据,就要清空缓存或是数据存放的缓冲数组。以免两次收发的数据发生交叠,产生错误。
6 c3 D" D0 x5 x! E, P
! R8 l# f9 r% B1 b
( t' E; @; R1 ~$ p这三点是之前编程时最常犯的错误。希望能给各位需要编制串口通信程序的社友提个醒。
" q# Q9 T$ A/ }: D
! G# m' d' I p* c再次感谢各位社友的关注和帮助!, _) v5 ^3 ]$ H
4 `5 u6 w4 E n7 [8 B5 U3 H
1 [$ M5 H, A! w' `# E; F" t i9 p0 q Y" y3 x/ b
|