之前發過幾個帖子,求助串口通信程序的編制,得到了無能前輩的無私幫助,還有我的兩位同學的大力支持。2 _$ z7 b% X6 N
現在程序基本完成,寫個小結,說不上經驗,畢竟我也是第一次寫通信程序,算是教訓吧。
$ y3 }2 J% Y+ G% E# j1. 通信協議的理解
' [: O. [4 z) _* T. T每個硬件設備廠商都有自己的一套通信協議,比如發送或接收命令的定義,發送命令之后返回數據的定義等等。這應該是通信程序收發數據邏輯順序的依據。& D! I4 I A+ ?$ Q, z. T W: T ~1 h
2. 接受、發送數據的格式
1 I, d' q9 D. GMSComm接、發數據有兩種格式,在屬性InputMode里設置,一為comInputModeBinary,二進制;二為comInputModeText,為文本。) h/ j) _/ Z: f/ g0 ?
我之前就是數據格式弄混了,所以一直出現錯誤。例如,MSComm1.Output = "R00000016U"," "里面的就是文本形式的數據,如果InputMode里設置的是InputMode=comInputModeBinary,那么發送肯定有誤。
; C2 E' _4 ~" k2 V+ Z3. 清空緩存和清空接收數據存放的緩沖數組: N6 M2 ~ Y& r" _+ e5 u, L
每收發一次數據,就要清空緩存或是數據存放的緩沖數組。以免兩次收發的數據發生交疊,產生錯誤。$ X$ n+ x+ m5 S2 n
( C" r9 S( [( Y k5 x
c/ e" d/ F2 C6 L" [這三點是之前編程時最常犯的錯誤。希望能給各位需要編制串口通信程序的社友提個醒。4 a! V* J+ B# p" W. X( Q" t
9 W' C! v/ n3 D$ D1 I0 k1 F ~4 J" W
再次感謝各位社友的關注和幫助!& g6 V! Q. k% e8 P2 P+ h o# \
0 g' ?& {; d5 A# e' S" G
# m0 X8 c% {) S4 `
, M7 o+ ?: X: g8 l s
|