|
之前發(fā)過幾個帖子,,求助串口通信程序的編制,得到了無能前輩的無私幫助,,還有我的兩位同學(xué)的大力支持,。
$ ~9 J- m8 q8 S8 Q& o* J; W u現(xiàn)在程序基本完成,,寫個小結(jié),說不上經(jīng)驗,,畢竟我也是第一次寫通信程序,,算是教訓(xùn)吧。
7 E9 A/ g8 o0 Y( N6 L+ j# w1. 通信協(xié)議的理解7 B, f8 V0 b# T$ l1 N/ Q
每個硬件設(shè)備廠商都有自己的一套通信協(xié)議,,比如發(fā)送或接收命令的定義,,發(fā)送命令之后返回數(shù)據(jù)的定義等等。這應(yīng)該是通信程序收發(fā)數(shù)據(jù)邏輯順序的依據(jù),。
0 S& C" \* z$ C, {4 I) X5 @2. 接受,、發(fā)送數(shù)據(jù)的格式2 J; k( [( `" g5 P* j$ P. G: `
MSComm接、發(fā)數(shù)據(jù)有兩種格式,,在屬性InputMode里設(shè)置,,一為comInputModeBinary,,二進制;二為comInputModeText,,為文本,。6 G( |9 S' ~0 d$ f0 \# f$ a3 m
我之前就是數(shù)據(jù)格式弄混了,所以一直出現(xiàn)錯誤,。例如,,MSComm1.Output = "R00000016U"," "里面的就是文本形式的數(shù)據(jù),,如果InputMode里設(shè)置的是InputMode=comInputModeBinary,,那么發(fā)送肯定有誤。' \. f+ A7 U! j B0 A \- \
3. 清空緩存和清空接收數(shù)據(jù)存放的緩沖數(shù)組 B& i d& s% o$ k, }5 m9 d
每收發(fā)一次數(shù)據(jù),,就要清空緩存或是數(shù)據(jù)存放的緩沖數(shù)組,。以免兩次收發(fā)的數(shù)據(jù)發(fā)生交疊,產(chǎn)生錯誤,。
/ }6 ?% ~5 N- ?
$ D) W% b T1 l3 w3 _* l3 U6 e$ x: X. F6 }
這三點是之前編程時最常犯的錯誤,。希望能給各位需要編制串口通信程序的社友提個醒。
0 m3 p- D$ ]9 Q! j4 l' s- V) B
9 f5 {$ k C6 E1 u& B8 C7 h+ @7 [再次感謝各位社友的關(guān)注和幫助,!& E) M' b6 A8 c# H+ `2 w
. R% o+ X6 e) \. B# `
+ x8 d1 _; ^7 z, }, y& {
% d/ F# n- m/ \' i: E2 C |
評分
-
查看全部評分
|