• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    基于VB的RS-485 串口通信方法

    2016-08-09 07:23王香菊范興亮鄔聰明
    中國新通信 2016年11期
    關鍵詞:傳輸速率串口控件

    王香菊 范興亮 鄔聰明

    【摘要】 在VB(Visual Basic)語言編程中,使用串口通信MSComm控件,可以方便地實現(xiàn)串口通信編程。RS-485總線接口是一種常用的串口總線,具有連接方便、抗干擾性能好、傳輸距離遠等優(yōu)點。本文介紹了在VB環(huán)境下,使用微軟公司提供的MSComm控件實現(xiàn)RS-485串口通信的方法。

    【關鍵字】 MSComm控件 VB 串行接口 RS-485

    引言

    在工業(yè)控制領域,工控機經(jīng)常需要與智能儀器或其它設備通過串口進行通信。串口通信方便易行,應用廣泛。Visual Basic(簡稱VB)是Windows系統(tǒng)開發(fā)的主要語言之一,以其高效、簡單易學及功能強大的特點被廣大程序設計人員所青睞。VB支持面向對象的程序設計,具有結構化的事件驅動編程模式并可以使用功能強大的控件。

    一、串口通信標準

    串行接口(Serial Interface)是指數(shù)據(jù)按位順序傳送,其特點是通信線路簡單,只要一對傳輸線就可以實現(xiàn)雙向通信,并可以利用電話線,從而降低了成本,適用于遠距離通信,但傳送速度較慢。串行接口按電氣標準及協(xié)議來分包括RS-232-C、RS-422、RS485等。

    RS-232也稱標準串口,最常用的一種串行通訊接口。RS-232是為點對點(即只用一對收、發(fā)設備)通訊而設計的,適合本地設備之間的通信。其傳送距離最大為約15米,最高速率為20kb/s。RS-422標準是一系列的規(guī)定采用4線,全雙工,差分傳輸,多點通信的數(shù)據(jù)傳輸協(xié)議。RS-422支持點對多的雙向通信,其最大傳輸距離為1219米,最大傳輸速率為10Mb/s。在100kb/s速率以下,才可能達到最大傳輸距離。只有在很短的距離下才能獲得最高速率傳輸。一般100米長的雙絞線上所能獲得的最大傳輸速率僅為1Mb/s。

    RS-485是從RS-422基礎上發(fā)展而來的,所以RS-485許多電氣規(guī)定與RS-422相仿。RS-485可以采用二線與四線方式,二線制可實現(xiàn)真正的多點雙向通信,而采用四線連接時,能實現(xiàn)點對多的通信,它比RS-422有改進,無論四線還是二線連接方式總線上可多接到32個設備。RS-485與RS-422一樣,其最大傳輸距離約為1219米,最大傳輸速率為10Mb/s,但只有在很短的距離下才能獲得最高速率傳輸。PC機默認的串口是RS-232標準,但RS-485總線接口具有網(wǎng)絡連接方便、抗干擾性能好、傳輸距離遠等優(yōu)點,它彌補了RS-232 通訊距離短,不能進行多臺設備同時互聯(lián)的缺點。

    二、MSComm 控件介紹

    MSComm控件通過串行端口發(fā)送和接收數(shù)據(jù),為應用程序提供串行通訊功能。使用MSComm控件時,程序員不必花時間去了解復雜的API函數(shù),而且多個平臺均可使用。Microsoft Communications Control(以下簡稱MSComm)是Microsoft公司提供的用于實現(xiàn)Windows下串行通信的ActiveX控件。它提供了兩種實現(xiàn)串口通信的方法:事件驅動方法和查詢法。

    VB中的MSComm控件提供了功能完善的串口數(shù)據(jù)的發(fā)送和接收功能。 Mscomm控件通信功能的具體實現(xiàn),實際上是調用了API函數(shù)。對于VB程序開發(fā)者只需知道Mscomm控件的屬性和用法即可以實現(xiàn)串口的操作。Mscomm控件的主要屬性和用法如下表1。

    三、VB中使用MSComm控件實現(xiàn)串口通信的過程

    在工程應用編程過程中,使用工控機作為上位機,通過串口對自己的下位機進行控制。在控制界面中首先插入Mscomm控件,其名稱可以通過它的屬性進行設置,如不設置默認為Mscomm1。編程代碼如下:

    (1)串口初始化

    MSComm1.CommPort = COM1 ‘采用COM1端口

    MSComm1.Settings = “9600,n,8,1” ‘對串口通信設置

    MSComm1.InputMode = 1 ‘采用二進傳輸

    MSComm1.InBufferCount = 0 ‘清空接受緩沖區(qū)

    MSComm1.OutBufferCount = 0 ‘清空傳輸緩沖區(qū)

    MSComm1.RThreshold = 9 ‘接收緩沖區(qū)收到9字符都會使控件產(chǎn)生 OnComm 事件

    MSComm1.InBufferSize = InBufferSize ‘接收緩沖區(qū)默認為1024個字節(jié)MSComm1.OutBufferSize = OutBufferSize ‘發(fā)送緩沖區(qū)默認為512個字節(jié)

    MSComm1.PortOpen = True ‘打開端口

    (2)串口發(fā)送數(shù)據(jù)

    Dim send_data(0 to 1) As Byte

    MSComm1.RTSEnable = True

    MSComm1.DTREnable = True

    send_data(0)=&HA1;

    send_data(1)=&HB1;

    MSComm1.Output=send_data

    MSComm1.OutBufferCount = 0

    (3)串口接收數(shù)據(jù)

    Dim dd(100) As Byte

    Dim buffer As Variant

    Private Sub MSComm1_OnComm()

    Select Case MSComm1.CommEvent

    Case 2

    MSComm1.InputLen = 9 ‘一次從接收緩沖區(qū)讀取的字節(jié)數(shù)

    buffer = MSComm1.Input

    for i = 0 To UBound(buffer)

    dd(i) = buffer(i)

    next i

    ……對所收到的數(shù)據(jù)處理成所需的數(shù)據(jù)類型

    End Select

    MSComm1.InBufferCount = 0

    End Sub

    (4)關閉串口

    MSComm1.PortOpen=False ‘關閉通信口

    在程序設計過程中,將上述程序代碼添加到設計好的程序界面中就可以實現(xiàn)串口通信,可以用定時器或線程對串口的收發(fā)數(shù)據(jù)進行靈活控制。在控制系統(tǒng)設計中,一般上位機(工控機)串口默認只有RS-232口,要實現(xiàn)RS-485串口通信,需要在硬件電路的連接中使用”RS-232轉RS-485”轉換器。

    四、結束語

    在VB集成開發(fā)環(huán)境中,利用MSComm控件實現(xiàn)RS-485串口通信,通過軟件的實際運行效果證明這種編程方法簡單,通信可靠。對于許多編程者來說,MSComm控件使用方便,容易掌握,利用此控件可以輕松地實現(xiàn)串口通信。

    參 考 文 獻

    [1] 錢雪忠. 新編Visual Basic程序設計教程,北京:機械工業(yè)出版社, 2007.5

    [2]劉長征,張榮華.Visual v++ 串口通信及測控應用實例詳解[M].北京:電子工業(yè)出版社,2014.1

    猜你喜歡
    傳輸速率串口控件
    使用“填表單”微信小程序 統(tǒng)計信息很方便
    基于.net的用戶定義驗證控件的應用分析
    三星利用5G毫米波 實現(xiàn)創(chuàng)紀錄傳輸速率
    MCS—51單片機中的多串口通訊技術的應用
    夏季濱海濕地互花米草植物甲烷傳輸研究
    數(shù)據(jù)傳輸速率
    全國計算機等級考試機房準備工作探討
    微機串口的測試診斷
    利用VF6.0的Timer控件實現(xiàn)動畫效果
    Spreadsheet控件在Delphi數(shù)據(jù)庫系統(tǒng)中的編程與應用
    云阳县| 邢台市| 璧山县| 安化县| 邓州市| 额尔古纳市| 辰溪县| 确山县| 电白县| 晋中市| 东明县| 左贡县| 手机| 通江县| 潮州市| 韶山市| 宝兴县| 繁昌县| 宁津县| 禹城市| 乐都县| 定襄县| 永仁县| 台州市| 莫力| 晋宁县| 阿拉善盟| 图木舒克市| 开江县| 黄石市| 土默特左旗| 密云县| 五峰| 星子县| 叙永县| 环江| 惠安县| 汽车| 丰镇市| 辉南县| 宜阳县|