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

    利用VB6.0中MSComm控件實(shí)現(xiàn)串口通信

    2016-07-06 22:50:24安明浩石磊
    科技尚品 2016年6期
    關(guān)鍵詞:串口通信實(shí)現(xiàn)

    安明浩 石磊

    摘 要:使用VB6.0中的MSComm通信控件的屬性和事件進(jìn)行編程操作,實(shí)現(xiàn)上位機(jī)與儀器的RS232C串口通信。

    關(guān)鍵詞:MSComm控件;實(shí)現(xiàn);串口通信

    1 程序要求

    現(xiàn)有檢測(cè)儀器一臺(tái),使用RS232C串口與計(jì)算機(jī)進(jìn)行通信。該儀器輸出為RS-232C標(biāo)準(zhǔn)接口,波特率為300~9600,無奇偶校驗(yàn),8個(gè)數(shù)據(jù)位,1個(gè)停止位。所有命令均發(fā)送8位16進(jìn)制數(shù)值。儀器在按下“檢測(cè)開始”按鈕后,不需要計(jì)算機(jī)進(jìn)行任何操作,會(huì)主動(dòng)發(fā)送代表儀器當(dāng)前狀態(tài)及檢測(cè)數(shù)值的8位16進(jìn)制數(shù),要求上位機(jī)通過RS232C串口與儀器進(jìn)行通信,提示用戶當(dāng)前的儀器工作狀態(tài)并將檢測(cè)的結(jié)果數(shù)值顯示在上位機(jī)上。

    儀器RS232C通信協(xié)議。

    例:

    延時(shí)發(fā)送[機(jī)器碼][命令號(hào)0x33][延時(shí)命令高0x00][延時(shí)命令低0x01][延時(shí)時(shí)間高8位][延時(shí)時(shí)間低8位][CRC校驗(yàn)低8位][CRC校驗(yàn)高8位]

    機(jī)器碼:0x11

    編寫VB6.0程序來訪問串口,讀取檢測(cè)儀器上顯示的狀態(tài)及數(shù)據(jù)。

    2 程序編寫

    (1)首先進(jìn)行VB6.0通信控件的添加。在VB6.0的“工程”菜單下面選擇“部件”子菜單,在控件欄中勾選“Microsoft comm control6.0”就可以在工具箱里面看到該件,將該控件添加到窗體上即可。

    (2)在測(cè)試窗體上添加一通信控件命名為“MSComm1”,并在窗體的Load事件中設(shè)置串口并開啟串口。

    With MSComm1

    .CommPort = 1

    .Settings=”9600,N,8,1”

    .InputMode= comInputModeBinary‘設(shè)置接受數(shù)據(jù)的類型是二進(jìn)制類型數(shù)據(jù)

    .InputLen=0 ‘讀取接收緩沖區(qū)中全部的內(nèi)容

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

    .OutBufferCount=0 ‘清空發(fā)送緩沖區(qū)

    .SThreshold=0 ‘一旦發(fā)送數(shù)據(jù)就觸發(fā)OnComm()事件來檢測(cè)是否返回?cái)?shù)據(jù)

    .RThreshold=1 ‘接收到1個(gè)字節(jié)數(shù)據(jù)就立即觸發(fā)OnComm()事件

    .CommPort=1 ‘使用第一個(gè)串口

    .PortOpen=True ‘打開串口

    End With

    需要注意的是,要在使用完串口后將其釋放,所以在窗體的Unload事件中將串口資源釋放。

    With MSComm1

    .PortOpen = False

    End With

    (3)雙擊窗體上的MSComm1控件,進(jìn)入控件的MSComm1_OnComm事件,并添加下列代碼。

    Private Sub MSComm1_OnComm() 定義接收16進(jìn)制數(shù)值的數(shù)組

    Dim Receiveing()As Byte,Received(20)As Byte

    Dim Lenth As Integer,i As Integer‘定義中間變量

    Static n As Long

    If MSComm1.CommEvent = comEvReceive Then ‘儀器有應(yīng)答

    Receiveing = MSComm1.Input ‘讀取報(bào)文

    Lenth = UBound(Receiveing) ‘收到lenth個(gè)字符

    For i = 0 To Lenth

    Received(n + i)= Receiveing(i)‘將后續(xù)讀到的報(bào)文疊加到數(shù)組中

    Next i

    n = n + Lenth + 1 ‘計(jì)算總長(zhǎng)度

    If n >= 8 Then ‘收到了全部的報(bào)文

    RecievieData = 1 ‘接收?qǐng)?bào)文長(zhǎng)度正確標(biāo)記位

    XvgData = Received ‘存放接收的報(bào)文

    End if

    End if

    End sub

    上述添加的代碼用于讀取從儀器發(fā)來的二進(jìn)制數(shù)值,并存儲(chǔ)到XvgData 數(shù)組中,等待使用。

    3 結(jié)束語

    以上程序?yàn)檎f明VB6.0利用MSComm控件的通信過程,僅給出了通信部分的程序,其他部分,如CRC校驗(yàn)、狀態(tài)如何顯示、數(shù)值如何處理及存儲(chǔ)部分因?yàn)椴皇且f明的主要部分所以未做進(jìn)一步的說明。

    利用VB6.0的MSComm控件可以快速開發(fā)出串口通信程序,從而大大提高編程的效率。

    參考文獻(xiàn)

    [1]范逸之,陳立元.Visual Basic與RS-232串行通信控制[M].中國(guó)青年出版社,2002.

    (作者單位:加野麥克斯儀器(沈陽)有限公司)

    猜你喜歡
    串口通信實(shí)現(xiàn)
    基于Qt和Flash的嵌入式Linux軟件架構(gòu)設(shè)計(jì)
    串口通信在智能家居監(jiān)控系統(tǒng)中的應(yīng)用
    信息系統(tǒng)安全評(píng)價(jià)系統(tǒng)設(shè)計(jì)及實(shí)現(xiàn)
    高校聲像檔案數(shù)字化管理的實(shí)現(xiàn)路徑
    辦公室人員尚需制定個(gè)人發(fā)展規(guī)劃
    蘇州信息學(xué)院教務(wù)管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
    如何實(shí)現(xiàn)人企合一
    淺析鐵路通信傳輸?shù)臉?gòu)成及實(shí)現(xiàn)方法
    基于OpenCV的室內(nèi)照明智能控制系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
    科技視界(2016年13期)2016-06-13 22:01:19
    基于MSP430單片機(jī)的窄帶無線數(shù)據(jù)傳輸模塊的設(shè)計(jì)
    长乐市| 建阳市| 丹巴县| 乐都县| 阳新县| 镇沅| 陕西省| 文水县| 简阳市| 柞水县| 威信县| 鹿泉市| 关岭| 随州市| 克拉玛依市| 武强县| 翼城县| 沾化县| 清水县| 即墨市| 天水市| 耒阳市| 冷水江市| 临安市| 宝兴县| 尚志市| 玉溪市| 清远市| 崇明县| 怀宁县| 犍为县| 冀州市| 遂平县| 乡宁县| 宜城市| 尼玛县| 辽中县| 赣榆县| 麦盖提县| 洮南市| 江西省|