之前发过几个帖子,求助串口通信程序的编制,得到了无能前辈的无私帮助,还有我的两位同学的大力支持。
- U j8 b( V9 c# s现在程序基本完成,写个小结,说不上经验,毕竟我也是第一次写通信程序,算是教训吧。
, T: [* @) {9 b, E, ?1. 通信协议的理解
0 S. z. x. I: o+ h# s每个硬件设备厂商都有自己的一套通信协议,比如发送或接收命令的定义,发送命令之后返回数据的定义等等。这应该是通信程序收发数据逻辑顺序的依据。
5 p) Q. R% {3 z/ B7 x2 H, H2. 接受、发送数据的格式. u ~) X5 Z) Y6 M. M) S
MSComm接、发数据有两种格式,在属性InputMode里设置,一为comInputModeBinary,二进制;二为comInputModeText,为文本。: }+ W# U' U8 y3 K5 w* b
我之前就是数据格式弄混了,所以一直出现错误。例如,MSComm1.Output = "R00000016U"," "里面的就是文本形式的数据,如果InputMode里设置的是InputMode=comInputModeBinary,那么发送肯定有误。7 W6 W j) E F) J6 k% Q
3. 清空缓存和清空接收数据存放的缓冲数组4 U l, y% E' B X2 n
每收发一次数据,就要清空缓存或是数据存放的缓冲数组。以免两次收发的数据发生交叠,产生错误。
5 ~9 I- B; x1 {/ p* B6 p' B9 Q; i; n% }/ ~
# g* w. x* L4 o' S) _, {! n9 Y. C( f
这三点是之前编程时最常犯的错误。希望能给各位需要编制串口通信程序的社友提个醒。
3 l- w% h, m1 f& g
5 G6 @- Y/ F* I再次感谢各位社友的关注和帮助!
: [5 R4 @6 Y6 N# v6 o4 t6 t+ |. p
v! g8 P L B# y4 G; c
! L) K2 p4 o1 k0 w9 Y" W$ O' N! {4 T# L- u) V4 I8 h* d, J" }
|