機械社區(qū)

 找回密碼
 注冊會員

QQ登錄

只需一步,快速開始

搜索
查看: 5319|回復: 10
打印 上一主題 下一主題

利用MSComm進行串口通信小結

[復制鏈接]
跳轉到指定樓層
1#
發(fā)表于 2011-4-17 20:39:15 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
之前發(fā)過幾個帖子,求助串口通信程序的編制,得到了無能前輩的無私幫助,還有我的兩位同學的大力支持。, X6 v1 u( e! J9 O) m3 y* r' X" ]
現(xiàn)在程序基本完成,寫個小結,說不上經驗,畢竟我也是第一次寫通信程序,算是教訓吧。
: c0 `9 z- Y! K% ~5 ^3 r, \* Z1. 通信協(xié)議的理解+ W  t  ]% y: d- y# s* v6 k! ]
每個硬件設備廠商都有自己的一套通信協(xié)議,比如發(fā)送或接收命令的定義,發(fā)送命令之后返回數據的定義等等。這應該是通信程序收發(fā)數據邏輯順序的依據。% f. Y+ ^# h' V9 J) G" H  X! a
2. 接受、發(fā)送數據的格式
( ?' H* k1 |; s' X+ G0 _MSComm接、發(fā)數據有兩種格式,在屬性InputMode里設置,一為comInputModeBinary,二進制;二為comInputModeText,為文本。
: u( Q5 a9 W' d( b我之前就是數據格式弄混了,所以一直出現(xiàn)錯誤。例如,MSComm1.Output = "R00000016U"," "里面的就是文本形式的數據,如果InputMode里設置的是InputMode=comInputModeBinary,那么發(fā)送肯定有誤。
7 B: X$ M8 F' R5 B$ h  o$ G3. 清空緩存和清空接收數據存放的緩沖數組
# @# _7 H: ~( f! I+ x9 W, p1 A" J每收發(fā)一次數據,就要清空緩存或是數據存放的緩沖數組。以免兩次收發(fā)的數據發(fā)生交疊,產生錯誤。: |; _% 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
再次感謝各位社友的關注和幫助!  ^& 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

點評

可能給你幫了倒忙了……  發(fā)表于 2011-4-17 21:00
樓主這種精神值得學習,解決了問題上來還晾下,很多大俠一問不知歸處了。哈哈  發(fā)表于 2011-4-17 20:55

評分

參與人數 2威望 +11 收起 理由
metalstorm + 1
舟航 + 10

查看全部評分

回復

使用道具 舉報

2#
發(fā)表于 2011-4-17 21:24:35 | 只看該作者
請教樓主,這類面向硬件的通訊程序大都用什么語言來寫的?
回復 支持 反對

使用道具 舉報

3#
 樓主| 發(fā)表于 2011-4-17 21:41:38 | 只看該作者
回復 metalstorm 的帖子; U' `6 W$ l- ]" F! W8 Z' H
# [! P$ O- T2 S) S7 x
我做的是串口通訊,用API函數,或是MSComm。
" r( Q7 X% H" A  ]4 F通信程序C和VB都可以編。% C% ?2 f8 O5 {2 `! r

評分

參與人數 1威望 +1 收起 理由
metalstorm + 1

查看全部評分

回復 支持 反對

使用道具 舉報

4#
發(fā)表于 2011-4-18 18:33:30 | 只看該作者
回復 robi 的帖子
" L, z! L1 X3 w4 U" @+ A4 Y& u9 K0 i+ W# m
你有用VC編的和PLC通訊的程序嗎?如有的話可發(fā)到我的郵箱:qw_mailbox@163.com。不勝感激
回復 支持 反對

使用道具 舉報

5#
 樓主| 發(fā)表于 2011-4-18 23:07:21 | 只看該作者
回復 happqiwei 的帖子
9 Y3 o' n% O' f6 i# q, r
( z$ r1 O7 m& W. J  F, y具體需要實現(xiàn)什么功能呢 不同功能的實現(xiàn)程序不一樣  ^& X+ y- t  a9 d7 @3 Q8 ~- ^
回復 支持 反對

使用道具 舉報

6#
發(fā)表于 2011-4-19 10:12:41 | 只看該作者
回復 robi 的帖子
! [( \1 n' ?& D4 v
4 q% `8 u' N0 U( k. E! v就是通過一個簡單的界面對PLC輸入輸出或輔助寄存器按位進行讀取和控制,以及讀取數據寄存器的數值。如果有三菱PLC和S7-200PLC的例子最好。主要是不知道該怎么做,想找個示例程序參考參考,謝謝!
回復 支持 反對

使用道具 舉報

7#
發(fā)表于 2011-4-19 14:00:31 | 只看該作者
謝謝樓樓主的分享,在此支持下~~
回復 支持 反對

使用道具 舉報

8#
 樓主| 發(fā)表于 2011-4-23 22:13:31 | 只看該作者
回復 happqiwei 的帖子
  T( C2 |% E: [  H/ D5 O- k6 F5 d6 U* ~
我現(xiàn)在正在做一個用VB監(jiān)控DB72的程序。做好了再拿到論壇來跟大家探討。; o8 u1 ]3 s' g4 `' G
回復 支持 反對

使用道具 舉報

9#
 樓主| 發(fā)表于 2011-4-23 22:41:26 | 只看該作者
回復 happqiwei 的帖子: w  l# h1 j5 \& s! N1 L2 g

: x5 g9 w' ], K# D/ ]1 j' o西門子PLC可以用FB2\FB3進行DB的讀寫?梢杂胹tep7軟件講數據放入數控系統(tǒng)變量R參數中,再通過VB或C,使用DDE,將數據讀取出來。
! @* l( g6 V" Y3 ~4 [! n% e當然你說讀取的是位數據,用R參數可能不便。我現(xiàn)在準備用VB直接讀,應該不難的。
5 o) ?1 s# p+ x) x. T2 }
回復 支持 反對

使用道具 舉報

10#
發(fā)表于 2011-4-25 12:51:47 | 只看該作者
有機會試試看,串口通訊現(xiàn)在仍然有活力呀。
回復 支持 反對

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 注冊會員

本版積分規(guī)則

小黑屋|手機版|Archiver|機械社區(qū) ( 京ICP備10217105號-1,京ICP證050210號,浙公網安備33038202004372號 )

GMT+8, 2024-11-20 19:25 , Processed in 0.054140 second(s), 15 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回復 返回頂部 返回列表