visual c++開發>>通訊/網路
>>串列埠/並口
>>本文被瀏覽次數 7022
vc串列埠控制項程式設計,解決記憶體不斷增加的問題
分類: vc
作者姓名: chao_jie
開發環境: vc6 windows 2000
使用許可:**免費使用
講解: 很多人在使用vc串列埠控制項編寫程式的時候,經常會遇到當串列埠接受資料量比較大時,從windows 2000任務管理器裡,可以看到程式占用的記憶體會不斷增大,只好轉用api從新編寫,本文主要解決這個問題.
一般編寫串列埠控制項接收資料時,是這樣寫的:
//初始化設定
m_ms***m.set***mport(1)//開啟***1
m_ms***m.setportopen(true);//開啟串列埠
m_ms***m.setsettings("115200,n,8,1");//串列埠引數設定
m_ms***m.setinputmode(1);//***inputmodebinary設定binary緩衝區輸入方式
m_ms***m.setrthreshold(5);//每接收5個字元則激發on***m()事件
m_ms***m.setinputlen(5);//每次讀取5個字元
//接收資料
void c***dlg::on***m()
}//傳送
void c***dlg::send***mand(unsigned char ***mandid,int para1,int para2)
問題出在variant型變數上,當執行到*號的這一行時,variant型變數就會使記憶體增加,可以用下面的方法解決:
void c***dlg::on***m()
{long len,k;
colevariant myvar;
colesafearray safearray_inp;
byte rxdata[5]; //設定byte陣列
switch(m_ms***m.get***mevent())
{case 2://事件值為2表示接收緩衝區內有字元
myvar.attach (m_ms***m.getinput());--------------------------------------*
safearray_inp = myvar; //colevariant型變數轉換為colesafearray型變數
len=safearray_inp.getonedimsize(); //驗證得到有效資料長度
assert(len == 5);
for(k=0;kbreak;
VC串列埠程式設計
本文 1 api描述 在win32 api 中,串列埠使用檔案方式進行訪問,其操作的 api基本上與檔案操作的 api一致。一 開啟串列埠 win32 中用於開啟串列埠的api 函式為createfile,其原型為 例如,以下程式用於以同步讀寫方式開啟串列埠com1 handle hcom dwor...
深入淺出VC 串列埠程式設計 基於控制項
visual c 為我們提供了一種好用的activex控制項microsoft communications control 即mscomm 來支援應用程式對串列埠的訪問,在應用程式中插入mscomm控制項後就可以較為方便地實現對通過計算機串列埠收發資料。要使用activex控制項mscomm,程式...
VC串列埠通訊程式設計
win32串列埠程式設計 韓耀旭 在工業控制中,工控機 一般都基於windows平台 經常需要與智慧型儀表通過串列埠進行通訊。串列埠通訊方便易行,應用廣泛。一般情況下,工控機和各智慧型儀表通過rs485匯流排進行通訊。rs485的通訊方式是半雙工的,只能由作為主節點的工控pc機依次輪詢網路上的各智慧...