|
之前發(fā)過幾個(gè)帖子,求助串口通信程序的編制,得到了無能前輩的無私幫助,,還有我的兩位同學(xué)的大力支持,。+ |- F6 L- i+ I5 \
現(xiàn)在程序基本完成,寫個(gè)小結(jié),,說不上經(jīng)驗(yàn),畢竟我也是第一次寫通信程序,,算是教訓(xùn)吧,。. u6 v' o& H0 a; s u7 B$ p( x
1. 通信協(xié)議的理解. z- X+ d* y1 C f
每個(gè)硬件設(shè)備廠商都有自己的一套通信協(xié)議,比如發(fā)送或接收命令的定義,,發(fā)送命令之后返回?cái)?shù)據(jù)的定義等等,。這應(yīng)該是通信程序收發(fā)數(shù)據(jù)邏輯順序的依據(jù),。; J o! @ `% @, T
2. 接受、發(fā)送數(shù)據(jù)的格式
2 v2 M% O. | uMSComm接,、發(fā)數(shù)據(jù)有兩種格式,,在屬性InputMode里設(shè)置,一為comInputModeBinary,,二進(jìn)制,;二為comInputModeText,為文本,。
- V9 S- B& G% i我之前就是數(shù)據(jù)格式弄混了,,所以一直出現(xiàn)錯(cuò)誤。例如,,MSComm1.Output = "R00000016U",," "里面的就是文本形式的數(shù)據(jù),如果InputMode里設(shè)置的是InputMode=comInputModeBinary,,那么發(fā)送肯定有誤,。" x2 e9 K7 A0 E& J4 i( c4 H, Y
3. 清空緩存和清空接收數(shù)據(jù)存放的緩沖數(shù)組9 U# ?! J% ]4 K+ Y* B
每收發(fā)一次數(shù)據(jù),就要清空緩存或是數(shù)據(jù)存放的緩沖數(shù)組,。以免兩次收發(fā)的數(shù)據(jù)發(fā)生交疊,,產(chǎn)生錯(cuò)誤。
- N" E5 w1 W2 n( K3 j6 S
$ [) W5 Q1 `% m2 }
+ `5 C$ j( a# ^3 U( c這三點(diǎn)是之前編程時(shí)最常犯的錯(cuò)誤,。希望能給各位需要編制串口通信程序的社友提個(gè)醒,。
+ E. h3 G! B7 h3 }
& {) A' h- e4 h2 X再次感謝各位社友的關(guān)注和幫助!
5 } `- l/ K. t' c8 V0 ]5 A! @3 F: j& b
/ F" @7 b, M" [/ c8 [; E) X4 U2 m @ H# L2 j. s; u: i+ _
|
評(píng)分
-
查看全部評(píng)分
|