之前发过几个帖子,求助串口通信程序的编制,得到了无能前辈的无私帮助,还有我的两位同学的大力支持。
" _2 A2 o- V$ ]$ Y现在程序基本完成,写个小结,说不上经验,毕竟我也是第一次写通信程序,算是教训吧。
5 u- W5 e# b3 v, H0 B1. 通信协议的理解
. b6 l* ]& k1 C3 [每个硬件设备厂商都有自己的一套通信协议,比如发送或接收命令的定义,发送命令之后返回数据的定义等等。这应该是通信程序收发数据逻辑顺序的依据。: i% L A' @0 k7 M( @) g M6 |7 F
2. 接受、发送数据的格式
) e( c) J8 _% D9 t( L! NMSComm接、发数据有两种格式,在属性InputMode里设置,一为comInputModeBinary,二进制;二为comInputModeText,为文本。$ W( X) r- a; F
我之前就是数据格式弄混了,所以一直出现错误。例如,MSComm1.Output = "R00000016U"," "里面的就是文本形式的数据,如果InputMode里设置的是InputMode=comInputModeBinary,那么发送肯定有误。; J( \' l0 r- H( [; V
3. 清空缓存和清空接收数据存放的缓冲数组5 {2 k& j" K, W: O) S
每收发一次数据,就要清空缓存或是数据存放的缓冲数组。以免两次收发的数据发生交叠,产生错误。2 u. t3 e0 X$ z, w
) k4 s, y' \' \. E& b$ m
* w) O& d7 o* n$ V这三点是之前编程时最常犯的错误。希望能给各位需要编制串口通信程序的社友提个醒。
/ \/ J( K' ~7 N" V! G, x+ S# F: I3 J% |& }! ^' T/ ~: ~% I
再次感谢各位社友的关注和帮助!/ ?5 ]% c) L+ |! f3 t! R, R
4 [/ R* }: q% t$ F4 `' V; }9 N
/ `6 E) w- Q; r8 p" p5 [* K- \, c, ~$ _ d% Q. f
|