總結來看串列埠通訊原理,(也可以說大多數通訊原理也是如此)。
通訊首先要有個通訊,可以簡單的把通訊看成乙個小桶,傳送方住水桶裡裝水,接收方從水桶中取水。如果你要和對方通訊首先需要將桶蓋開啟,再將水裝入到桶中,這時接收方才能夠從桶中取到水。這裡就存在著一定的問題,
1,如果桶蓋還沒有開啟,傳送方已經傳送了。這時接收方再從桶中取水,肯定取的水不對,會不一部分缺失了。解決方式就是讓桶蓋開啟再往其中加水。
2,但是桶蓋何時開啟,傳送方何時傳送,這個不好把握。解決方法:接收方接到資料時,要返回乙個應答標誌,告訴傳送方我已經取到資料了,而且是取得到正確資料才應答,否則不理會,繼續取資料。或者一直查詢,直到與傳送方發來的資料一致再停止取資料。
一般的,進行串列埠通訊總有乙個是主動方乙個是被動方,而且二者傳輸資料時,會有一定的協商好的資料格式,二者傳送接收都按照此資料格式進行。
在工業控制中,工控機(一般都基於windows平台)經常需要與智慧型儀表通過串列埠進行通訊。串列埠通訊方便易行,應用廣泛。
一般情況下,工控機和各智慧型儀表通過rs485匯流排進行通訊。rs485的通訊方式是半雙工的,只能由作為主節點的工控pc機依次輪詢網路上的各智慧型控制單元子節點。每次通訊都是由pc機通過串列埠向智慧型控制單元發布命令,智慧型控制單元在接收到正確的命令後作出應答。
在win32下,可以使用兩種程式設計方式實現串列埠通訊,其一是使用activex控制項,這種方法程式簡單,但欠靈活。其二是呼叫windows的api函式,這種方法可以清楚地掌握串列埠通訊的機制,並且自由靈活。本文我們只介紹api串列埠通訊部分。
串列埠的操作可以有兩種操作方式:同步操作方式和重疊操作方式(又稱為非同步操作方式)。同步操作時,api函式會阻塞直到操作完成以後才能返回(在多執行緒方式中,雖然不會阻塞主線程,但是仍然會阻塞監聽執行緒);而重疊操作方式,api函式會立即返回,操作在後台進行,避免執行緒的阻塞。
無論那種操作方式,一般都通過四個步驟來完成:
(1) 開啟串列埠
(2) 配置串列埠
(3) 讀寫串列埠
(4) 關閉串列埠
1、開啟串列埠
win32系統把檔案的概念進行了擴充套件。無論是檔案、通訊裝置、命名管道、郵件槽、磁碟、還是控制台,都是用api函式createfile來開啟或建立的。該函式的原型為:
c++**
VC串列埠通訊程式設計
win32串列埠程式設計 韓耀旭 在工業控制中,工控機 一般都基於windows平台 經常需要與智慧型儀表通過串列埠進行通訊。串列埠通訊方便易行,應用廣泛。一般情況下,工控機和各智慧型儀表通過rs485匯流排進行通訊。rs485的通訊方式是半雙工的,只能由作為主節點的工控pc機依次輪詢網路上的各智慧...
VC串列埠程式設計
本文 1 api描述 在win32 api 中,串列埠使用檔案方式進行訪問,其操作的 api基本上與檔案操作的 api一致。一 開啟串列埠 win32 中用於開啟串列埠的api 函式為createfile,其原型為 例如,以下程式用於以同步讀寫方式開啟串列埠com1 handle hcom dwor...
VC 的串列埠通訊
vc 的串列埠通訊 vc 的串列埠通訊 代翔在vc 中有兩種方法可以進行串列埠通訊。一種是利用microsoft公司提供的activex 控制項 microsoft communications control。另一種是直接用vc 訪問串列埠。下面將簡述 這兩種方法。一 microsoft comm...