1、新增第三方qextserialport庫
解壓複製貼上到工程路徑,在工程檔案pro檔案中新增工程
include($$pwd/qextserialport/qextserialport.pri)
編譯後pri庫被載入到工程中。
2、串列埠初始化
定義如下變數、並將其初始化,因為使用需要,我將除了串口號之外的其他配置固化。
bool comok; //串列埠是否開啟
qstring portname; //串口號
baudratetype baudrate; //波特率
databitstype databit; //資料位
paritytype parity; //校驗位
stopbitstype stopbit; //停止位
baudrate = baud115200;
databit = data_8;
parity = par_none;
stopbit = stop_1;
搜尋可用的串口號 ---- 我使用的時比較笨的方法乙個乙個去找,哪位網友知道怎麼直接搜尋載入可用串口號的方式,還望布不吝賜教
//搜尋可用串列埠
qstringlist usart::findport()
//windows下串列埠顯示形式
for(i=0;i<=20;i++)
//將其新增到下拉列表中呈現
ui->cboxportname->clear();
ui->cboxportname->additems(comlist);
return comlist;
}
開啟關閉串列埠
//開啟串列埠
bool usart::openusart()
return comok;
}//關閉串列埠
void usart::closeusart()
串列埠收發
//串列埠傳送
int usart::usartsenddata()
else if(usartsendlenth<=0)
//串列埠標記占用
usartuseing = true;
qbytearray buffer;
buffer.resize(usartsendlenth);
memcpy(buffer.data(),usartsendbuff,(size_t)(usartsendlenth));
//串列埠傳送
com->write(buffer);
//清空串列埠預設控制項
memset(usartsendbuff,0,usartsendlenth);
usartsendlenth = 0;
//取消串列埠占用
usartuseing = false;
qdebug()<<"-----串列埠傳送完成-----";
return success;
}//串列埠接收
int usart::usartreaddata()
usartrecvlenth = (uint16_t)buffer.length();
if(usartrecvlenth<=0)
{usartrecvlenth = 0;
usartuseing = false;
qdebug()《如上一些處理為本人在做專案時的需求,有些地方是不必要的,且收發方式是一發一收的固定模式,若要想串列埠助手一樣同步收發,可以配合定時器接收
串列埠非同步收發資料
以linux系統為例,建議從basedataendpoint建立乙個子類,同時實現epollproxy介面,比如serialport linux,在開啟裝置後把handle繫結到epoll上即可 class sdk ext class serialport linux public basedata...
串列埠收發資料1
1.在zigbee 協議棧中,haluartcfg t 結構體是如何定義的?2.串列埠是如何初始化的?3.傳送給串列埠的資料時如何接收的?4.串列埠是如何向pc 機傳送資料的?這些問題涉及三個函式 haluartopen haluartread haluartwrite haluartopen 函式...
C 串列埠收發資料
串列埠命名空間 using system.io.ports 例項化串列埠物件 串列埠引數 串口號,波特率,資料位,停止位 奇偶校驗位 例項1 只通過串口號新建例項 返回值 串口號集合 serialport.getportnames 判斷串列埠是否開啟 如果串列埠沒有開啟就開啟串列埠 port.iso...