久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2645|回復(fù): 2
打印 上一主題 下一主題
收起左側(cè)

從串口發(fā)送數(shù)據(jù)到終端為什么有時候能接收到數(shù)據(jù)有時候接收不到?

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:954161 發(fā)表于 2021-7-17 19:34 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
我用串口控制終端模塊的燈,發(fā)送121(第一位1代表第一個模塊,第三位1代表打開燈)和120(第三位0代表關(guān)燈),用串口調(diào)試助手發(fā)送到協(xié)調(diào)器,協(xié)調(diào)器發(fā)送到終端,但是發(fā)送一次沒反應(yīng),需要連續(xù)點擊發(fā)送很多次才有用,不知道原因(與波特率沒關(guān)系),請大佬們指點,下面是代碼:



協(xié)調(diào)器接收數(shù)據(jù)代碼:
static void rxCB(uint8 port,uint8 event)
{
  uint8 uartbuf[3];
  HalUARTRead(0,uartbuf,3);    //從串口讀取三個字節(jié)的數(shù)據(jù)到uartbuf中
  AF_DataRequest( &GenericApp_DstAddr, &GenericApp_epDesc,
                       GENERICAPP_CLUSTERID,
                       3,    //發(fā)送三個字節(jié)的數(shù)據(jù)
                       uartbuf,    //發(fā)送的數(shù)據(jù)內(nèi)容,其實就是從串口收到的3個字節(jié)的數(shù)據(jù)
                       &GenericApp_TransID,
                       AF_DISCV_ROUTE, AF_DEFAULT_RADIUS );
}

終端代碼:

uint8 buffer[3];
static void GenericApp_MessageMSGCB( afIncomingMSGPacket_t *pkt )//接受處理函數(shù)
{
   switch ( pkt->clusterId )
   {
    case GENERICAPP_CLUSTERID:
            osal_memcpy(buffer,pkt->cmd.Data,3);
            break;
   }
}
static void GenericApp_LED_Control(void)
{
   if(buffer[0]=='1')  //收到1則模塊1進(jìn)行判斷,收到2則模塊2進(jìn)行判斷
   {
      if((buffer[1] == '2') & (buffer[2] == '1'))//如果收到的是2和1,就點亮led1
      {
          HalLedSet(HAL_LED_1,HAL_LED_MODE_ON);
      }
      if((buffer[1] == '2') & (buffer[2] == '0'))//如果收到的是2和0,就熄滅led1
      {
          HalLedSet(HAL_LED_1,HAL_LED_MODE_OFF);//熄滅led1
      }
   }
}


而如果我把終端程序改成下面這樣就正常了,就會發(fā)送121立馬亮燈,發(fā)送120立馬熄滅,只不過我需要增加GenericApp_LED_Control這個函數(shù),所以我才改成上面那種,希望大佬指點一下原因:
uint8 buffer[3];
static void GenericApp_MessageMSGCB( afIncomingMSGPacket_t *pkt )//接受處理函數(shù)
{
   switch ( pkt->clusterId )
   {
    case GENERICAPP_CLUSTERID:
            osal_memcpy(buffer,pkt->cmd.Data,3);
            if(buffer[0]=='1')  //收到1則模塊1進(jìn)行判斷,收到2則模塊2進(jìn)行判斷
            {
               if((buffer[1] == '2') & (buffer[2] == '1'))//如果收到的是2和1,就點亮led1
               {
                   HalLedSet(HAL_LED_1,HAL_LED_MODE_ON);
               }
               if((buffer[1] == '2') & (buffer[2] == '0'))//如果收到的是2和0,就熄滅led1
               {
                   HalLedSet(HAL_LED_1,HAL_LED_MODE_OFF);//熄滅led1
               }
            }

            break;
   }
}

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:161164 發(fā)表于 2021-7-18 00:55 | 只看該作者
有可能是osal_memcpy(buffer,pkt->cmd.Data,3);這句會不斷更新buffer
  1. static void GenericApp_MessageMSGCB( afIncomingMSGPacket_t *pkt )//接受處理函數(shù)
  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. }
復(fù)制代碼
回復(fù)

使用道具 舉報

板凳
ID:954161 發(fā)表于 2021-7-18 09:16 | 只看該作者
本帖最后由 njtechlhr 于 2021-7-18 09:18 編輯
lkc8210 發(fā)表于 2021-7-18 00:55
有可能是osal_memcpy(buffer,pkt->cmd.Data,3);這句會不斷更新buffer

非常感謝lkc8210大佬,我按照您的分析和代碼進(jìn)行了改動,問題得到了解決(但是您的代碼我在編譯的時候出錯,因為pkt->cmd.Data和‘1’的數(shù)據(jù)類型不同不能判斷,下面是我稍作的改動)。但是有一個新的問題,就是燈的反應(yīng)時間變長了,即發(fā)送指令過去要4秒或者5秒左右(有時候很快)才能做出反應(yīng)這是為什么呢?

  1. uint8 buffer[3];
  2. static void GenericApp_MessageMSGCB( afIncomingMSGPacket_t *pkt )//接受處理函數(shù)
  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. }
復(fù)制代碼
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 99成人免费视频 | 亚洲精品国产一区 | 国产精品久久久久久久久久久免费看 | 日韩高清国产一区在线 | av一级 | 欧美福利一区 | 欧美一区二区三区在线视频 | 欧美视频在线观看 | 国产精品免费一区二区三区四区 | 国产在线第一页 | 热久久999| 国产一区二区三区久久 | 欧美日韩国产精品一区 | 一级特黄在线 | 日韩色在线 | 久久激情网| 龙珠z在线观看 | 精品少妇v888av | 欧美综合一区二区 | 中文字幕成人免费视频 | 亚洲精品日本 | 亚洲一区综合 | 国产精品久久久久久久久久妞妞 | 免费一区二区 | 操人视频在线观看 | 狠狠av| 日韩精品一区二区三区 | 亚洲毛片网站 | 欧美中文字幕在线观看 | 欧美日韩a| av网址在线 | 国产一级视频在线 | 美女黄网站 | 欧美一级欧美三级在线观看 | 日韩高清成人 | av喷水 | 天天综合久久 | 福利视频三区 | 国产精品18hdxxxⅹ在线 | 日韩免费视频 | 亚洲精品中文字幕在线观看 |