打印
[C语言]

关于串口通讯问题

[复制链接]
619|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
串口通讯:波特率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数据到串口中间经过好几层的软件调用,可不是几句说清的

使用特权

评论回复
5
叶春勇| | 2020-6-10 19:37 | 只看该作者
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>

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

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

int main(int argc, char *argv[]) {
        uint8_t a[128],b[128],c[128];
        uint8_t aa[128],bb[128],cc[128];
        uint32_t num1=0;
        uint8_t index=0;
        printf("data=%s\n",data);
        index=sscanf(data,"%[^,],%[^,],%[^,]",a,b,c);
        sscanf(a,"%*[^:]:%s",aa);
        sscanf(b,"%*[^:]:%s",bb);
        sscanf(c,"%*[^:]:%s",cc);       
        printf("data1=%s,data2=%s,data3=%s\n",aa,bb,cc);       
        return 0;
}

解析的话用sscanf就可以了。




使用特权

评论回复
6
化骨龙|  楼主 | 2020-6-12 11:53 | 只看该作者
guojunhope 发表于 2020-6-10 18:40
你需要做的就是首先设定好自己的USART波特率,位数,奇偶校验这些,然后用printf函数,把需要的那个字符串 ...

哦哦  好的

使用特权

评论回复
7
化骨龙|  楼主 | 2020-6-12 11:54 | 只看该作者
sjnh 发表于 2020-6-10 18:52
你这个json数据到串口中间经过好几层的软件调用,可不是几句说清的

好吧

使用特权

评论回复
8
化骨龙|  楼主 | 2020-6-12 11:55 | 只看该作者
叶春勇 发表于 2020-6-10 19:37
解析的话用sscanf就可以了。

谢谢大佬  我自己整理一下头绪

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

10

主题

34

帖子

0

粉丝