QT 串列埠收發

2021-10-06 09:21:48 字數 1828 閱讀 7402

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...