请支持我敬佩的作者,原帖地址:http://www.eefocus.com/csxcs366/blog/10-12/200839_037d2.html

近日与网友讨论串口数据接收与类型转换问题,觉得非常典型,可能对网友们有借鉴意义,择其主要部分,与网友们共享。网友简称为AAA.

AAA: 您好,想向您请教个问题,十六进制转单精度浮点数用强制转换,当单独输入数据时,结果是对的,但跟串口相连时,由于不断的产生数据,结果就不对了,不知道怎么回事啊,谢谢!

CSX:接收的数据是什么?

AAA:接收框里显示是乱码,用HEX显示

CSX:你知道对方发送的格式?

AAA:这个是接收到的数据,HEX显示

2E 30 7B 14 A6 41 71 3D A4 41 1F 85 6B 3E F6 28 60 41 E1 7A 64 41 71 3D 8A BE 00 00 00 00 85 EB 21 40 5C 8F 22 40 0A D7 23 BC 00 00 00 00 00 00 00 00 EF

CSX:这些代表什么?

AAA:这个是一包数据,中间48个 是有效数据,以2E 30开头, EF结束,每4个字节代表一个数据

CSX:你显示的不是HEX方式, 似乎是ASCII方式,中间有空格?

AAA:恩,这个是用串口调试助手接收的,LV中是这样的

2E30 E17A A841 7B14 A641 9A99 993E A470 6941 52B8 6E41 C3F5 A8BE 0000 0000 1F85 2B40 F628 2C40 0AD7 23BC 0000 0000 0000 0000 EF

CSX:这样是对的

AAA:哦,E17A A841 是第一个数据,总共12个数据

CSX:不停接收时错了只能说明你拆分的时候错了,必须保证2E30开头,FF结尾这才是完整的帧

AAA:不是的啊,我查了我的数据,拆的是对的
我就是用拆分得到数据单独输入试验的

CSX:你如何知道是错的? 你知道返回的数据?

AAA:下位机有显示 ,转换的结果跟单独输入有很大的差别

CSX:各个环节都是对了 ,不可能有区别,除非你编程有错误 ,贴一下你的程序

AAA:不好意思,我怕贴图不完整啊,还是给你发下吧

(AAA创建了几个VI,非常大而且复杂,其中之一如下图所示:

CSX:重新设计这些VI吧 ,很简单的问题,如果都这样处理,那你的软件无法做了

CSX:你想这个VI完成什么功能?

AAA:这块主要是判断有的地方数据为零时,需要吧零加上

CSX:为什么要加0?
你的串口是不断发送数据还是你发送命令后下位机才应答?

AAA:发送命令才应答

CSX:那就是发送一个命令后,返回固定长度字符串2E30开头?

AAA:是的

CSX:那很简单啊 ,从第3个字节开始,每四个字节一组

AAA:但数据一次接收不完整

CSX:固定长度,肯定完整啊

AAA:一次接收不到一个完整的数据包,我试过,在VISA读设置51还是读不到51 个

CSX:一个命令后,下位机自然发送这么多啊

AAA:这个不清楚了,确实一次读不全数据

CSX:不要考虑处理,先考虑协议问题,计算机发送什么命令?

AAA:FE2E 0101EE
读取一包数据的命令

CSX:你用调试工具能返回完整帧吧 ,一帧51个字节?

AAA:是的

CSX:我明白了,8F 22 40 0A D7 23,问题出在0A上,回车换行自动结束了本次读

CSX:VISA 配置时取消结束字符就可以了,必须为FALSE,默认为TRUE

CSX:VISA 串口读操作在三种情况下结束读操作:1、读到指定字节数。2、读到结束字符,默认为回车。3、超时。

CSX:默认结束符号为0A,所以数据中有0A就结束了

AAA:哦,明白了,谢谢
恩,好的,那数据转换那块怎么处理啊

CSX:那很简单啊,从2E30之后拆分啊,四个字节为一组

(创建完这个VI后,我想到了更为简单转换方法。)

对话结束。

上面所述内容有两个重点,可供网友们借鉴:

1、HEX方式下要特别注意结束符号0A的问题,应该取消结束符号,这样才能保证完整的帧。

2、强制类型转换函数不但可以进行标量转换,也可以进行数组强制转换。

8、网友问答之串口数据接收与数据强制转换---------labview宝典相关推荐

  1. 串口发送接收浮点型数据

    转自:https://blog.csdn.net/liangwei88624/article/details/6885803 转自:https://blog.csdn.net/newstoy/arti ...

  2. STM32串口中断接收帧数据并返回给上位机总结(配合MAX3483)

    一.前言 这是我的第一篇CSDN,记录一些代码总结,一方面与大家分享交流,另一方面方便以后再次使用能够快速回忆,再就是提高自身写作水平.如有错误之处,欢迎各位大佬批评指正. 二.所涉及的芯片 1.ST ...

  3. android串口发送二进位,stm32107串口发送数据的数据用串口助手接收发现数据不对...

    下面是我用的STM32单片机串口5的初始化 然后再主函数里面一直发送数据 串口助手的相关配置和串口的配置一样 但是接收的数据和自己发送的数据不一致下面是串口5的初始化(单片机用的是CP2102芯片转U ...

  4. STM32 USB数据接收与数据发送程序流程分析

    既然学习了USB,那就必须的搞懂USB设备与USB主机数据是怎么通讯的.这里主要讲设备端,因为我们的代码是做USB设备用的. 我们需要必须要定义了USB中断.起始在STM32的中断向量表中给USB两个 ...

  5. hal 双串口同时接收丢失数据_【STM32Cube_06】使用USART发送和接收数据(查询模式)...

    寻求更简洁舒适的阅读体验,请移步Mculover666的个人博客: [STM32Cube_06]使用USART发送和接收数据(查询模式)​www.mculover666.cn 本篇文章主要介绍如何使用 ...

  6. python串口连续数据_Python代码从串口连续接收可变数据

    通常,您与微通信所做的工作是将单个字符用于轻量级或创建通信协议.基本上你有一个开始标志,结束标志和某种校验和,以确保数据正确传输.有很多方法可以做到这一点. 以下代码适用于Python 3.您可能必须 ...

  7. STM32如何从串口接收数据,取出数据中的密码段再保存到flash中。

    STM32如何从串口接收数据,取出数据中的密码段再保存到flash中 STM32如何从串口接收数据,取出数据中的密码段再保存到flash中u8 Usart2_buf[256]; unsigned in ...

  8. 51单片机stc15w204s串口通信发数据接收数据串口中断发中文字符串完美运行软件延时发送一字节函数全注释

    这里写自定义目录标题 KEIL自己先调试通了然后再说下面的事 51单片机stc15w204s串口通信直接上文件 KEIL自己先调试通了然后再说下面的自己看看就可 KEIL自己先调试通了然后再说下面的事 ...

  9. 嵌入式Linux 串口编程系列3——通过VTIM、VMIN、select实现串口不定长数据接收功能

    上一篇文章中,我们详细分析了VTIM和VMIN的功能, <嵌入式Linux 串口编程系列2--termios的VMIN和VTIME深入理解> 也明白了这两个参数设计的初衷和使用方法,接下来 ...

  10. Python-Serial 串口助手的接收读取数据

    其实网上已经有许多python语言书写的串口,但大部分都是python2写的,没有找到一个合适的python编写的串口助手,只能自己来写一个串口助手,由于我只需要串口能够接收读取数据就可以了,故而这个 ...

最新文章

  1. 微擎任意消息该公众号提供的服务器,该公众号提供的服务出现故障,请稍后再试...
  2. 证书访问_3+证书|高考注册页面可访问,具体流程看这里!
  3. 第一次ScrumMeeting博客:团队任务分解
  4. 写插件代码查看单据简单示例分享
  5. 斑马打印机-RFID打印机 ZT411R最全攻略,从0上手 通过【JAVA生成ZPL指令+ts24.lib+ip:端口】的方式调用打印,无须安装驱动
  6. 史上最全的MathCAD安装教程
  7. IE主页被篡改,修改“Internet 选项”也无法解决时的解决方法
  8. 笔记本独显无输出_双显卡笔记本独显消失怎么回事|笔记本双显卡独显没了怎么解决|笔记本双显卡切换独显方法...
  9. 快速实现NBIOT UDP通信
  10. Fluent Search
  11. 一个三流学校程序员的奋斗!(转)
  12. 全网最好用的图文识别、证件扫描、PDF转换等工具,已解锁永久会员!
  13. 海思Hi3516新增sensor imx214 笔记
  14. 蓝桥杯 算法训练 逗志芃的危机
  15. 8.Spring Boot中使用thymeleaf
  16. idea maven项目无法下载自定义的仓库完美解决办法
  17. bin2hex没有反函数hex2bin,如何还原
  18. CMMI—产品集成(PI)
  19. C语言面试题分享(1)
  20. dataTable报错:DataTables warning: table id=example - Requested unknown parameter 'null' for row 1

热门文章

  1. gre 填空双选题目
  2. 自建邮箱系统邮件管理方法
  3. android开发案例1---拦截电话,拯救史迪仔,有序广播
  4. linux 环境下设置Kettle的转换,作业定时执行简单操作
  5. CentOS 下编译安装AliSQL
  6. IE11降级到IE8
  7. 如何成为一个架构师?
  8. oracle 尝试分配内存不足,ORA-04030: 在尝试分配...字节(...)时进程内存不足的原因分析解决方法...
  9. 2021数模美赛LaTeX+Word论文模板更新!
  10. Apex弹窗闪退报错问题解决方案清晰讲解(系统软件层面解决,已亲测可行)