之前發(fā)過幾個帖子,求助串口通信程序的編制,得到了無能前輩的無私幫助,還有我的兩位同學的大力支持。
, C- p4 G# R; ^. A4 ^' I* C3 f現(xiàn)在程序基本完成,寫個小結,說不上經驗,畢竟我也是第一次寫通信程序,算是教訓吧。( t( C$ c& k* I5 V
1. 通信協(xié)議的理解
9 i3 M" Y/ U" C' T" m0 ]( ], L每個硬件設備廠商都有自己的一套通信協(xié)議,比如發(fā)送或接收命令的定義,發(fā)送命令之后返回數據的定義等等。這應該是通信程序收發(fā)數據邏輯順序的依據。
+ y N! k1 u% i. Q2. 接受、發(fā)送數據的格式
1 h9 \' E. I7 |/ p' jMSComm接、發(fā)數據有兩種格式,在屬性InputMode里設置,一為comInputModeBinary,二進制;二為comInputModeText,為文本。" X& O0 f2 f, G! q3 B2 ]1 G
我之前就是數據格式弄混了,所以一直出現(xiàn)錯誤。例如,MSComm1.Output = "R00000016U"," "里面的就是文本形式的數據,如果InputMode里設置的是InputMode=comInputModeBinary,那么發(fā)送肯定有誤。0 [( |: o3 G* U- g0 w7 I: ]! B; J
3. 清空緩存和清空接收數據存放的緩沖數組
" X, M6 o0 c3 B6 P* P5 ~0 A每收發(fā)一次數據,就要清空緩存或是數據存放的緩沖數組。以免兩次收發(fā)的數據發(fā)生交疊,產生錯誤。* |; L2 ] V7 t
* E. U2 h% @0 j7 u4 E# E, g2 n
) ^% G! N" G6 d這三點是之前編程時最常犯的錯誤。希望能給各位需要編制串口通信程序的社友提個醒。) h4 t$ }$ T2 X+ w# m7 H
# Z/ { i% s3 U4 y7 O4 u再次感謝各位社友的關注和幫助!" K( p& z/ P& H5 ]* z0 g, K" B* C
s/ H3 F# `# t z& j7 \" m8 ^: Y4 a7 _% S2 ?
0 v v5 l6 }# B2 ]+ N" b, h
|