最近寫乙個串列埠通訊程式,客戶對介面,容量要求都比較高。要求支援多串列埠同時工作。於是自己提煉了乙個架構,用於拋磚引玉。 本來想用vc,基於成本考慮,決定採用.net,而且c#的事件比vc的訊息容易控制些,只是跨執行緒觸發的時候稍微注意下。
先上個圖
上圖是整個通訊控制架構,根據配置檔案載入例項,每個串列埠開啟乙個執行緒用以處理命令佇列。命令加以優先順序來區分輕重緩急。
public class commpakcollection : system.collections.collectionbase
}public commpak add(commpak ocln)
list.insert(ipos, ocln);
return ocln;
}.....
}執行緒體:
public void threadmain( )
thread.sleep(5);}}
下圖是命令的基類, 各命令根據具體情況從此類派生,來處理各自的輸入輸出。
接收到資料或者異常時觸發事件
protected void reporterror(devicereturneventargs oarg)
public class devicereturneventargs : eventargs
//錯誤訊息
public string message = string.empty;
//錯誤**
public commerrortypes error = commerrortypes.noerror;
//正確執行後,返回的資料報
public commrecvpak revcpak;
}
c 多串列埠多執行緒接收資料
因為前段時間需要用到串列埠接收資料,且使用的串口號不確定,需採用多執行緒的方式來實現接收。建立執行緒 thread thread null for int i 0 i portnum i 根據選擇的串口號數量建立對應數量的執行緒 執行緒執行函式 public static void run stri...
基於C 11的事件驅動框架
嵌入式開發中對資源是有嚴格的要求的,在學校的時候一直使用qt,可是qt庫越來越大,在一些低端的嵌入式裝置上,我們可能只是簡單的幾個介面。這裡我想基於opengl開發乙個簡單的程式框架,用來開速開發嵌入式系統應用。本專案現在已經實現了事件迴圈系統,並且可以正常工作。小弟第一次搭建ui框架,可是資料太少...
程式設計基礎 C 多執行緒入門6 事件處理的需求
原始c 標準僅支援單執行緒程式設計。新的c 標準 稱為c 11或c 0x 於2011年發布。在c 11中,引入了新的執行緒庫。因此執行本文程式需要c 至少符合c 11標準。在本文中,我們將討論多執行緒中事件處理的需求。有時,執行緒需要等待事件發生,例如條件變為真或任務由另乙個執行緒完成。假設我們正在...