Visual C++在異步串行通信控制中的應用 邱紅兵 韓峯 摘要:系統介紹了Visual C++實現異步串行通信的基本原理,分別講述了用Windows函數庫API函數實現和C運行時庫的實現方法,以及在控制系統中的編程應用實例。 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. 1 引言 2 工作原理 圖1 控制系統網絡結構圖 3 Visual C++實現串行通信 |
圖2 RS-232接口連接 3.2.2 異步串行通信原理 表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爲例)。 |
圖3 查詢I/O方式下通信流程圖 BOOL CCommu::WaitForStatus(int flag) 4 結束語 作者簡介:邱紅兵(1974-),男,湖北雲夢縣人,碩士研究生,主要從事數學模型建立、微機應用軟件開發、機電控制及自動化研究。 參考文獻
|