基於Win32API的非同步串列埠通訊

2021-07-04 07:28:14 字數 1827 閱讀 6754

只乙個框架性流程而矣............

實現重疊模型的步驟

下面就結合俺寫的乙個console程式簡單示例進行說明:

【第一步】開啟串列埠

【第二步】設定緩衝區大小

if(!setupcomm(m_hcom,2048,2048))

protocoltype;

typedef enum

packetdatatype;

//串列埠資料結構

typedef struct serialnetproto

packethead;

int datalen = 100;

char *pbuf = new char[datalen];

strcpy(pbuf,"hello world!");

datalen   = strlen(pbuf);

packethead myhead;

myhead.destinationaddr = 11;

myhead.sourcedaddr = 10;

myhead.datatype = attemper_command;

myhead.datalength = datalen;

myhead.netstate = packet;

myhead.packetsize = sizeof(packethead) - sizeof(unsigned long);

myhead.offset = sizeof(myhead.destinationaddr) +sizeof(myhead.sourcedaddr) + sizeof(myhead.datatype) +sizeof(myhead.datalength) + sizeof(myhead.netstate) + sizeof(myhead.packetsize);

char *psendbuffer = new char[sizeof(myhead)+datalen+ 4];//傳送的資料

memcpy(psendbuffer,"##",2);//包頭標誌

memcpy(psendbuffer+2,(char*)&myhead,sizeof(myhead));//包頭

memcpy(psendbuffer+2+sizeof(myhead),pbuf,datalen);//資料

memcpy(psendbuffer+2+sizeof(myhead)+datalen,"@@",2);//包尾標誌

【第七步】傳送資料

【第八步】資料接收

dword dwerror;

dword dwwantread = 100;

dword dwrealread = 0;

char* preadbuf = new char[100];

if (clearcommerror(m_hcom,&dwerror,null))

//查詢資料禎的開始標誌

pdest = (char*)find(buf,"##",max_serial_buffer*2,2);

if (pdest)

else//沒有找到開始禎標誌"##"

//查詢資料禎的結尾標誌

pdest =  (char*)find(buf,"@@",max_serial_buffer*2,2);

if (pdest)

else

}//乙個在記憶體塊中查詢指定字串的函式

void* find(const char *psour,const char *pdest,int sourlen,int destlen)

else

}if(j == destlen)

else

,略......

注:文章** 

VC 串列埠程式設計之基於Win32 API

1 api描述 在win32 api中,串列埠使用檔案方式進行訪問,其操作的api基本上與檔案操作的api一致。開啟串列埠 win32 中用於開啟串列埠的api 函式為createfile,其原型為 例如,以下程式用於以同步讀寫方式開啟串列埠com1 handle hcom dword dwerro...

掃雷程式 win32API

1 已實現功能 基本的掃雷方塊的展開,方塊周圍雷數的計算,方塊的標旗,勝負的判斷,難度的更改 2 未實現功能 控制台顯示剩餘標旗數量和當前所用時間,選單項的豐富 3 基本原理 使用一張二維int表儲存每個方格的數字資訊,其中9表示雷 將整個雷區 客戶區 按難度分割成方格,每個方格為乙個靜態控制項,用...

基於WIN32 API介面程式設計實現的掃雷小遊戲

1專案介紹 1.1 開發介紹 作業系統 windows 7 及以上版本系統 開發環境 vs2010 1.2 掃雷操作 滑鼠操作 1.3 勝利標準 將所有的雷找到 1.4 遊戲規則 通過滑鼠左鍵單擊即可挖開方塊,顯示數字為周圍八個區域的炸彈數。通過推理可以找到地雷,然後通過滑鼠右鍵可以進行標記。如果發...