[C语言] 关于串口通讯问题

[复制链接]
 楼主| 化骨龙 发表于 2020-6-8 18:58 | 显示全部楼层 |阅读模式
串口通讯:波特率115200  8bit  N校验 1停止位
单片机与单片机通讯
比如我要发送/接收这种类型的数据(我的理解这个是ASCII码),然后提取的数据是10,control,-1
{ "add_time_limit":10,"name":"control","set_turns_number":-1}
要怎么实现?有没有大佬给讲解一下?最好是给个例程
我的理解{为包头 ,  }为包尾 中间的数据

然后有一个大佬回复我说这个json,我百度看了一下确实是这种类型的,但还是没搞懂这个
 楼主| 化骨龙 发表于 2020-6-9 09:07 | 显示全部楼层
guojunhope 发表于 2020-6-10 18:40 | 显示全部楼层
你需要做的就是首先设定好自己的USART波特率,位数,奇偶校验这些,然后用printf函数,把需要的那个字符串打印到串口就好
sjnh 发表于 2020-6-10 18:52 | 显示全部楼层
你这个json数据到串口中间经过好几层的软件调用,可不是几句说清的
叶春勇 发表于 2020-6-10 19:37 | 显示全部楼层
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <stdint.h>

  4. /* run this program using the console pauser or add your own getch, system("pause") or input loop */

  5. uint8_t data[]="add_time_limit:10,name:control,set_turns_number:-1";

  6. int main(int argc, char *argv[]) {
  7.         uint8_t a[128],b[128],c[128];
  8.         uint8_t aa[128],bb[128],cc[128];
  9.         uint32_t num1=0;
  10.         uint8_t index=0;
  11.         printf("data=%s\n",data);
  12.         index=sscanf(data,"%[^,],%[^,],%[^,]",a,b,c);
  13.         sscanf(a,"%*[^:]:%s",aa);
  14.         sscanf(b,"%*[^:]:%s",bb);
  15.         sscanf(c,"%*[^:]:%s",cc);       
  16.         printf("data1=%s,data2=%s,data3=%s\n",aa,bb,cc);       
  17.         return 0;
  18. }

解析的话用sscanf就可以了。




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| 化骨龙 发表于 2020-6-12 11:53 | 显示全部楼层
guojunhope 发表于 2020-6-10 18:40
你需要做的就是首先设定好自己的USART波特率,位数,奇偶校验这些,然后用printf函数,把需要的那个字符串 ...

哦哦  好的
 楼主| 化骨龙 发表于 2020-6-12 11:54 | 显示全部楼层
sjnh 发表于 2020-6-10 18:52
你这个json数据到串口中间经过好几层的软件调用,可不是几句说清的

好吧
 楼主| 化骨龙 发表于 2020-6-12 11:55 | 显示全部楼层
叶春勇 发表于 2020-6-10 19:37
解析的话用sscanf就可以了。

谢谢大佬  我自己整理一下头绪
您需要登录后才可以回帖 登录 | 注册

本版积分规则

10

主题

34

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部

10

主题

34

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部