读取接收到的数据
void MainWidget::Read_Data()
{
QByteArray buf;
buf = serial->readAll();//串口数据接收
if(!buf.isEmpty())//判断接收数据是否为空
{
int32_t hexData = buf.toInt();//把接受数据转换为int类型
cksj = hexData;//把数据赋值给要用的变量cksj(自己定义的)
//把数据放到textedit中
QString str = ui->textEdit->toPlainText();
str+=tr(buf);
ui->textEdit->clear();
ui->textEdit->append(str);
}
buf.clear();
}
发送数据
void MainWidget::on_sendButton_clicked()/02 0d 0a
{
QByteArray a;
// QString Data = ui->textEdit_2->toPlainText().toLatin1();//方法1:从输入框获取要发送的信息
QString Data = "02 0d 0a";//这样也可以 方法2:直接定义好要发送的信息
Data+='\r';Data+='\n';//插入换行
a = QByteArray::fromHex(Data.toLatin1().data());//按十六进制编码发送
serial->write(a);//发送数据
qDebug() << typeid(ui->textEdit_2->toPlainText().toLatin1()).name();
}
我的问题
我想从QT发送十六进制数据给单片机,但serial->write(a);
发送函数的类型为QByteArray a;
,所以要转换为十六进制。
可以先定义QString Data = "02 0d 0a";
,目的是定义三个QString类型的0x02 0x0d 0x0a
,其中0x0d 0x0a
为\r\n
a = QByteArray::fromHex(Data.toLatin1().data());//按十六进制编码发送
没感觉了,有空再补…