Win32 下 C C 串列埠程式設計

2021-06-22 07:34:41 字數 2369 閱讀 7648

在windows下,把串列埠當作是乙個檔案來操作,開啟串列埠時就像開啟檔案那樣,用完後必須使用關閉檔案的函式將串列埠關閉

與串列埠通訊有關的api函式

handle createfile(

lpctstr lpfilename,

dword dwdesiredaccess,

dword dwsharemode,

lpsecurity_attributes lpsecurityattributes,

dword dwcreationdisposition

dword dwflagsandattributes,

handle htemplatefile); 

lpctstr lpfilename    檔名稱,串口號

dword dwdesiredaccess   檔案的訪問許可權,對串列埠的f傳送為 generic_write ,  串列埠接收為generic_read 可以用或 | 連線起來,表示即可傳送又可接受

dword dwsharemode     檔案共享方式,這裡為 0   

lpsecurity_attributes lpsecurityattributes  定義檔案的安全特性 

dword dwcreationdisposition   檔案存在/不存在時,採取行動。 在這裡一定要設為 open_existing

dword dwflagsandattributes    檔案的屬性和標誌  , 這裡為 0

handle htemplatefile);         用來指定generic_read路徑訪問模板檔案的控制代碼,這裡設為 0

bool closehandle( handle hobject );   關閉串列埠

bool getcommstate( handle hfile, lpdcb lpdcb );  獲取串列埠的狀態及引數

在設定串列埠通訊格式時,由於dcb結構比較長,一般先獲取現行的dcb結構,再改變其中的引數

如果返回值不為0表示成功

bool setcommstate( handle hfile, lpdcb lpdcb ); 設定串列埠狀態

bool writefile(

handle hfile,

lpcvoid lpbuffer,

dword nnumberofbytestowrite,

lpword ipnumberofbyteswritten,

handle hfile,

lpcvoid lpbuffer  指向要寫入檔案的資料緩衝區位址

dword nnumberofbytestowrite  要寫入的位元組數

lpword ipnumberofbyteswritten  實際寫入的位元組數

bool readfile(

handle hfile,

lpcvoid lpbuffer,

dword nnumberofbytestoread,

lpword ipnumberofbytesread,

handle hfile,

lpcvoid lpbuffer  指向要寫入檔案的資料緩衝區位址

dword nnumberofbytestoread  要讀取的位元組數

lpword ipnumberofbytesread  實際讀取的位元組數

其他api

clearcommerror() 清除串列埠的錯誤,並獲得資訊

purgecomm() 清除串列埠緩衝區

escapecommfunction() 控制串列埠的硬體狀態

setcommmask() 設定事件的掩碼,用來觸發事件

waitcommevent() 等待設定的通訊事件發生

getcommmodemstatus() 取得modem的狀態

乙個簡單的串列埠例項:

該程式是用與從下位機讀取方位角度資料,下位機控制 hmc5883l,只向串列埠傳送一次資料

com.h標頭檔案 

/*

** 用於從串列埠讀取電子羅盤的資料(方位角度)

*/#ifndef _com_h_

#define _com_h_

#include #include using namespace std;

namespace comm

;class comhandler

;#endif

com.cpp

#include "com.h"

comhandler::comhandler(void)

double comhandler::getangle(void)

comhandler::~comhandler(void)



Win32串列埠程式設計

win32串列埠程式設計 金貝貝 一 基本知識 win32下串列埠通訊與16位串列埠通訊有很大的區別。在win32下,可以使用兩種程式設計方式實現串列埠通訊,其一是呼叫的windows的api函式,其二是使用activex控制項。使用api 呼叫,可以清楚地掌握串列埠通訊的機制,熟悉各種配置和自由靈...

win32下C Socket程式設計

這個例子是從網上轉抄過來的,經過本人測試,沒有任何問題,想學socket程式設計的人可以看一下,非常不錯的入門程式。伺服器端 include include using namespace std const unsigned short listen port 7788 pragma commen...

Win32程式設計

win32 malloc函式的底層實現是win32api utf 16編碼以16位無符號整數為單位,注意是16位為乙個單位,不是乙個字元就只有16位,這個要看字元的unicode編碼處於什麼範圍而定,有可能是2個位元組,也可能是4個位元組現在機器上的unicode編碼一般就是指utf 16 以兩個位...