機(jī)械社區(qū)

 找回密碼
 注冊(cè)會(huì)員

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 5218|回復(fù): 10
打印 上一主題 下一主題

利用MSComm進(jìn)行串口通信小結(jié)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
1#
發(fā)表于 2011-4-17 20:39:15 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
之前發(fā)過(guò)幾個(gè)帖子,求助串口通信程序的編制,得到了無(wú)能前輩的無(wú)私幫助,還有我的兩位同學(xué)的大力支持。
5 z  B' l$ J- o$ K7 _現(xiàn)在程序基本完成,寫(xiě)個(gè)小結(jié),說(shuō)不上經(jīng)驗(yàn),畢竟我也是第一次寫(xiě)通信程序,算是教訓(xùn)吧。! _0 [4 Y( |0 U$ z
1. 通信協(xié)議的理解
7 u8 {6 P/ y  k: M# W0 n每個(gè)硬件設(shè)備廠商都有自己的一套通信協(xié)議,比如發(fā)送或接收命令的定義,發(fā)送命令之后返回?cái)?shù)據(jù)的定義等等。這應(yīng)該是通信程序收發(fā)數(shù)據(jù)邏輯順序的依據(jù)。2 G* D& V  V& J$ x* D
2. 接受、發(fā)送數(shù)據(jù)的格式
# w8 O4 j  G- U. `! }9 N# Z4 z4 j& _& z: BMSComm接、發(fā)數(shù)據(jù)有兩種格式,在屬性InputMode里設(shè)置,一為comInputModeBinary,二進(jìn)制;二為comInputModeText,為文本。; R2 ~; q3 o9 b7 |) w; h; f+ }
我之前就是數(shù)據(jù)格式弄混了,所以一直出現(xiàn)錯(cuò)誤。例如,MSComm1.Output = "R00000016U"," "里面的就是文本形式的數(shù)據(jù),如果InputMode里設(shè)置的是InputMode=comInputModeBinary,那么發(fā)送肯定有誤。
3 K6 P6 t7 u( r3 R3. 清空緩存和清空接收數(shù)據(jù)存放的緩沖數(shù)組- |7 d) ~" @5 ]& I, ^& s4 {
每收發(fā)一次數(shù)據(jù),就要清空緩存或是數(shù)據(jù)存放的緩沖數(shù)組。以免兩次收發(fā)的數(shù)據(jù)發(fā)生交疊,產(chǎn)生錯(cuò)誤。' h3 H+ S$ a) b7 W5 F# `& r8 F

( w$ Z* U& ~$ b- V& m
& T5 q' B. d3 U這三點(diǎn)是之前編程時(shí)最常犯的錯(cuò)誤。希望能給各位需要編制串口通信程序的社友提個(gè)醒。
) w1 ]8 E; @  U- m: `7 Z) _. e, y  Q5 m0 @+ o% f+ O
再次感謝各位社友的關(guān)注和幫助!
9 q5 z0 n- H9 P3 o( h# B
+ Q$ a$ b! D  _2 Z! S3 _2 k5 p8 n- e

% q3 M) ]  G+ R9 p

點(diǎn)評(píng)

可能給你幫了倒忙了……  發(fā)表于 2011-4-17 21:00
樓主這種精神值得學(xué)習(xí),解決了問(wèn)題上來(lái)還晾下,很多大俠一問(wèn)不知?dú)w處了。哈哈  發(fā)表于 2011-4-17 20:55

評(píng)分

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

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

2#
發(fā)表于 2011-4-17 21:24:35 | 只看該作者
請(qǐng)教樓主,這類(lèi)面向硬件的通訊程序大都用什么語(yǔ)言來(lái)寫(xiě)的?
3#
 樓主| 發(fā)表于 2011-4-17 21:41:38 | 只看該作者
回復(fù) metalstorm 的帖子
  h6 ?8 P. K2 v& J' h+ M9 @: Z
' Q" S: ^' G- J( k' q我做的是串口通訊,用API函數(shù),或是MSComm。3 S2 v9 q$ F0 Z5 g9 Z" M
通信程序C和VB都可以編。" m; A1 v- D' h; X; ?0 K

評(píng)分

參與人數(shù) 1威望 +1 收起 理由
metalstorm + 1

查看全部評(píng)分

4#
發(fā)表于 2011-4-18 18:33:30 | 只看該作者
回復(fù) robi 的帖子+ e% H( r. ?7 e( ?

. @  T0 T$ e9 {+ R你有用VC編的和PLC通訊的程序嗎?如有的話(huà)可發(fā)到我的郵箱:qw_mailbox@163.com。不勝感激
5#
 樓主| 發(fā)表于 2011-4-18 23:07:21 | 只看該作者
回復(fù) happqiwei 的帖子
# M4 A# f+ ?( q2 ?* h/ ^0 Z8 b
$ z! G$ f2 G) u4 p具體需要實(shí)現(xiàn)什么功能呢 不同功能的實(shí)現(xiàn)程序不一樣
* ?- {4 c- m! S4 L) F. w7 ^6 P
6#
發(fā)表于 2011-4-19 10:12:41 | 只看該作者
回復(fù) robi 的帖子1 U- v4 Z* F7 d& i
% p, j; G! Z" V; k
就是通過(guò)一個(gè)簡(jiǎn)單的界面對(duì)PLC輸入輸出或輔助寄存器按位進(jìn)行讀取和控制,以及讀取數(shù)據(jù)寄存器的數(shù)值。如果有三菱PLC和S7-200PLC的例子最好。主要是不知道該怎么做,想找個(gè)示例程序參考參考,謝謝!
7#
發(fā)表于 2011-4-19 14:00:31 | 只看該作者
謝謝樓樓主的分享,在此支持下~~
8#
 樓主| 發(fā)表于 2011-4-23 22:13:31 | 只看該作者
回復(fù) happqiwei 的帖子' j# C' d* A, `$ J+ |

) q) c2 _, ~5 c- D+ S6 c1 i0 u我現(xiàn)在正在做一個(gè)用VB監(jiān)控DB72的程序。做好了再拿到論壇來(lái)跟大家探討。. p; g5 A& B0 D- s% X
9#
 樓主| 發(fā)表于 2011-4-23 22:41:26 | 只看該作者
回復(fù) happqiwei 的帖子
* P$ o7 h8 G% T' [
! E8 E6 a$ H1 p9 T西門(mén)子PLC可以用FB2\FB3進(jìn)行DB的讀寫(xiě)?梢杂胹tep7軟件講數(shù)據(jù)放入數(shù)控系統(tǒng)變量R參數(shù)中,再通過(guò)VB或C,使用DDE,將數(shù)據(jù)讀取出來(lái)。  T" |# g0 N2 v% S8 u2 o; Q! F
當(dāng)然你說(shuō)讀取的是位數(shù)據(jù),用R參數(shù)可能不便。我現(xiàn)在準(zhǔn)備用VB直接讀,應(yīng)該不難的。) Z  [8 S* G3 }, [
10#
發(fā)表于 2011-4-25 12:51:47 | 只看該作者
有機(jī)會(huì)試試看,串口通訊現(xiàn)在仍然有活力呀。

本版積分規(guī)則

小黑屋|手機(jī)版|Archiver|機(jī)械社區(qū) ( 京ICP備10217105號(hào)-1,京ICP證050210號(hào),浙公網(wǎng)安備33038202004372號(hào) )

GMT+8, 2024-9-27 21:21 , Processed in 0.057463 second(s), 15 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回復(fù) 返回頂部 返回列表