找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

从串口发送数据到终端为什么有时候能接收到数据有时候接收不到?

查看数: 2749 | 评论数: 2 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2021-7-17 19:34

正文摘要:

我用串口控制终端模块的灯,发送121(第一位1代表第一个模块,第三位1代表打开灯)和120(第三位0代表关灯),用串口调试助手发送到协调器,协调器发送到终端,但是发送一次没反应,需要连续点击发送很多次才有用, ...

回复

ID:954161 发表于 2021-7-18 09:16
本帖最后由 njtechlhr 于 2021-7-18 09:18 编辑
lkc8210 发表于 2021-7-18 00:55
有可能是osal_memcpy(buffer,pkt->cmd.Data,3);這句會不斷更新buffer

非常感谢lkc8210大佬,我按照您的分析和代码进行了改动,问题得到了解决(但是您的代码我在编译的时候出错,因为pkt->cmd.Data和‘1’的数据类型不同不能判断,下面是我稍作的改动)。但是有一个新的问题,就是灯的反应时间变长了,即发送指令过去要4秒或者5秒左右(有时候很快)才能做出反应这是为什么呢?

  1. uint8 buffer[3];
  2. static void GenericApp_MessageMSGCB( afIncomingMSGPacket_t *pkt )//接受处理函数
  3. {
  4.   uint8 BUFFER[3];
  5.   switch ( pkt->clusterId )
  6.   {
  7.     case GENERICAPP_CLUSTERID:
  8.             osal_memcpy(BUFFER,pkt->cmd.Data,3);
  9.             if(BUFFER[0]=='1')
  10.             {  
  11.             osal_memcpy(buffer,pkt->cmd.Data,3);
  12.             }
  13.             break;

  14.   }
  15. }
复制代码
ID:161164 发表于 2021-7-18 00:55
有可能是osal_memcpy(buffer,pkt->cmd.Data,3);這句會不斷更新buffer
  1. static void GenericApp_MessageMSGCB( afIncomingMSGPacket_t *pkt )//接受处理函数
  2. {
  3.    switch ( pkt->clusterId )
  4.    {
  5.     case GENERICAPP_CLUSTERID:
  6.                         if(pkt->cmd.Data=='1')//先验证资料再处理
  7.                         {
  8.                                 osal_memcpy(buffer,pkt->cmd.Data,3);
  9.                         }
  10.             break;
  11.    }
  12. }
复制代码

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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