機械社區(qū)

標題: 利用MSComm進行串口通信小結 [打印本頁]

作者: robi    時間: 2011-4-17 20:39
標題: 利用MSComm進行串口通信小結
之前發(fā)過幾個帖子,求助串口通信程序的編制,得到了無能前輩的無私幫助,還有我的兩位同學的大力支持。) H5 r/ i. _; i
現(xiàn)在程序基本完成,寫個小結,說不上經(jīng)驗,畢竟我也是第一次寫通信程序,算是教訓吧。
6 \# B- \3 U" k$ O! v1. 通信協(xié)議的理解) M  g  Y4 V* X3 W6 f
每個硬件設備廠商都有自己的一套通信協(xié)議,比如發(fā)送或接收命令的定義,發(fā)送命令之后返回數(shù)據(jù)的定義等等。這應該是通信程序收發(fā)數(shù)據(jù)邏輯順序的依據(jù)。
* \0 H2 H, A% u2 s3 V6 N- i4 q# T2. 接受、發(fā)送數(shù)據(jù)的格式
" h8 e1 T* y( w9 RMSComm接、發(fā)數(shù)據(jù)有兩種格式,在屬性InputMode里設置,一為comInputModeBinary,二進制;二為comInputModeText,為文本。6 ?2 P; @0 w: b
我之前就是數(shù)據(jù)格式弄混了,所以一直出現(xiàn)錯誤。例如,MSComm1.Output = "R00000016U"," "里面的就是文本形式的數(shù)據(jù),如果InputMode里設置的是InputMode=comInputModeBinary,那么發(fā)送肯定有誤。& q( \( e. E" H' p8 m' A
3. 清空緩存和清空接收數(shù)據(jù)存放的緩沖數(shù)組
  D* y$ c% Q8 z: q每收發(fā)一次數(shù)據(jù),就要清空緩存或是數(shù)據(jù)存放的緩沖數(shù)組。以免兩次收發(fā)的數(shù)據(jù)發(fā)生交疊,產(chǎn)生錯誤。
( y2 o$ j& T. u6 d, x. Z. V
0 T7 J2 l, n& |+ {) X, M! a. P8 i3 _9 c' q
這三點是之前編程時最常犯的錯誤。希望能給各位需要編制串口通信程序的社友提個醒。
7 g  e2 q6 M& R% |* R7 @# I5 X' t7 t7 s/ j; a/ }
再次感謝各位社友的關注和幫助!; ?' J, I6 p% G" q2 V; Z0 y5 g

' s0 k; L6 |0 Y- T, Y
1 ?) N2 L2 e! ^6 y: S
7 ]& \  ^7 R: R
作者: metalstorm    時間: 2011-4-17 21:24
請教樓主,這類面向硬件的通訊程序大都用什么語言來寫的?
作者: robi    時間: 2011-4-17 21:41
回復 metalstorm 的帖子0 i4 k( N4 x0 s: F" p& B1 X
2 D( j+ E$ W  Y% E! w- l
我做的是串口通訊,用API函數(shù),或是MSComm。
: B/ j2 B# c1 ]1 B通信程序C和VB都可以編。8 ]5 O3 m, H1 K7 [" ]1 C0 |. A

作者: happqiwei    時間: 2011-4-18 18:33
回復 robi 的帖子
' p1 |$ d, i8 @: G: k3 Q( i/ }% U$ Q1 x) G7 h# l5 [
你有用VC編的和PLC通訊的程序嗎?如有的話可發(fā)到我的郵箱:qw_mailbox@163.com。不勝感激
作者: robi    時間: 2011-4-18 23:07
回復 happqiwei 的帖子) k: O' `% x3 f$ a# V. X+ ~" l6 p

& ]; Q, u. L0 P3 z具體需要實現(xiàn)什么功能呢 不同功能的實現(xiàn)程序不一樣. `6 g2 H& W; G" N6 v

作者: happqiwei    時間: 2011-4-19 10:12
回復 robi 的帖子
. c. \* @+ C8 ~  p4 G7 }6 t; b  k
% `& p. V- E+ j7 a2 ]就是通過一個簡單的界面對PLC輸入輸出或輔助寄存器按位進行讀取和控制,以及讀取數(shù)據(jù)寄存器的數(shù)值。如果有三菱PLC和S7-200PLC的例子最好。主要是不知道該怎么做,想找個示例程序參考參考,謝謝!
作者: 寒秋飄雨    時間: 2011-4-19 14:00
謝謝樓樓主的分享,在此支持下~~
作者: robi    時間: 2011-4-23 22:13
回復 happqiwei 的帖子
1 I" V* W  f% |& p6 J1 Q' b5 W  g) @' p" x) o
我現(xiàn)在正在做一個用VB監(jiān)控DB72的程序。做好了再拿到論壇來跟大家探討。0 R" U0 n5 f, z9 o* o

作者: robi    時間: 2011-4-23 22:41
回復 happqiwei 的帖子2 m; U9 w5 T; e0 f- U: f* U

# j- k: D+ Z  V5 ~  v% \西門子PLC可以用FB2\FB3進行DB的讀寫?梢杂胹tep7軟件講數(shù)據(jù)放入數(shù)控系統(tǒng)變量R參數(shù)中,再通過VB或C,使用DDE,將數(shù)據(jù)讀取出來。- Y7 w, a* r- y2 f( i+ [
當然你說讀取的是位數(shù)據(jù),用R參數(shù)可能不便。我現(xiàn)在準備用VB直接讀,應該不難的。/ Z3 T% ^- ~0 \% M7 i6 g

作者: wancj    時間: 2011-4-25 12:51
有機會試試看,串口通訊現(xiàn)在仍然有活力呀。
作者: robi    時間: 2011-4-25 17:25
回復 wancj 的帖子
1 }0 K8 _" W+ E/ o4 @
' Y" X) X. L9 {5 m( H8 |西門子840D早期的版本是沒有RS232串口的,后來用戶覺得很不方便,所以后期版本都有兩個RS232串口。




歡迎光臨 機械社區(qū) (http://mg7058.com/) Powered by Discuz! X3.4