找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3425|回复: 11
收起左侧

串口助手接收数据,0x00及之后的数据不显示

  [复制链接]
ID:708768 发表于 2020-10-15 16:49 | 显示全部楼层 |阅读模式
举个例子,单片机发送一组这样的数组{0x0a,0xab,0x00,0xab},然后在串口助手上,显示出来的只有0a ab,后面两个就不显示,这个问题要如何解决
回复

使用道具 举报

ID:328014 发表于 2020-10-15 17:26 | 显示全部楼层
没有程序,无法分析,白白进来浪费时间,建议版主删除此贴
回复

使用道具 举报

ID:123289 发表于 2020-10-15 18:19 | 显示全部楼层
先搞清楚,发的是ASCII码,还是二进制码。
回复

使用道具 举报

ID:123289 发表于 2020-10-15 18:20 | 显示全部楼层
多发两个试试。是不是每次都是末两个不显示?
回复

使用道具 举报

ID:798631 发表于 2020-10-15 19:27 | 显示全部楼层
串口助手一般是不会出错的,还是仔细分析程序吧
回复

使用道具 举报

ID:414556 发表于 2020-10-15 21:26 | 显示全部楼层
没发完一般看波特率和程序是否被中断。
回复

使用道具 举报

ID:277550 发表于 2020-10-16 09:01 | 显示全部楼层
两端的程序是如何的。
回复

使用道具 举报

ID:388197 发表于 2020-10-19 07:00 | 显示全部楼层
初步推断是0x00被当成了结束符...
回复

使用道具 举报

ID:86450 发表于 2020-10-19 07:48 | 显示全部楼层
换一个 串口助手 试一试
回复

使用道具 举报

ID:711539 发表于 2020-10-19 08:09 | 显示全部楼层
楼主附上程序啊,不然别人不好判断。
建议程序里面使用for循环单个单个字节发送,防止0x00被当成了结束符'\0'
回复

使用道具 举报

ID:149144 发表于 2020-10-19 13:57 | 显示全部楼层
那说明 00 ab根本就没发出来
回复

使用道具 举报

ID:708768 发表于 2020-10-19 14:26 | 显示全部楼层
现在已解决,这是原程序
  1. void USART1_puts(char *str)
  2. {
  3. while(*str)
  4. {
  5. usart_senddata(usart1,*str++)
  6. while(usart_getflagstatus(usart1,usart_flag_txe)==reset;
  7. }
  8. }
复制代码

问题是在while(*str),当到了0x00时,就会判断为空,跳出循环,加个长度判断即可
像这样void USART1_puts(char *str,int n)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表