摘 要: 為了實現(xiàn)中標(biāo)麒麟操作系統(tǒng)下的串口調(diào)試,,提出了兩種調(diào)試方法:利用系統(tǒng)自帶的minicom調(diào)試工具;采用圖形化用戶界面開發(fā)軟件Qt4編寫調(diào)試程序的方法,。分別對VGA8×4矩陣切換器進(jìn)行串口通信控制實驗,。實驗結(jié)果表明,兩種調(diào)試方法都能成功實現(xiàn)對矩陣切換器的控制,,且都比較簡單實用,。
關(guān)鍵詞: 中標(biāo)麒麟操作系統(tǒng); 串口調(diào)試,; minicom,; Qt4; 矩陣切換器
目前,由于國產(chǎn)的中標(biāo)麒麟操作系統(tǒng)有著高安全性,以及其功能,、穩(wěn)定性,、效率方面都達(dá)到國外同類產(chǎn)品水平,部分指標(biāo)還要優(yōu)于國外同類產(chǎn)品,極大地降低了采購成本及維護(hù)成本等特點,中標(biāo)麒麟操作系統(tǒng)逐步地應(yīng)用到了部隊,、國家大型的建設(shè)項目,、企事業(yè)單位中,如國家電網(wǎng)D5000項目等[1],。串口作為一種廣泛應(yīng)用的計算機(jī)接口,,計算機(jī)對設(shè)備進(jìn)行通信控制幾乎都是通過串口進(jìn)行的。在中標(biāo)麒麟操作系統(tǒng)下進(jìn)行串口調(diào)試與Windows不同,本文將介紹兩種中標(biāo)麒麟操作系統(tǒng)下的串口調(diào)試方法,。
1 串口編程
在任何操作系統(tǒng)下,串口調(diào)試程序的編寫都是按照打開串口設(shè)備,、初始化串口和串口讀寫操作的步驟進(jìn)行[2]。
1.1 打開串口
中標(biāo)麒麟操作系統(tǒng)與Linux系統(tǒng)類似都是基于文件的,把硬件設(shè)備都看作文件,,對硬件設(shè)備進(jìn)行操作,,就是對設(shè)備文件的操作[3]。串口設(shè)備的設(shè)備文件是用“/dev/ttyS0”,、“/dev/ttyS1”來命名的,Windows下的“COM1”對應(yīng)于中標(biāo)麒麟下的“/dev/ttyS0”,。打開串口只需要調(diào)用open()函數(shù)打開設(shè)備文件即可,。
1.2 初始化串口
串口的初始化設(shè)置包括波特率、數(shù)據(jù)位,、奇偶校驗位,、停止位和流控制設(shè)置。對它們各自進(jìn)行設(shè)置時都有多種選擇,,因此編程時一般采用switch()函數(shù)實現(xiàn),。
1.3 串口讀寫操作
串口工作模式有阻塞方式和非阻塞方式兩種。阻塞方式比較簡單,,當(dāng)對串口進(jìn)行操作時,,如果條件不滿足,操作會被阻塞,,只有條件滿足時操作才會進(jìn)行,;非阻塞方式是采用輪詢對串口進(jìn)行操作,編程時可以定義一個定時函數(shù),,通過定時實現(xiàn)對串口緩沖區(qū)的訪問[2],。
2 minicom串口調(diào)試軟件
2.1 minicom簡介
minicom的功能與Windows系統(tǒng)下的超級終端類似,計算機(jī)可以利用此軟件通過串口控制外部硬件設(shè)備,。
2.2 minicom安裝
中標(biāo)麒麟操作系統(tǒng)最新發(fā)行版(NeoKylin3.2.1)的系統(tǒng)盤中集成有minicom的rpm安裝包,因此只需要將系統(tǒng)盤插入電腦,,打開終端,運行#yum list | grep minicom 命令查看minicom的版本,, 然后采用#yum install命令安裝,。
2.3 minicom配置及使用
第一次運行minicom,為了保證minicom能正確地對CPU進(jìn)行讀寫操作,,需要對minicom的端口和波特率等進(jìn)行配置[4],。
進(jìn)入root輸入#minicom-s命令,確定后會彈出minicom的配置界面如圖1所示。
2.4 minicom控制VGA8×4矩陣切換器
VGA8×4是8輸入4輸出的矩陣切換器,它具有標(biāo)準(zhǔn)的RS-232串行通信接口,用戶可以通過RS-232接口,,進(jìn)行計算機(jī)遠(yuǎn)端控制,。其通信控制協(xié)議:波特率為9 600 b/s,數(shù)據(jù)位為8 bit,,停止位1 bit,,沒有奇偶校驗位和流控制位。控制命令格式為:設(shè)備號+輸出端口號+控制符+輸入端口號+,!,。其中“設(shè)備號”和“控制符”都是1個字符位,“輸出端口號”和“輸入端口號”都是2 bit數(shù)字,,“,!”是命令結(jié)束符。例如:設(shè)備號為A,,以視頻控制方式(控制符為“[”),,第3路輸入信號切換到第1路輸出,其控制命令為“A01[03,!”,。如果控制成功,矩陣切換器前面板中由4個數(shù)碼管組成的狀態(tài)顯示區(qū)會顯示“0103”4個數(shù)字,,它表示矩陣切換器當(dāng)前的狀態(tài)為第1路輸出信號是由第3路輸入的[5],。
利用minicom控制矩陣切換器以視頻控制方式,第3路輸入后由第2路輸出的控制實驗如圖3所示,。圖3中上側(cè)圖顯示minicom發(fā)送的控制名令為A02[03,!,下側(cè)圖可以看出矩陣切換器前面板4個數(shù)碼管顯示0203,這說明控制實驗成功,。
3 Qt4編寫串口調(diào)試程序
3.1 Qt簡介
Qt是挪威的Trolltech公司開發(fā)的面向?qū)ο蟮腃++圖形用戶界面程序開發(fā)框架,。Qt以其作為一個跨平臺框架而著稱,它使用“一次編寫,,隨處編譯”的方式為開發(fā)包括Windows,、Linux和Mac等多平臺的應(yīng)用軟件提供方便,在中標(biāo)麒麟操作系統(tǒng)下也可以用Qt編程,。Qt擁有直觀,、強(qiáng)大的API,用戶只要具備一定的C/C++基礎(chǔ),,就能夠快速地用Qt編寫應(yīng)用程序[6],。
NeoKylin3.2.1系統(tǒng)安裝盤中集成有Qt4.6版本的rpm安裝包,要想安裝Qt只需將系統(tǒng)盤插入電腦,,采用install命令就能把Qt4.6安裝到自己的電腦中,。
3.2 Qt串口編程
到目前為止,Qt的發(fā)行版本中還沒有專門針對串口定義控制類,,要用Qt編寫串口調(diào)試程序,,最簡單的方法是使用第三方編寫的Qextserialport類[7-8]。Qextserialport繼承自Qt定義的對輸入/輸出設(shè)備操作的基類QIODevice,。Qextserialport類中完整定義了包括打開串口,、串口初始化設(shè)置和讀寫串口的一系列操作,。使用Qextserialport類編寫串口調(diào)試程序時,只需將串口操作相關(guān)的參數(shù)傳遞給它,,就能完成相應(yīng)的功能,。因此,使用Qextserialport類編寫串口調(diào)試程序時,只需要編寫很少的代碼就能實現(xiàn)串口調(diào)試的功能,。
3.3 Qt4編寫VGA8×4矩陣切換器控制程序
控制要求:矩陣切換器的第3路輸出連接一個40英寸的大屏幕顯示器,,第1路至第4路輸入分別連接4臺計算機(jī),要求編寫控制程序,,通過4個控制按鈕實現(xiàn)大屏幕顯示器可以選擇顯示4臺計算機(jī),。
根據(jù)前面矩陣切換器的介紹可知4個按鈕發(fā)送的控制命令分別是:A03[01!、A03[02!,、A03[03!和A03[04!。Qt中定義了信號與槽機(jī)制,,槽與信號連接在一起,,每當(dāng)發(fā)射這個信號時,就會自動調(diào)用這個槽,。在設(shè)計4個按鈕時,,就用信號與槽機(jī)制,當(dāng)點擊按鈕時,,會發(fā)送一個信號,同時定義一個響應(yīng)槽函數(shù)實現(xiàn)相應(yīng)數(shù)據(jù)的發(fā)送,。控制程序流程圖4所示,,程序界面如圖5所示,。
部分程序代碼如下:
mySerial = new
Posix_QextSerialPort("/dev/ttyS0",QextSerialBase::Polling );
//定義串口對象,指定串口名,使用查詢方式
mySerial ->open(QIODevice::ReadWrite);
//以讀寫方式打開串口
mySerial ->setBaudRate(BAUD9600);
//波特率設(shè)置為9 600 b/s
mySerial ->setDataBits(DATA_8);
//設(shè)置數(shù)據(jù)位為8 bit
mySerial ->setParity(PAR_NONE);
//奇偶校驗設(shè)置為無校驗
mySerial ->setStopBits(STOP_1);
//停止位設(shè)置為1 bit
myCom->setFlowControl(FLOW_OFF);
//流控制設(shè)置為無流控制[7]
圖5和圖6顯示了通過Qt4編程控制矩陣切換器實現(xiàn)大屏幕顯示2號計算機(jī)的實驗情況,。根據(jù)顯示結(jié)果可知,,控制實驗成功。
文中提出的兩種方法都能夠?qū)崿F(xiàn)中標(biāo)麒麟操作系統(tǒng)下的串口調(diào)試,。采用minicom不需要自己編程,,但是使用時不夠方便,不夠直觀,;使用Qt4編寫串口調(diào)試程序,,比較簡潔、直觀,,同時它還可以集成到一個大型程序中,,作為一個子模塊而存在。
參考文獻(xiàn)
[1] UGMBBC. 麒麟安全操作系統(tǒng)獲國家電網(wǎng)2011采購大單[EB/OL].(2011-09-07)[2011-12-19].http://www.cnbeta.com/articles/154312.htm.
[2] 李萌. Linux操作系統(tǒng)多串口編程技術(shù)[J].火控雷達(dá)技術(shù),,2008(3):88-95.
[3] 鳥哥. 鳥哥的Linux私房菜基礎(chǔ)學(xué)習(xí)篇[M].北京:人民郵電出版社,,2010.
[4] 劉昆. 應(yīng)用minicom實現(xiàn)對ARM嵌入式CPU的讀寫操作[J].科技創(chuàng)新導(dǎo)報,,2008(6):197.
[5] 矩陣切換器使用說明書[M]. 成都訊維信息技術(shù)有限公司,2010.
[6] BLANCHETTE J,SUMMERFIELD M. C++ GUI Programming with Qt4(第二版)[M].閆峰欣,,曾泉人,張志強(qiáng),,譯.北京:電子工業(yè)出版社,2008.
[7] YAFEILINUX. Qt串口通信專題教程[EB/OL].(2010-07-08) [2011-12-20]. http://www.yafeilinux.com/?p=820.
[8] BFOSD.qextserialport[EB/OL].(2009-05)[2011-12-20].http://code.google.com/p/qextserialport/.