VC 的串列埠通訊

2021-06-03 04:33:44 字數 1581 閱讀 1323

在vc++中有兩種方法可以進行串列埠通訊。一種是利用microsoft公司提供的activex控制項 microsoft communications control。另一種是直接用vc++訪問串列埠。下面將簡述這兩種方法。

一、microsoft communications control

microsoft公司在windows中提供了乙個串列埠通訊控制項,用它,我們可以很簡單的利用串列埠進行通訊。在使用它之前,應將控制項加在應用程式的對話方塊上。然後再用classwizard 生成相應的物件。現在我們可以使用它了。

該控制項有很多自己的屬性,你可以通過它的屬性視窗來設定,也可以用程式設定。我推薦用程式設定,這樣更靈活。

setcommport:指定使用的串列埠。

getcommport:得到當前使用的串列埠。

setsettings:指定串列埠的引數。一般設為預設引數"9600,n,8,1"。這樣方便與其他串列埠進行通訊。

getsettings:取得串列埠引數。

setportopen:開啟或關閉串列埠,當乙個程式開啟串列埠時,另外的程式將無法使用該串列埠。

getportopen:取得串列埠狀態。

getinbuffercount:輸入緩衝區中接受到的字元數。

setinputlen:一次讀取輸入緩衝區的字元數。設定為0時,程式將讀取緩衝區的全部字元。

getinput:讀取輸入緩衝區。

getoutbuffercount:輸出緩衝區中待傳送的字元數。

setoutput:寫入輸出緩衝區。

一般而言,使用上述函式和屬性就可以進行串列埠通訊了。以下是乙個範例。

#define messagelength 100

class cmydialog : public cdialog

bool cmydialog::oninitdialog()

return true;

}void cmydialog::ontimer(uint nidevent) 

cdialog::ontimer(nidevent);

}

用該控制項傳輸的資料是unicode格式。關於unicode和ansi的關係和轉換請參看msdn。 

關於該控制項的其他詳細資料請檢視msdn關於comm control部分。

二、直接用vc++訪問串列埠。

typedef struct _commtimeouts commtimeouts,*lpcommtimeouts; 

internal,internalhigh是保留給系統使用的,使用者不需要設定。

offset,offsethigh是讀寫串列埠的偏移量,一般設定offsethigh為null,可以支援2gb資料。

hevent讀寫事件,因為串列埠是非同步通訊,操作可能被其他程序堵塞,程式可以通過檢查該時間來得知是否讀寫完畢。事件將在讀寫完成後,自動設定為有效。

通過以上這些函式和結構,我們就可以通過串列埠進行通訊了,現在我們具體看下面的例項:

上述函式基本實現串列埠的開啟,讀寫操作。本文章略去該串列埠類的說明和關閉函式。讀者應該能將這些內容寫完。接下來,你就可以在你的程式中呼叫該串列埠類了。

VC 的串列埠通訊

vc 的串列埠通訊 vc 的串列埠通訊 代翔在vc 中有兩種方法可以進行串列埠通訊。一種是利用microsoft公司提供的activex 控制項 microsoft communications control。另一種是直接用vc 訪問串列埠。下面將簡述 這兩種方法。一 microsoft comm...

VC 的串列埠通訊

在vc 中有兩種方法可以進行串列埠通訊。一種是利用microsoft公司提供的activex控制項 microsoft communications control。另一種是直接用vc 訪問串列埠。下面將簡述這兩種方法。一 microsoft communications control micro...

VC 的串列埠通訊

在vc 中有兩種方法可以進行串列埠通訊。一種是利用microsoft公司提供的activex控制項 microsoft communications control。另一種是直接用vc 訪問串列埠。下面將簡述這兩種方法。一 microsoft communications control micro...