之前发过几个帖子,求助串口通信程序的编制,得到了无能前辈的无私帮助,还有我的两位同学的大力支持。
' Q# Y% G2 A4 F8 L/ ~现在程序基本完成,写个小结,说不上经验,毕竟我也是第一次写通信程序,算是教训吧。7 D+ ?1 z7 S1 z
1. 通信协议的理解
1 ?$ }' p- o; A/ Q每个硬件设备厂商都有自己的一套通信协议,比如发送或接收命令的定义,发送命令之后返回数据的定义等等。这应该是通信程序收发数据逻辑顺序的依据。
* L, ^( h+ G; |$ `7 g7 O( I' @2. 接受、发送数据的格式
+ j2 S+ ?0 s. m( H* pMSComm接、发数据有两种格式,在属性InputMode里设置,一为comInputModeBinary,二进制;二为comInputModeText,为文本。
- {: h" n* {4 d* ~2 K1 l我之前就是数据格式弄混了,所以一直出现错误。例如,MSComm1.Output = "R00000016U"," "里面的就是文本形式的数据,如果InputMode里设置的是InputMode=comInputModeBinary,那么发送肯定有误。
* R8 p% z9 @ M+ l6 Y, l3. 清空缓存和清空接收数据存放的缓冲数组; H( }% F" ~9 {( p
每收发一次数据,就要清空缓存或是数据存放的缓冲数组。以免两次收发的数据发生交叠,产生错误。" M4 _3 Z/ f6 S' k! c% }6 ^5 T! j
& r, O, ?' T" i; D/ N# u
- k& W! w: B: d7 `" {
这三点是之前编程时最常犯的错误。希望能给各位需要编制串口通信程序的社友提个醒。* I- }0 Q" d6 }- s( m' S" U
7 ~9 y+ y N+ n再次感谢各位社友的关注和帮助!
9 O [8 J' j8 B" v/ X/ W9 c
9 e9 o4 f" y# m9 Z: [
+ }8 t3 L' g% C9 F; ]. q9 V
4 t* ?' B7 `5 x% h5 d |