找回密码
 立即注册
查看: 732|回复: 2

求助帖,串口接收数据的处理

[复制链接]
  • 打卡等级:偶尔看看I
  • 打卡总天数:19
  • 最近打卡:2025-06-11 15:10:27

9

主题

44

回帖

345

积分

中级会员

积分
345
发表于 2023-7-25 20:12:26 | 显示全部楼层 |阅读模式
https://www.stcaimcu.com/forum.php?mod=viewthread&tid=1387#lastpost
@版主
你好看了,二楼的例程我去搜了一下,看到的结果是SCANF是扫描键盘的,我现在的问题是,通过串口发来的字符串,我如何总结在一个变量中如LONG类型变量中,然后用IF ELSE 去判断。
if ((RX2_Buffer[2] != 0x2B)&&(RX2_Buffer[3] != 0x4F)&&(RX2_Buffer[4] != 0x4B))
{
        printf("AT+ENTM\r\n");
        delay_ms(200);                        //延时200MS
}
以上是我现在用的方式,有没有一种方式是
if (RX2_DATA1) == 600
{}
else if (RX2_DATA1) == 610
{}
,
,
,
,
如何把S2BUF这个CHAR的值合并起来呢?
百度上搜到的方法是移位,我试了一下好像不管用。
DATA = RX2_Buffer[0]<<24 +RX2_Buffer[2]<<16+RX2_Buffer[3]<<8+RX2_Buffer[4],
PRINTF("%LD",DATA )
上面这种方法试了不管用,请问有没有好办法

回复

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:41
  • 最近打卡:2025-06-17 08:53:27

25

主题

408

回帖

2533

积分

超级版主

积分
2533
发表于 2023-7-26 09:02:30 | 显示全部楼层
用范例测试看看:
求STC8系列4个串口同时通信的程序,Modbus 演示程序 - 串行口,DMA支持的4组串口 - 国芯论坛-STC全球32位8051爱好者互助交流社区 - STC全球32位8051爱好者互助交流社区  https://www.stcaimcu.com/forum.p ... &extra=page%3D1

电话:0513-55012946 QQ:2195591714  微信:  19952583740
回复 支持 反对

使用道具 举报 送花

11

主题

340

回帖

939

积分

荣誉版主

积分
939
发表于 2023-7-26 13:12:02 来自手机 | 显示全部楼层
本帖最后由 熊仔 于 2023-7-26 19:18 编辑

串口发送端你用字符发的还是HEX发?
如果是字符,直接用c语言的字符串处理函数。
这些都是C语言基本功。
比如发 1000\n结尾。
char buf[64];

把接收到的字节流全部存入数组buf。
判断到结尾符号\n 已经接收完了一行.然后把这一个数组放的字符串进行解码。string.h里面有函数。


还有一个最简单的方法,用sscanf函数。可以用来解码字符串。就是注意不要太长的字符串
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-6-17 11:28 , Processed in 0.172403 second(s), 61 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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