簡體   English   中英

通過與 QT 的串行通信發送十六進制數據

[英]Sending hex data via serial communication with QT

我正在尋找通過串行通信發送十六進制數據的方法,我對其進行了多次搜索並遵循了一些方法,但沒有成功。 我檢查了該協議是否正在使用其他向設備發送十六進制數據的軟件是我的代碼

const char data[]={0xAA,0xAA,0x01,0x00,0x00,0x0E,0x00,0x01,0x00,0x00,0x00,0x2D,0x37,0x1D,0xAA,0xAA,0x01,0x00,0x00,0x0E,0x00,0x0C,0x10,0x00,0x00,0x01,0x76,0x13}; 
serial->setPortName(("COM8"));
initSerialPort(); // baud rate and etc

if(serial->open(QIODevice::ReadWrite))
{
    qDebug()<<"Port is open!";
    if(serial->isWritable())
    {
        qDebug()<<"Yes, i can write to port!";
       int size = sizeof(data);
       serial->write(data,size);
    }
}

當我使用其他聲明時,如 uint16_t、uchar、寫 function 無法將參數 1 從 uint16_t(或 uchar)轉換為 const char *

我也嘗試過這種形式

QByteArray hex("AAAA0100000E00010000002D371DAAAA0100000E000C100000017613");
QByteArray data = QByteArray::fromHex(hex);

它也沒有工作

您可以僅使用QByteArray來執行此操作,例如:

connect(serial, &QSerialPort::readyRead, this, &YourClass::doSomeStuff);

QByteArray arr;

arr += static_cast<char>(0xAA);
arr += static_cast<char>(0x01);

<...>

serial->setPortName("COM8");
initSerialPort(); // baud rate and etc

if(serial->open(QIODevice::ReadWrite) && serial->isWritable())
    serial->write(arr);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM