Qt 串口如何接收十六进制的数据?
在qt中要监视串口数据,用的QSocketNotifier,当有一串十六进制数据进来的时候(发送方是按十六进制发的数据)在uart1DataIncoming()中我该怎么接收呢?比如,发的是0xFE,我想收的是QString的FE。我模拟发送方发十六进制数据,接收不到啊,以字符串形式发送就可以完整接收到。
struct termios opt;
fd = open("/dev/ttyS1",O_RDWR);
if (fd < 0)
{
return ;
}
tcgetattr(fd,&opt); //获取当前配置
cfmakeraw(&opt);
cfsetispeed(&opt,B9600); //设置输入输出为9600Bps
cfsetospeed(&opt,B9600);
tcsetattr(fd, TCSANOW, &opt);//设置新配置
UART1R_notifier = new QSocketNotifier(fd, QSocketNotifier::Read, this);
connect (UART1R_notifier, SIGNAL(activated(int)), this, SLOT(uart1DataIncoming()));
void Widget::uart1DataIncoming()
{
char c;
if (read(fd, &c, sizeof c) != 1)
{
return;
}
QString str;
str = QString(c);
ui->textBrowser->insertPlainText(str);
}
struct termios opt;
fd = open("/dev/ttyS1",O_RDWR);
if (fd < 0)
{
return ;
}
tcgetattr(fd,&opt); //获取当前配置
cfmakeraw(&opt);
cfsetispeed(&opt,B9600); //设置输入输出为9600Bps
cfsetospeed(&opt,B9600);
tcsetattr(fd, TCSANOW, &opt);//设置新配置
UART1R_notifier = new QSocketNotifier(fd, QSocketNotifier::Read, this);
connect (UART1R_notifier, SIGNAL(activated(int)), this, SLOT(uart1DataIncoming()));
void Widget::uart1DataIncoming()
{
char c;
if (read(fd, &c, sizeof c) != 1)
{
return;
}
QString str;
str = QString(c);
ui->textBrowser->insertPlainText(str);
}
...全文
相关推荐
QT5串口接收发送
描述中提到的“十六进制发送”和“十六进制接收”可以通过将数据转换为十六进制字符串来实现,发送前使用`QByteArray::fromHex`,接收后使用`toHex`进行转换。
Qt5串口通信
Qt5库,一个强大的跨平台应用程序开发框架,提供了丰富的API来支持串口通信功能,使得开发者可以轻松地在Qt应用中实现串口的收发操作。### 一、Qt5串口通信基础1.
Qt蓝牙串口源码支持十六进制发送、字符发送、定时发送
该项目利用Qt框架提供了串口通信功能,并且增加了对十六进制和字符发送的支持,还具备定时发送的能力。在嵌入式开发中,串口通信是常见的数据传输方式,用于设备间的本地通信或者与PC进行调试。
QT串口通信程序
这个程序能够实现在十六进制模式下进行数据的发送和接收,这意味着它能处理二进制数据,并将其转换为可读的十六进制格式,这对于调试和监控硬件设备的数据流非常有用。
HLW8032 QT 串口接收
**HLW8032数据解析**HLW8032发送的数据通常包含多个寄存器的值,这些值可能以二进制或十六进制格式传输。在QT程序中,需要将接收到的数据进行解析,转换为人类可读的数值。


