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

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

[复制链接]

该用户从未签到

7

主题

35

回帖

211

积分

中级会员

积分
211
发表于 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 )
上面这种方法试了不管用,请问有没有好办法

回复 送花

使用道具 举报

  • TA的每日心情
    奋斗
    2023-12-5 13:56
  • 签到天数: 5 天

    [LV.2]偶尔看看I

    12

    主题

    256

    回帖

    1578

    积分

    超级版主

    积分
    1578
    发表于 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

    主题

    331

    回帖

    886

    积分

    荣誉版主

    积分
    886
    发表于 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, 2024-5-15 04:23 , Processed in 0.064424 second(s), 36 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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