VC串列埠控制項程式設計,解決記憶體不斷增加的問題

2021-03-31 17:18:18 字數 1320 閱讀 6296

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機依次輪詢網路上的各智慧...