封裝了乙個串列埠通訊的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裝置介面上進行資料傳輸,實際資料吞吐一...