• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >嵌入式开发 > STM32接收字符串,数据中有00,应该如何处理?

STM32接收字符串,数据中有00,应该如何处理?

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-05

佚名通过本文主要向大家介绍了stm32串口接收字符串,stm32接收字符串,stm32中断接收字符串,stm32串口发送字符串,stm32发送字符串等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: STM32接收字符串,数据中有00,应该如何处理?
描述:

stm32printfc语言数据

小弟初学STM32不久,用的是野火中的一个例程,其中有个函数:USART2_printf
void USART2_printf( USART_TypeDef* USARTx, char *Data, ... )
{
const char *s;
  int d;   
  char buf[16];
  va_list ap;
  va_start(ap, Data);
while ( *Data != 0 )     
{                           
if ( *Data == 0x5c )  
{   
switch ( *++Data )
{
case 'r':           
USART_SendData(USARTx, 0x0d);
Data ++;
 break;
case 'n':           
USART_SendData(USARTx, 0x0a);
Data ++;
 break;
default:
Data ++;
   break;
}  
}

现在我有组数据,数据的HEX码如下:01 03 05 00 00 00 00 7F 7A 00 00 2C E5由于上面函数的原因,串口只能打印:01 03  05 但我想调用数据7F 7A 应该如何修改这个函数或者有什么其他方法呢?谢谢大神指点。 STM32接收字符串,数据中有00,应该如何处理? STM32接收字符串,数据中有00,应该如何处理?


解决方案1:

for (i=0;i<n;i++)  改为 for (i=0;i<n;) 
或者 for (i=0;i<n;i++)  改为 for (i=0;i<n;i++, Data++)  同时把代码中的
Data++;
i++;
都去掉。

解决方案2:

很多种方法:
1 用其他值表示串结束,例如:
while ( *Data != 0 )  改为 while ( *Data != 0x5E ) 
2 不使用结束符的方式,增加长度参数。如 1 楼。
3 打印前,将 0 替换成其他不影响操作的值
4 打印前,将串在 0 处拆分,每一段均不含 0。对各段依次打印。
……

解决方案3:

你那个 n=sizeof(Data); 不灵的。 还是会截取到第一个0数据
需要另想办法。如果数据大小不变,可以用个常量控制。否则,老老实实加一个长度变量

解决方案4:

看情况把
  va_list ap;
   va_start(ap, Data);
加上

解决方案5:

void USART2_printf( USART_TypeDef* USARTx, char *Data, uint n)
{
  uint i;
  for(i=0;i<n;i++)
  {
    USART_SendData(USARTx, *Data);
    Data++;
  }
}


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • STM32接收字符串,数据中有00,应该如何处理?

相关文章

  • 2017-06-05 我的USBdriver已写好,我想让它通过安装程序预安装好,这样第一次插入USB设备时不要提示用户安装。高手请进。。分数不够可以再加
  • 2017-06-05 关于软件问题
  • 2017-06-05 用s5pv210跑linux3015无限卡在kernel解压完成阶段
  • 2017-06-05 CC1101能不能检测周围同频率信号强度?
  • 2017-06-05 哪位能提供Windows2000下对IO和MEMORY的读写的代码?
  • 2017-06-05 电表用的USB是OTG是host接口,主要功能是U盘读取数据记录还是现场iap升级
  • 2017-06-05 树莓派2modelb无法上网
  • 2017-06-05 还没搞定的问题,大家来研究研究呗?!
  • 2017-06-05 tftLCD屏图像左右移动,周期性白屏,求大神赐教!
  • 2017-06-05 我这里的一个老式笔记本,没有自带光驱,我给原来的硬盘格式华后,出现无法认识外接光驱的现象,应该如何解决?

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • CC1101能不能检测周围同频率信号强度?
    • 如何建立某个DNSZone的CNAME镜像?
    • 关于操作系统的分段和分页的疑问
    • C程序中内嵌汇编指令
    • 更换了DNS,48小时后仍然不能访问
    • 求ARM、DSP开发高手
    • 关于SOFTICE得安装,什么BOOT,SYSTEM,MANUAL方式得选择
    • PC与单片机通信
    • 使用路由器的设备如何进行互联网通信
    • 应用程序如何获取vxworks的bootline中的othero=参数

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有