yywf2021544699 发表于 2024-6-16 18:13:10

各位大神帮我看一下,我在读串口寄存器的时候好像把要发送的数据读出来了

本帖最后由 yywf2021544699 于 2024-6-16 18:16 编辑

我在读串口寄存器的时候好像把要发送的数据读出来了,我的温度数据要通过串口发送给WiFi模块上传到物联网,然后读取网站下发的反馈,但是不知道为啥读取的老是发送的数据,我看数据手册

void Esp_Red(){sbuf是有两个寄存器,一个负责接收,一个负责发送的。第一张图片里面左上角是读取的接收的数据,第二章图片是温度数据。照理来说第一张图片显示的是物联网平台反馈的数据,而不是温度数据。我都是用库来操作的发送数据用的是PrintString2。接收的函数是下面这一段,
                u8 i;
                if(COM2.RX_TimeOut > 0)                //��ʱ����
                {
                        if(--COM2.RX_TimeOut == 0)
                        {
                              if(COM2.RX_Cnt > 0)
                              {
                                        Dat1_red.cnt =COM2.RX_Cnt;
                                        for(i=0; i<COM2.RX_Cnt; i++)   Dat1_red.Dat_Red=RX2_Buffer;
                                        redsign =1;
                              }
                              Esp_manage( &Dat1_red);
                              COM2.RX_Cnt = 0;
                        }
                }
      }

求解答

乘风飞扬 发表于 2024-6-17 10:39:16

提供信息有限不好判断,几行代码里面发现一个问题:
for(i=0; i<COM2.RX_Cnt; i++)   Dat1_red.Dat_Red=RX2_Buffer;
如果是多字节数据转移应该用指针或者数组吧,例如:
for(i=0; i<COM2.RX_Cnt; i++)   Dat1_red.Dat_Red=RX2_Buffer;

yywf2021544699 发表于 2024-6-17 16:17:36

本帖最后由 yywf2021544699 于 2024-6-17 16:18 编辑

乘风飞扬 发表于 2024-6-17 10:39
提供信息有限不好判断,几行代码里面发现一个问题:
for(i=0; i
我原来的代码是这样的,复制过来搞错了
/c

乘风飞扬 发表于 2024-6-17 17:26:14

yywf2021544699 发表于 2024-6-17 16:17
我原来的代码是这样的,复制过来搞错了

通过硬件仿真看看程序运行情况
https://www.stcaimcu.com/plugin.php?id=x7ree_v:x7ree_v&code_7ree=1&id_7ree=63

yywf2021544699 发表于 2024-6-17 22:03:44

乘风飞扬 发表于 2024-6-17 17:26
通过硬件仿真看看程序运行情况
https://www.stcaimcu.com/plugin.php?id=x7ree_v:x7ree_v&code_7ree=1&id ...

谢谢,没有仿真器能用吗

乘风飞扬 发表于 2024-6-18 08:54:58

yywf2021544699 发表于 2024-6-17 22:03
谢谢,没有仿真器能用吗

普通的USB转串口工具就可以仿真
页: [1]
查看完整版本: 各位大神帮我看一下,我在读串口寄存器的时候好像把要发送的数据读出来了