FD-110A型渦輪分子泵控制器串口通信的實(shí)現與應用
在現代工業(yè)控制中,串口通信的應用越來(lái)越廣泛。單片機和PC 機之間的串口通信在進(jìn)行數據交換時(shí)經(jīng)常被使用。在串行通信時(shí),要求通信雙方都采用一個(gè)標準接口,RS-232C接口是單片機和PC機進(jìn)行通信最常用的一種接口。單片機與PC機進(jìn)行串口通信最簡(jiǎn)單的三線(xiàn)制法,即接收數據針腳(RxD)與發(fā)送數據針腳(TxD)相連,彼此交叉,信號地(GND)對應相接,如圖1所示。
為了實(shí)現單片機和PC機之間的串口通信,采用VC++6.0來(lái)實(shí)現編程,VC++6.0是一種功能強大的面向對象的Windows 編程開(kāi)發(fā)平臺。與以往DOS 下串行通信不同,Windows 不提倡應用程序直接控制硬件,而是通過(guò)Windows 系統提供的設備驅動(dòng)程序來(lái)進(jìn)行數據傳遞。串口在Win32 中是作為文件來(lái)處理的,而不是直接對端口進(jìn)行操作。本文采用多線(xiàn)程串口編程工具CSerialPort 類(lèi)來(lái)實(shí)現PC機與單片機之間的通訊。
1 使用CSerialPort 類(lèi)實(shí)現串行通信
CSerialPort 類(lèi)是由Remon Spekreijse 提供的串口類(lèi),該類(lèi)支持線(xiàn)連接(非MODEM)的串口編程操作。
CSerialPort 類(lèi)是基于多線(xiàn)程的,其工作流程如下:首先設置好串口參數,再開(kāi)啟串口監測工作線(xiàn)程,串口監測工作線(xiàn)程監測到串口接收到的數據、流控制事件或其他串口事件后;就以消息方式通知主程序,激發(fā)消息處理函數來(lái)進(jìn)行數據處理,這是對接收數據而言的;發(fā)送數據可直接向串口發(fā)送。具體實(shí)現如下:
1.1 添加類(lèi)文件
(SerialPort.h 和SerialPort.cpp)并定義類(lèi)對象m_SerialPort,(若要操作多個(gè)串口,則要為每個(gè)串口均定義一個(gè)類(lèi)對象)。
1.2 串口的初始化
串口的初始化代碼一般在OnInitDialog()函數中實(shí)現,下面給出了主要代碼以及定義了一個(gè)布爾變量m_bSerialPortOpened 用來(lái)標志串口是否打開(kāi)。
if (m_SerialPort.InitPort (this, nPort, 4800,'D',8,1,EV_RXFLAG | EV_RXCHAR,512))
{ m_SerialPort.StartMonitoring(); // 啟動(dòng)監測輔助線(xiàn)程
m_bSerialPortOpened=TRUE;
else
{AfxMessageBox(" 沒(méi)有發(fā)現此串口或被占
用");
m_bSerialPortOpened=FALSE;
}
1.3 接收數據
接收處理在串口事件消息處理函數OnComm()中實(shí)現。并將接收到的字符顯示在接收編輯框中,下面代碼中,定義了接收數據變量m_ReceiveData,WPARAM、LPARAM 類(lèi)型是多態(tài)數據類(lèi)型(polymorphic data type), 根據需要自動(dòng)適應,每當串口接收緩沖區內有一個(gè)字符時(shí),就會(huì )產(chǎn)生一個(gè)WM_COMM_RXCHAR 消息, 觸發(fā)OnComm()函數這時(shí)就轉到函數中進(jìn)行數據處理。
LONG CFD110ADlg::OnComm (WPARAM ch,
LPARAM port)
{ m_ReceiveData+=ch;
UpdateData (FALSE); // 將接收到的字符顯示
在接收編輯框中
return 0;
}
1.4 數據發(fā)送
if(!m_bSerialPortOpened) return; // 檢查串口是
否打開(kāi)
UpdateData(TRUE); // 讀入編輯框中的數據
m_SerialPort.WriteToPort((LPCTSTR) m_strSend-Data ) ; // 發(fā)送數據
2 PC 機與單片機之間的相互通信
FD-110A 型分子泵控制器是供高速無(wú)刷直流電動(dòng)機的電子換向器,其使用51 系列單片機作為控制器。具有4 位LED 數碼管顯示頻率、電壓、電流值;3 只鍵盤(pán)用于啟動(dòng)、停止控制,頻率、電壓、電流顯示切換及高、低轉速設置;過(guò)流、過(guò)熱、超時(shí)聲光保護報警;本地線(xiàn)控和遠程RS232通訊控制。
2.1 C51 單片機串行口協(xié)議
(1) 通訊波特率4800bit/S,格式8.1.1
(2) 命令格式:
長(cháng)度:參數的長(cháng)度。無(wú)參數時(shí)填零。
異或效驗:從命令碼開(kāi)始。
2.2 PC 機與單片機接通后,PC 機發(fā)送以下命令:
AB 80 00 80 分子泵停止工作
AB 81 00 81 分子泵啟動(dòng)工作