<nobr id="zkazv"></nobr>

      午夜精品一区二区三区成人,中文字幕av一区二区,亚洲AVAV天堂AV在线网阿V,肥臀浪妇太爽了快点再快点,国产网友愉拍精品视频手机,国产精品无码a∨麻豆,久久中文字幕一区二区,a级国产乱理伦片在线观看al

      Visual C++在異步串行通信控制中的應用

      邱紅兵 韓峰

        摘要:系統介紹了Visual C++實現異步串行通信的基本原理,分別講述了用Windows函數庫API函數實現和C運行時庫的實現方法,以及在控制系統中的編程應用實例。
        關鍵詞:控制系統;串行通信;Visual C++應用
        中圖分類號:TP311.11     文獻標識碼:A

      The Visual C++ Application in Asynchronous Serial Communication Control

      QIU Hong-bing   HAN feng

        Abstract: The paper is focus on the principle of asynchronous serial communication by Visual C++, and tells of their implement methods using API function in Windows function warehouse and C function singly. The paper also adduces program application sample in control system.
        Key Words: control system;serial communication;Visual C++ application

      1 引言
        Visual C++是建立在Window 95和Window NT 32位程序上的可視化編程環境,對于控制系統的可視化開發提供了極大的便利,但是對于計算機控制系統中數據采集、控制,用Visual C++實現的介紹卻很少;诖,介紹Visual C++在測控系統應用中的基本原理及應用,其中異步串行通信是關鍵。其基本構成是:下位機(單片機系統)完成信號檢測、A/D轉換和簡單的控制功能,通過系統總線(如RS-232C)與上位機(PC機)相連,進行監測、控制,形成主從式結構。

      2 工作原理
        通過傳感器檢測得到被控信號及相關信號,經過放大、濾波處理形成有效信號,通過A/D轉換形成數字信號,輸入到單片機系統進行處理。其中單片機系統完成相應算法或控制功能;PC機主要完成監視、控制其下面的單片機系統,進行集中管理。它們之間的通信可通過RS-232C標準總線進行異步傳輸。系統結構如圖1所示。

      16-1.gif (6133 bytes)

      圖1 控制系統網絡結構圖

      3 Visual C++實現串行通信
        Visual C++實現串行通信有幾種方式可供選擇,如利用計算機上的標準串行口進行,或自制專用卡插入工控機的PCI總線的ISA擴展槽等。下面主要論述利用計算機上的標準串行口進行串行通信,可分為利用Windows函數庫API函數和利用C運行時庫實現。其中API函數主要以創建資源的形式進行串行通信,C運行時庫采用類似C的方式進行。
      3.1 API函數實現
        Windows應用程序要與標準串口通信,Windows函數庫中提供了24個低級函數,這些函數可與外部設備的通信提供了基本的工具,文件輸入和文件輸出函數為通信資源句柄的打開、關閉以及執行讀寫操作提供了基本的接口,Win32 API也包含一系列訪問通信資源的通信函數,具體工作過程如下:首先打開一個通信資源句柄CreateFile(),接著進行串行通信資源的配置(包括波特率、奇偶校驗、停止位和數據位等信息),通過SetCommState()、GetCommState()進行修改和查詢完成初始化設置;串行通信資源的讀寫通過ReadFile()、WriteFile()來完成收發數據,監視串行通信資源某些可能發生的事件可通過WaitCommEvent()來完成,向與某通信資源相關的設備驅動程序發送控制命令,使驅動程序執行特定任務。對于具體參數設置可參閱有關書籍。[1]
      3.2 C運行時庫實現
        對于利用C運行時庫實現串行通信在此將詳細進行討論。它與硬件密切相關,其核心器件是通用異步接收發送器(簡稱UART),并在機箱后部外引一個25腳(或15腳、9腳)的D型連接器作為數據終端設備(DTE)一側,它通過異步通信電纜(RS-232)與另一側數據通信設備(DCE)(MODEM或其它通信設備)相連。
      3.2.1 RS-232異步串行口連接
        異步串行通信對應用接口極其敏感,常用的RS-232C接口有MODEM接口標準連接和零MODEM的非標準連接,但在實際應用中,并非需要全部控制信號線,而且在某種場合下,還允許采取若干種非標準的連接方式,如圖2所示。其中圖2a主要適用于長距離串行通信,而圖2b適用于短距離異步通信,無需MODEM這類DCE設備介入。

      16-2.gif (9253 bytes)

      圖2 RS-232接口連接

      3.2.2 異步串行通信原理
        利用C進行異步通信編程,其實是對UART內部寄存器的讀出或寫入操作。VC可利用-inp()/-outp()函數對其進行編程,它們的端口地址列于表1。

      表1 UART內部寄存器端口分配

      端口地址** 指令 條件* 寄存器名稱及作用
      0x3f8(0x2f8)
      0x3f8(0x2f8)
      0x3f8(0x2f8)
      0x3f9(0x2f9)
      0x3f9(0x2f9)
      0x3fa(0x2fa)
      0x3fb(0x2fb)
      0x3fc(0x2fc)
      0x3fd(0x2fd)
      0x3fe(0x2fe)
      _outp
      _inp
      _outp
      _outp
      _outp
      _inp
      _outp
      _outp
      _inp
      _inp
      DLAB=0
      DLAB=0
      DLAB=1
      DLAB=1
      DLAB=0




      寫入發送器保持寄存器
      讀出接收器數據寄存器
      寫入波特率因子(LSB)
      寫入波特率因子(MSB)
      寫入中斷允許寄存器
      讀出中斷標識寄存器
      寫入線路控制寄存器
      寫入MODEM控制寄存器
      讀出線路狀態寄存器
      讀出MODEM狀態寄存器

        * DLAB指線路控制器 D7位;
        ** 括號前指COM1,括號內指COM2

        下面,從編程應用的順序考慮,對表1各個寄存器的作用進行說明(端口地址以COM1為例)。
        首先確定異步通信的數據格式,包括波特率因子的鎖存,奇偶校驗位的設定,停止位數和數據位數的確定,各位定義如下:D7置1對除數鎖存,D6置1允許間斷,D5D4D3奇偶位,D2停止位數,D1D0數據位數。
        接著確定通信雙方傳輸波特率,確定波特率的方法是在通信前,將波特率因子(16位)分兩次寫入到波特率因子寄存器,波特率與波特率因子的關系舉例:如波特率為75,其波特率因子為0x06(MSB),0x00(LSB);波特率為1200,其波特率因子為0x00(MSB),0x60(LSB);1800對應0x00(LSB),0x40(MSB);2400對應0x00(LSB),0x30(MSB);3600對應0x00(LSB),0x20(MSB);9600對應0x00(LSB),0x0C(MSB)等等。
        緊接著是讀取線路狀態判斷,適用于URAT的查詢I/O,若采取中斷I/O,不需判斷。對URAT采取查詢I/O方式,首先要讀取線路狀態,以判斷是否就緒并用于發送或接收。存在UART內部狀態的線路狀態寄存器的各位定義如下:D7恒0,D6發送移位寄存器為空,D5發送保持寄存器為空,D4 接收到間斷條件,D3接收到幀格式錯,D2接收到奇偶校驗錯,D1接收到超越錯,D0接收器數據就緒。
        然后進行判斷。確定芯片操作方式和控制MODEM可通過對MODEM控制寄存器的寫入操作完成。[2]
      3.2.3 應用實例
        VC對異步串行通信編程應用實例。主控計算機主要完成對其下的單片機系統的數據收集、處理控制和報警功能?刂葡到y結構圖如圖1所示。對于控制軟件的串行通信有以下部分組成:串行口的初始化、數據收集處理和控制報警等部分(以串行口COM1為例,端口基址0x3f8)。
        初始化串行通信口一般做以下幾件事:確定數據傳輸幀格式(包括數據位長度、停止位長度及奇偶有無和類型選擇)、確定傳輸波特率(與數據信號傳輸率同值)以及確定UART操作方式。操作方式指正常通信或循環反饋用于診斷,是程序查詢I/O還是通信中斷I/O。
      void CCommu::Init() {
        _outp(0x3fb,0x80);//設置線路控制寄存器置DLAB=1進行設定波特率
        _outp(0x3f8,0x30);//寫入波特率因子,波特率為2400
        _outp(0x3f9,0x00);
        _outp(0x3fb,0x03);//設置線路控制寄存器置DLAB=0確定數據幀傳輸格式
        _outp(0x3f9,0x00);//設置中斷允許寄存器采用查詢I/O
        }
        數據收集處理主要完成數據接收發送。在收發過程中必須檢測MODEM狀態寄存器和線路狀態寄存器。通信流程如圖3所示:圖3a為發送流程,圖3b為接收流程。部分程序如下:

      16-3a.gif (7518 bytes)16-3b.gif (7049 bytes)

      圖3 查詢I/O方式下通信流程圖

      BOOL CCommu::WaitForStatus(int flag)
      { //When flag is 1,send else receive
        int statusflag,j1=0,j2=0;
        BOOL TimeOverFlag=FALSE;
        do{
        statusflag=(int)_inp(0x3fd);
        if(flag==1){
        statusflag=statusflag&0x20;
        if(statusflag!=0){break;}
        }
        else{
        j1++;
        statusflag=statusflag&0x01;
        if(statusflag!=0){break;}
        else{
        if(j1 % 5000==0){j2++;j1=0;}  } if(j2>60){TimeOverFlag=TRUE;break;}
        }
        }while(1);
        return TimeOverFlag;
      }

      void Ccommu::SendData(int data)
      {_outp(0x3f8,data);}

      _int8 Ccommu::ReceData()
      {return (_int8)_inp(0x3f8);
        對于控制、報警可根據具體要求確定。一般可采取主控計算機集中控制集中報警的方式,或從單片機系統自主控制主計算機集中管理報警的方式。對于數據的收發過程按上述原則進行,在此不在詳述。

      4 結束語
        本文介紹的Visual C++實現異步串行通信用于電力系統電纜故障在線監測系統中運行良好;對于控制系統的可視化、網絡化開發有參考意義。

      作者簡介:邱紅兵(1974-),男,湖北云夢縣人,碩士研究生,主要從事數學模型建立、微機應用軟件開發、機電控制及自動化研究。
      作者單位:北京理工大學 機電工程系,北京 100081

      參考文獻
      [1]穆宗學,章江,肖蓉.Visual C++ 4.2編程實踐指要[M]. 北京:中國鐵道出版社,1997. 160-169.
      [2]高登芳,潘承武,朱英杰.微型計算機實用測控接口技術[M]. 北京:北京科學技術出版社,1990. 214-224.

       

      主站蜘蛛池模板: 成熟熟女国产精品一区二区| 人妻一区二区三区三区| 无人去码一码二码三码区| 国产欧美在线手机视频| 亚洲尤码不卡av麻豆| 欧美三级中文字幕在线观看| 无码囯产精品一区二区免费| 中国女人熟毛茸茸A毛片| 国产成人精品1024免费下载| 亚洲各类熟女们中文字幕| 狠狠躁夜夜躁人人爽天天bl| 超碰成人人人做人人爽| 久热久热中文字幕综合激情| 精品国际久久久久999波多野| 久热久精久品这里在线观看| 各种少妇wbb撒尿| 欧洲性开放老太大| 91精品国产自产在线蜜臀| 草裙社区精品视频播放| 韩国精品久久久久久无码| 成人区精品一区二区不卡| 国产乱码日韩亚洲精品成人| 亚洲中文字幕无码av永久| 国产一区二区三区不卡在线看| 52熟女露脸国语对白视频| 亚欧洲乱码视频一二三区 | 乱码午夜-极品国产内射| 综合色一色综合久久网| 色老头亚洲成人免费影院| 在线观看中文字幕国产码| 精品无码三级在线观看视频| 亚洲男人天堂2021| 国产综合有码无码中文字幕| 日本一高清二区视频久二区| 国产综合有码无码中文字幕| 在线中文字幕亚洲日韩2020| 黄页网站在线观看免费视频| 亚洲色在线V中文字幕| 韩国青草无码自慰直播专区| 成年女人片免费视频播放A| 久久精产国品一二三产品|