之前发过几个帖子,求助串口通信程序的编制,得到了无能前辈的无私帮助,还有我的两位同学的大力支持。
8 W" B1 b8 ] q- {现在程序基本完成,写个小结,说不上经验,毕竟我也是第一次写通信程序,算是教训吧。* T1 }0 V/ j% q& @
1. 通信协议的理解8 n0 _" c X+ R& Z4 P( U
每个硬件设备厂商都有自己的一套通信协议,比如发送或接收命令的定义,发送命令之后返回数据的定义等等。这应该是通信程序收发数据逻辑顺序的依据。
' |: G( t% V' \& s* d# C4 O2. 接受、发送数据的格式 b, ]6 M( r. N, _1 n7 T
MSComm接、发数据有两种格式,在属性InputMode里设置,一为comInputModeBinary,二进制;二为comInputModeText,为文本。& Y# I# B) U% l4 H' w
我之前就是数据格式弄混了,所以一直出现错误。例如,MSComm1.Output = "R00000016U"," "里面的就是文本形式的数据,如果InputMode里设置的是InputMode=comInputModeBinary,那么发送肯定有误。0 D0 [; z$ c0 o# O
3. 清空缓存和清空接收数据存放的缓冲数组4 k& T+ U2 U K( B P6 Z
每收发一次数据,就要清空缓存或是数据存放的缓冲数组。以免两次收发的数据发生交叠,产生错误。
7 g4 R# b, G Z
/ g# X& j6 ]! a* k: W+ [+ G9 b" E4 I2 N' V2 Z+ J9 \ a' e" _
这三点是之前编程时最常犯的错误。希望能给各位需要编制串口通信程序的社友提个醒。
$ m1 X H0 v& s
H, [9 a% `2 K* x0 U( w再次感谢各位社友的关注和帮助!1 `, r5 j* R9 \& U; j6 h
% E3 G% v2 C: S, D a; X8 z- F! J3 L W* r2 \8 C/ P
" X) A: I4 Z4 N; i8 H }" V2 A |