串列埠是常用的計算機與外部序列裝置之間的資料傳輸通道,由於序列通訊方便易行,所以應用廣泛。現在國際上不斷有串列埠新技術及新規格推出,結合社會各方面需要,串列埠通訊發展的空間龐大。串列埠通訊技術因其自身的優勢和特性,及計算機技術的廣泛應用深入到生活和生產的各個領域,世界上數以億計的通訊裝置都以串列埠通訊的方式。在進行著資料的傳輸。在乙個應用系統中,同時使用windows和linux
作業系統,合理地分配資源,各取所長,是實現系統高效能的有效途徑。為了使兩個不同作業系統能協同工作,實現資源和資料共享,需要在兩者問進行通訊。本課題分別研究linux作業系統與window作業系統平台下串列埠通訊程式設計。串列埠通訊程式設計的主要模組分別採用visual c++6.0程式設計環境與unux進行開發。本文同時給出了兩種程式設計環境中串列埠通訊程式設計相同點與相異點,以及它們的比較。
1、開發環境
1.1硬體環境
能執行windows 9x/2000/xp和linux系統的pc機,配有兩個序列口或者是兩台配有序列口的pc機,rs232串列埠連線線。
1.2軟體環境
visual c++6.0,gcc程式設計器,windows9x/2000/xp作業系統和liunx作業系統。
1.3設計原理圖
pci執行windows系統,pcii執行linux系統。他們通過rs232序列線連線實現跨平台間的串列埠通訊。
2 、windows平台下串列埠通訊程式設計
3 、linux平台下串列埠通訊程式設計
3.1開啟串列埠
在linux下串列埠檔案是位=j=/dev下,串列埠l為/dev/ttyso,串列埠2為/dev/ttysl,通過呼叫open()開啟串列埠裝置,返回乙個整形檔案控制代碼,以後所有的埠操作都針對這個控制代碼進行。如果open()出錯,則返回.1。open()函式帶有2個引數,其中引數1為要開啟的裝置檔名,引數2為開啟方式。
3.2設定串列埠
進行串列埠操作之前,先要對串列埠通訊的波特率、校驗位、輸a/輸出方式等引數進行設定。linux下的串列埠設定實際上是根據posix規範來設定的。posix規範是由ieee提出的,用於定義一系列可移植的作業系統介面。串列埠設定的所有引數都包含在termios結構中。linux提供了兩個函式對termios進行操作,它們是tcgetattr()和tcsetattr()。tcgetattr()函式獲得指定串列埠的設定情況,tesetattr()函式用來設定串列埠的引數。
3.3讀寫串列埠
串列埠配置完成後,把串列埠當作檔案來讀寫。呼叫write()函式讀寫埠,返回實際讀寫的位元組數,如果有錯誤發生則返回一1。在主線程中寫資料,因為寫是可以控制的,write
(fd,&writedata,sizeof(writedata));而讀的時候不知道資料什麼時候會到,所以要建立乙個執行緒專門用來讀資料,在這個執行緒中,迴圈地用read讀串列埠。在程式結束時關閉串列埠close(fd)。串列埠配置完成後,把串列埠當作檔案來讀寫。呼叫read()函式讀寫埠,返回實際讀寫的位元組數,如果有錯誤發生則返回一1。
3.4關閉串列埠
關閉串列埠就是關閉檔案。使用close()關閉開啟的串列埠,唯一的引數是開啟串列埠的檔案描述符。
4 、windows和linux串列埠通訊的異同
Linux與Windows串列埠通訊
串列埠是常用的計算機與外部序列裝置之間的資料傳輸通道,由於序列通訊方便易行,所以應用廣泛。現在國際上不斷有串列埠新技術及新規格推出,結合社會各方面需要,串列埠通訊發展的空間龐大。串列埠通訊技術因其自身的優勢和特性,及計算機技術的廣泛應用深入到生活和生產的各個領域,世界上數以億計的通訊裝置都以串列埠通...
Windows串列埠程式設計
一 基本知識 win32下串列埠通訊與16位串列埠通訊有很大的區別。在win32下,可以使用兩種程式設計方式實現串列埠通訊,其一是呼叫的windows的api函式,其二是使用activex控制項。使用api 呼叫,可以清楚地掌握串列埠通訊的機制,熟悉各種配置和自由靈活採用不同的流控進行串列埠通訊。下...
Windows串列埠通訊
封裝了乙個串列埠通訊的c 類cserial,通過cserial類的openserialport 可以開啟乙個串列埠,串列埠開啟後後自動新建執行緒讀取串列埠資料,並通過messagebox簡單的顯示出資料。通過cserial類的senddata 方法可以向串列埠傳送資料。主函式中,新建了乙個cseri...