Windows串列埠通訊

2021-09-27 06:55:37 字數 2589 閱讀 8205

封裝了乙個串列埠通訊的c++類cserial,通過cserial類的openserialport()可以開啟乙個串列埠,串列埠開啟後後自動新建執行緒讀取串列埠資料,並通過messagebox簡單的顯示出資料。通過cserial類的senddata()方法可以向串列埠傳送資料。

主函式中,新建了乙個cserial類物件,開啟串列埠2,然後簡單的通過乙個訊息框迴圈來控制向串列埠不斷的傳送資料。

程式的效果圖如下:

原始碼如下:

serial.h

#ifndef _wzserialport_h

#define _wzserialport_h

#include using namespace std;

/*日期:2017-12-14

類名:wzserialport

用途:串列埠讀寫

示例:wzserialport w;

if(w.open("com1",9600,0,8,1))

*/class wzserialport

;#endif

serial.c

#include "serial.h"

#include #include #include #include #include #includeusing namespace std;

wzserialport::wzserialport()

wzserialport::~wzserialport()

bool wzserialport::open(const char* portname,

int baudrate,

char parity,

char databit,

char stopbit,

char synchronizeflag)

else

if (hcom == (handle)-1)

//配置緩衝區大小

if (!setupcomm(hcom, 1024, 1024))

// 配置引數

dcb p;

memset(&p, 0, sizeof(p));

p.dcblength = sizeof(p);

p.baudrate = baudrate; // 波特率

p.bytesize = databit; // 資料位

switch (parity) //校驗位

switch (stopbit) //停止位

if (!setcommstate(hcom, &p))

//超時處理,單位:毫秒

//總超時=時間係數×讀或寫的字元數+時間常量

commtimeouts timeouts;

timeouts.readintervaltimeout = 1000; //讀間隔超時

timeouts.readtotaltimeoutmultiplier = 500; //讀時間係數

timeouts.readtotaltimeoutconstant = 5000; //讀時間常量

timeouts.writetotaltimeoutmultiplier = 500; // 寫時間係數

timeouts.writetotaltimeoutconstant = 2000; //寫時間常量

setcommtimeouts(hcom, &timeouts);

purgecomm(hcom, purge_txclear | purge_rxclear);//清空串列埠緩衝區

memcpy(phandle, &hcom, sizeof(hcom));//儲存控制代碼

return true;

}void wzserialport::close()

int wzserialport::send(string dat)

return dwbyteswrite;

} else

else

}return dwbyteswrite; }}

string wzserialport::receive()

return rec_str;

} else

else

}for (int i = 0; i<1024; i++)

return rec_str;

}}

main()

#define _crt_secure_no_warnings

#include #include "serial.h"

#includeusing namespace std;

int main()

while (true)

return 0;

}

Linux與Windows串列埠通訊

串列埠是常用的計算機與外部序列裝置之間的資料傳輸通道,由於序列通訊方便易行,所以應用廣泛。現在國際上不斷有串列埠新技術及新規格推出,結合社會各方面需要,串列埠通訊發展的空間龐大。串列埠通訊技術因其自身的優勢和特性,及計算機技術的廣泛應用深入到生活和生產的各個領域,世界上數以億計的通訊裝置都以串列埠通...

Linux與Windows串列埠通訊

串列埠是常用的計算機與外部序列裝置之間的資料傳輸通道,由於序列通訊方便易行,所以應用廣泛。現在國際上不斷有串列埠新技術及新規格推出,結合社會各方面需要,串列埠通訊發展的空間龐大。串列埠通訊技術因其自身的優勢和特性,及計算機技術的廣泛應用深入到生活和生產的各個領域,世界上數以億計的通訊裝置都以串列埠通...

windows下藍芽虛擬串列埠通訊

windows下可以通過rfcomm虛擬的串列埠進行通訊.rfcomm簡介 rfcomm rs232串列埠,該 過程包括非資料通路狀態的傳輸。rfcomm不限制人工速率或步長,如果通訊鏈路兩端的裝置都是負責將資料 到其他通訊介質的第二類裝置,或在兩端rfcomm裝置介面上進行資料傳輸,實際資料吞吐一...