|
之前發(fā)過幾個帖子,求助串口通信程序的編制,得到了無能前輩的無私幫助,還有我的兩位同學(xué)的大力支持。, X6 v1 u( e! J9 O) m3 y* r' X" ]
現(xiàn)在程序基本完成,寫個小結(jié),說不上經(jīng)驗,畢竟我也是第一次寫通信程序,算是教訓(xùn)吧。
: c0 `9 z- Y! K% ~5 ^3 r, \* Z1. 通信協(xié)議的理解+ W t ]% y: d- y# s* v6 k! ]
每個硬件設(shè)備廠商都有自己的一套通信協(xié)議,比如發(fā)送或接收命令的定義,發(fā)送命令之后返回數(shù)據(jù)的定義等等。這應(yīng)該是通信程序收發(fā)數(shù)據(jù)邏輯順序的依據(jù)。% f. Y+ ^# h' V9 J) G" H X! a
2. 接受、發(fā)送數(shù)據(jù)的格式
( ?' H* k1 |; s' X+ G0 _MSComm接、發(fā)數(shù)據(jù)有兩種格式,在屬性InputMode里設(shè)置,一為comInputModeBinary,二進制;二為comInputModeText,為文本。
: u( Q5 a9 W' d( b我之前就是數(shù)據(jù)格式弄混了,所以一直出現(xiàn)錯誤。例如,MSComm1.Output = "R00000016U"," "里面的就是文本形式的數(shù)據(jù),如果InputMode里設(shè)置的是InputMode=comInputModeBinary,那么發(fā)送肯定有誤。
7 B: X$ M8 F' R5 B$ h o$ G3. 清空緩存和清空接收數(shù)據(jù)存放的緩沖數(shù)組
# @# _7 H: ~( f! I+ x9 W, p1 A" J每收發(fā)一次數(shù)據(jù),就要清空緩存或是數(shù)據(jù)存放的緩沖數(shù)組。以免兩次收發(fā)的數(shù)據(jù)發(fā)生交疊,產(chǎn)生錯誤。: |; _% f9 k8 o
9 O. [6 Z. y; j+ Y& x$ T( I' g
+ A8 p/ w4 ^+ G ?1 p- r
這三點是之前編程時最常犯的錯誤。希望能給各位需要編制串口通信程序的社友提個醒。1 ~0 K9 r2 g% c' o0 W
7 J w* O/ B' h6 d/ K% v# y, F% e$ o
再次感謝各位社友的關(guān)注和幫助! ^& n2 q) Q- Y: Q4 l& ]
9 k7 p1 F# V; m" n' H0 ~% V' j) m
$ j! f$ }8 b3 ^8 P0 s0 T+ E- m) W0 e
h O$ I. q; m, g' k( w& C |
評分
-
查看全部評分
|