找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

帖子
查看: 1543|回復(fù): 12
收起左側(cè)

怎么跳出這個(gè)C語言WHILE循環(huán)?

[復(fù)制鏈接]
ID:1011004 發(fā)表于 2022-3-28 14:36 | 顯示全部樓層 |閱讀模式
while(strx==NULL)
    {
        Clear_Buffer();
        printf("AT\r\n");
        delay_ms(300);
        strx=strstr((const char*)RxBuffer,(const char*)"OK");//返回OK
    }
這個(gè)一直接收不到正確信息,就一直在這里怎么判斷是哪里出錯(cuò)了?
回復(fù)

使用道具 舉報(bào)

ID:401564 發(fā)表于 2022-3-28 15:04 | 顯示全部樓層
可以用break跳出
也可以在判斷條件那加條件,比如判斷次數(shù)或者判斷時(shí)間
回復(fù)

使用道具 舉報(bào)

ID:121859 發(fā)表于 2022-3-28 15:08 | 顯示全部樓層
加一個(gè)計(jì)數(shù)變量,比如如果10次讀不到正確數(shù)據(jù)就強(qiáng)退。
回復(fù)

使用道具 舉報(bào)

ID:1011004 發(fā)表于 2022-3-28 15:31 | 顯示全部樓層
Y_G_G 發(fā)表于 2022-3-28 15:04
可以用break跳出
也可以在判斷條件那加條件,比如判斷次數(shù)或者判斷時(shí)間

大佬,我用的是STM32芯片bc26模塊,關(guān)于用AT指令初始化設(shè)備while(strx==NULL)這種的都是這樣,我想知道怎么判斷是哪里出錯(cuò)了
回復(fù)

使用道具 舉報(bào)

ID:1013716 發(fā)表于 2022-3-28 16:17 | 顯示全部樓層
一點(diǎn)拙見
1:strx是否定義char strx*
2:返回的"OK"是否區(qū)分大小寫
3:調(diào)試監(jiān)視RxBuffer是否有數(shù)據(jù)
4:能否確認(rèn)連接是否正常已連接上

回復(fù)

使用道具 舉報(bào)

ID:401564 發(fā)表于 2022-3-28 16:18 | 顯示全部樓層
葉知葉 發(fā)表于 2022-3-28 15:31
大佬,我用的是STM32芯片bc26模塊,關(guān)于用AT指令初始化設(shè)備while(strx==NULL)這種的都是這樣,我想知道怎 ...

循環(huán)里面不是有300mS的延時(shí)嗎?
串口初始化10次或者其它次數(shù),不成功就結(jié)束操作了,并作出錯(cuò)誤的對(duì)應(yīng)操作不就行了
要不然呢?總不能初始化不成功就一直卡在這吧
回復(fù)

使用道具 舉報(bào)

ID:887371 發(fā)表于 2022-3-29 09:02 | 顯示全部樓層
葉知葉 發(fā)表于 2022-3-28 15:31
大佬,我用的是STM32芯片bc26模塊,關(guān)于用AT指令初始化設(shè)備while(strx==NULL)這種的都是這樣,我想知道怎 ...

驗(yàn)證模塊和電腦通訊功能:
      用串口助手發(fā)送"AT"給bc26模塊,bc26模塊應(yīng)該應(yīng)答"OK"字符串。
驗(yàn)證mcu和電腦通訊功能:
      RxBuffer[]中有字符串"OK"就能跳出。
      假如RxBuffer是串口的接收緩存,用串口助手發(fā)送"OK"來模擬bc26模塊的應(yīng)答指令。
回復(fù)

使用道具 舉報(bào)

ID:61883 發(fā)表于 2022-3-29 09:22 | 顯示全部樓層
break;
回復(fù)

使用道具 舉報(bào)

ID:372615 發(fā)表于 2022-3-29 13:01 | 顯示全部樓層
goto?可以試試
回復(fù)

使用道具 舉報(bào)

ID:1013716 發(fā)表于 2022-3-29 13:54 | 顯示全部樓層
1.首先排除下連接是否沒有問題 ,更換排線。
2.確認(rèn)串口助手軟件的兼容問題,是否可以正常通訊,不能的話使用其他串口助手或者其他版本。
回復(fù)

使用道具 舉報(bào)

ID:1011004 發(fā)表于 2022-3-29 15:08 | 顯示全部樓層
謝謝各位大佬,目前已解決,是因?yàn)榇?沒設(shè)置好導(dǎo)致
回復(fù)

使用道具 舉報(bào)

ID:1011864 發(fā)表于 2022-3-29 16:35 | 顯示全部樓層
接收不到消息就對(duì)了呀,沒有消息是一直在循環(huán)里面跳不出來
回復(fù)

使用道具 舉報(bào)

ID:401564 發(fā)表于 2022-3-29 22:36 | 顯示全部樓層
葉知葉 發(fā)表于 2022-3-29 15:08
謝謝各位大佬,目前已解決,是因?yàn)榇?沒設(shè)置好導(dǎo)致

這不是什么串口設(shè)置的問題
個(gè)人認(rèn)為,除了主函數(shù)的while,程序中其它的都要一個(gè)跳出死循環(huán)的機(jī)制,要么是檢測(cè)時(shí)間,要么是檢測(cè)次數(shù),或者是看門狗
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表