|
之前發(fā)過幾個(gè)帖子,求助串口通信程序的編制,得到了無能前輩的無私幫助,還有我的兩位同學(xué)的大力支持。
. V, T2 M: A& }現(xiàn)在程序基本完成,寫個(gè)小結(jié),說不上經(jīng)驗(yàn),畢竟我也是第一次寫通信程序,算是教訓(xùn)吧。! T' [0 _) C$ x2 m! Y: w
1. 通信協(xié)議的理解
+ k( F8 E) I3 _每個(gè)硬件設(shè)備廠商都有自己的一套通信協(xié)議,比如發(fā)送或接收命令的定義,發(fā)送命令之后返回?cái)?shù)據(jù)的定義等等。這應(yīng)該是通信程序收發(fā)數(shù)據(jù)邏輯順序的依據(jù)。
. T2 N4 e3 E, ]6 B2. 接受、發(fā)送數(shù)據(jù)的格式% N& L' t. X3 N" f
MSComm接、發(fā)數(shù)據(jù)有兩種格式,在屬性InputMode里設(shè)置,一為comInputModeBinary,二進(jìn)制;二為comInputModeText,為文本。
" B+ [9 x/ Z3 {3 ?4 R我之前就是數(shù)據(jù)格式弄混了,所以一直出現(xiàn)錯(cuò)誤。例如,MSComm1.Output = "R00000016U"," "里面的就是文本形式的數(shù)據(jù),如果InputMode里設(shè)置的是InputMode=comInputModeBinary,那么發(fā)送肯定有誤。
. Z; V# w5 t. g: b: O2 ^: E3. 清空緩存和清空接收數(shù)據(jù)存放的緩沖數(shù)組5 q0 v+ \- k p8 j. C5 S3 L+ C0 G0 Y
每收發(fā)一次數(shù)據(jù),就要清空緩存或是數(shù)據(jù)存放的緩沖數(shù)組。以免兩次收發(fā)的數(shù)據(jù)發(fā)生交疊,產(chǎn)生錯(cuò)誤。
; C+ n; @7 A6 q/ d4 O, s9 x+ z! L0 u' a& o9 ?
; J9 p9 i2 V) `+ v; C3 Q
這三點(diǎn)是之前編程時(shí)最常犯的錯(cuò)誤。希望能給各位需要編制串口通信程序的社友提個(gè)醒。
) R7 }( c0 l7 }' X1 P5 b2 V8 w2 d4 O" [, j/ k8 s7 n
再次感謝各位社友的關(guān)注和幫助!
' P$ o6 Q0 i! j5 ^7 H9 j
4 \' w0 w* @5 W; i6 w. J, }8 v
- S; L4 s7 x0 I t) _ y" m5 M
' H t$ A5 R* L8 v/ ~2 [% |" l h |
評分
-
查看全部評分
|