技术专栏
【海思HI3520之QT开发】-串口通讯实战(五):485传感器数据采集
- 环境:Ubuntu 12.04-64bit
- 硬件平台:Hi3520D_V100
- 内核版本:linux-3.0.y
- Qt版本:qt4.8.6
- 编译器:arm-hisiv100nptl-linux-gcc
- 作者:MacianYuan
- 原文链接:https://www.ebaina.com/articles/140000004248
- 摘要:
- 数据发送(16进制)
- 数据解析(16进制)
第一节 数据发送(16进制)
在嵌入式Qt中,经常会在通讯中直接发送和接收16进制的数据,Qt中发送16进制的方法有很多种形式去实现,下面是比较简单的一种实现形式,提供参考:
int SensorAnalysis::get_device_number()
{
//把需要发送的16进制保存在字节数组中
QByteArray senddata ;
senddata[0]=0xff;
senddata[1]=0xff;
senddata[2]=0xff;
senddata[3]=0x55;
senddata[4]=0x01;
senddata[5]=0x36;
senddata[6]=0x00;
senddata[7]=0xff;
senddata[8]=0xff;
senddata[9]=0xff;
//设置485芯片为发送模式
HI_MPI_SYS_SetReg(0x200F004C,0);
HI_MPI_SYS_SetReg(0x201A0400,1);
HI_MPI_SYS_SetReg(0x201A0004,1);
//把数据通过串口发送函数 发送出去
WriteCom(Device_public::sensor_port,senddata);
//短暂的延时处理
QElapsedTimer t;
t.start();
while(t.elapsed()<20);
//把485芯片设置为接收模式
HI_MPI_SYS_SetReg(0x200F004C,0);
HI_MPI_SYS_SetReg(0x201A0400,1);
HI_MPI_SYS_SetReg(0x201A0004,0);
return 0;
}
//串口发送函数
int SensorAnalysis::WriteCom(QextSerialPort *write_com, QByteArray data)
{
if(write_com == 0 || !write_com->isOpen()){
qDebug() << "The write_com Open Failed!";
return -1;
}
if(write_com->write(data) <= 0){
//QMessageBox::information(0,tr("错误"),tr("通讯中断"),QMessageBox::Ok);
write_com->close();
return -1;
}
return 0;
}
第二节 接收数据(16进制)
与普通串口相同的读函数,在完成定时接收整个数据包之后接收的数据通过toHex()
,可直接将接收的字符数组转换为16进制的字节数组,通过at()
定位到相应数据进行解析。
//读数据 对数据进行解析,定时100ms的数据
void SensorAnalysis::ReadCom()
{
//开始接受下面100ms的数据
timer->start();
baRcvData.append(Device_public::sensor_port->readAll());
}
//读数据 对数据进行解析
void SensorAnalysis::on_timeout()
{
QByteArray array;
qDebug()<<"baRcvData timer->stop";
timer->stop();
qDebug()<<"baRcvData.length()"<<baRcvData.length();
if(baRcvData.length()!=0)
{
qDebug()<<baRcvData.toHex().at(0);
qDebug()<<baRcvData.toHex().at(2);
qDebug()<<baRcvData.toHex().at(4);
}
baRcvData.clear();
}
串口通信遇到问题解决方法:
在初学嵌入式Qt的使用中,多会遇到一些比较简单但是因为在windows环境下不会出现的问题,可以通过下面链接找到方法。
1、在文件系统/dev/中查找不到串口设备文件
【海思HI3520之QT开发】-串口通讯实战(一):UART加载到内核
2、QT5中,串口通信是借助一个QSerialPort的对象来实现的,在Qt4中我们通常借助qextserialport第三方库实现
【海思HI3520之QT开发】-串口通讯实战(二):串口通讯之TTL通讯
3、串口通信数据接收不完整的解决方法
【海思HI3520之QT开发】-串口通讯实战(三):泰斗N303-3数据采集
4、Qt中访问内存地址或寄存器地址,操作GPIO的方法
【海思HI3520之QT开发】-串口通讯实战(四):串口通讯之485通讯
5、Qt关于16进制数据收发方法
声明:本文内容由易百纳平台入驻作者撰写,文章观点仅代表作者本人,不代表易百纳立场。如有内容侵权或者其他问题,请联系本站进行删除。
红包
3
4
评论
打赏
- 分享
- 举报
评论
0个
手气红包
暂无数据
相关专栏
-
浏览量:2528次2020-08-14 15:09:41
-
浏览量:6528次2020-08-15 17:22:26
-
浏览量:4818次2020-08-11 18:51:18
-
浏览量:3814次2020-08-14 17:18:54
-
浏览量:4950次2020-08-11 17:39:02
-
浏览量:10260次2021-01-12 20:00:35
-
浏览量:10507次2020-08-30 00:41:53
-
浏览量:1426次2020-08-30 00:47:29
-
浏览量:1459次2020-08-30 00:47:44
-
浏览量:4467次2020-07-31 13:45:09
-
浏览量:1376次2023-11-04 15:07:11
-
浏览量:2373次2020-08-23 21:47:22
-
浏览量:2121次2020-08-17 19:49:28
-
2020-11-09 12:31:13
-
浏览量:1998次2023-04-20 13:49:28
-
浏览量:5853次2024-05-09 13:53:10
-
浏览量:910次2024-01-05 10:33:11
-
浏览量:3659次2020-07-28 10:49:06
-
2018-06-18 22:47:22
置顶时间设置
结束时间
删除原因
-
广告/SPAM
-
恶意灌水
-
违规内容
-
文不对题
-
重复发帖
打赏作者
MacianYuan
您的支持将鼓励我继续创作!
打赏金额:
¥1
¥5
¥10
¥50
¥100
支付方式:
微信支付
打赏成功!
感谢您的打赏,如若您也想被打赏,可前往 发表专栏 哦~
举报反馈
举报类型
- 内容涉黄/赌/毒
- 内容侵权/抄袭
- 政治相关
- 涉嫌广告
- 侮辱谩骂
- 其他
详细说明
审核成功
发布时间设置
发布时间:
请选择发布时间设置
是否关联周任务-专栏模块
审核失败
失败原因
请选择失败原因
备注
请输入备注