欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4573|回復(fù): 8
收起左側(cè)

esp8226wifi模塊+單片機(jī)實(shí)現(xiàn)開關(guān)燈程序問題

[復(fù)制鏈接]
ID:747276 發(fā)表于 2020-5-10 18:56 | 顯示全部樓層 |閱讀模式
20黑幣
找了很多都用不了,郁悶的很大佬們可能都知道,手機(jī)發(fā)個數(shù)字‘1’給8226
然后8226發(fā)給單片機(jī)就不是‘1’這么簡單的一個字符
而是一串,+PID:1,02,1.........(大概是這個意思記不大清了應(yīng)該是十位)
反正就是最后一位才是發(fā)的實(shí)際數(shù)字

問題是單片機(jī)如何能接收得到這串字符?接到后 我想應(yīng)該是把這串字符存在一個數(shù)組變量里

存好后判斷這個  數(shù)組變量[9] 是1還是2還是3......

然后執(zhí)行相應(yīng)的功能

最后重置這個變量數(shù)組   準(zhǔn)備接收新的

邏輯應(yīng)該是這樣,但是俺不會,大佬們幫幫忙吧

回復(fù)

使用道具 舉報

ID:267719 發(fā)表于 2020-5-10 19:22 | 顯示全部樓層
把接收到的數(shù)據(jù)放到一個數(shù)組里,比如ReceiveBuffer[256].
當(dāng)判斷收到上一個字節(jié)500ms后沒有新的數(shù)據(jù)來,我們認(rèn)為收到了一幀數(shù)據(jù),當(dāng)前數(shù)據(jù)包結(jié)束。收到數(shù)據(jù)包后,用strstr函數(shù)去判斷是不是存在“+PID”,如果存在“+PID”表示是通訊來的數(shù)據(jù),不是命令或狀態(tài)數(shù)據(jù)。strstr會返回“+PID”位置的指針。如果指針為NULL,表示不存在“+PID”。
然后同樣用strstr函數(shù)找到“:”,strstr函數(shù)會返回冒號位置的指針。冒號往后的數(shù)據(jù)就是你收到的數(shù)據(jù)(可根據(jù)串口接收到的長度和冒號位置計算得到實(shí)際通訊信息長度)。

評分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復(fù)

使用道具 舉報

ID:577696 發(fā)表于 2020-5-10 20:47 | 顯示全部樓層
接受到的應(yīng)該是類似 +IPD,0,1:1 這樣的一串字符,冒號后面的才是你發(fā)送出去并且被它接收到的信息,所以讓單片機(jī)從冒號后面開始保存數(shù)據(jù)就可以了
回復(fù)

使用道具 舉報

ID:747276 發(fā)表于 2020-5-11 00:34 來自觸屏版 | 顯示全部樓層
carpcarey 發(fā)表于 2020-5-10 19:22
把接收到的數(shù)據(jù)放到一個數(shù)組里,比如ReceiveBuffer[256].
當(dāng)判斷收到上一個字節(jié)500ms后沒有新的數(shù)據(jù)來,我 ...

您好,長度是固定的有10個字節(jié),最后一位
  變量【9】就是實(shí)際發(fā)送的數(shù)字,我要怎么把字符串保存到一個數(shù)組里然后判斷最后一位是什么?


if(變量【9】==’1’)

       P1=~P1;
  }




希望能給出完整程序

就是接收了后,判斷其中一位到底是不是我設(shè)定好的,實(shí)際應(yīng)用是判斷最后一位,也可以是任何一位



if(變量【x】==’自定義的數(shù)字’)

     某個管腳輸出低電平
  }
回復(fù)

使用道具 舉報

ID:686782 發(fā)表于 2020-5-11 00:51 | 顯示全部樓層
善用串口通訊軟件,例如sscom,netassist等。可以實(shí)時檢查發(fā)送接收的數(shù)據(jù),對你理解這個過程很有幫助。
思路就是根據(jù)你esp8266返回的有效信息在哪一部分然后決定如何去處理這些數(shù)據(jù)。
esp8266在收到數(shù)據(jù)并轉(zhuǎn)發(fā)給單片機(jī)時的數(shù)據(jù)格式:+IPD,<client號>,<收到的字符長度>:收到的字符,比如+IPD,0,5:hello,其中+PID是固定的。你就可以根據(jù)這一點(diǎn)取到冒號后的數(shù)據(jù)存下來,前面那些無效字符就直接丟棄。
網(wǎng)上的很多我也試過,是不一定能用的。建議先使用串口助手等模擬發(fā)送,然后檢查AT指令發(fā)送是否成功,以及8266返回的信息是什么。

評分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復(fù)

使用道具 舉報

ID:420836 發(fā)表于 2020-5-11 07:16 | 顯示全部樓層
這里的人解釋得很清楚。 非常感謝!
回復(fù)

使用道具 舉報

ID:739441 發(fā)表于 2020-5-11 09:10 | 顯示全部樓層
用串口調(diào)試工具把數(shù)據(jù)接收回來,然后分析一下接收的數(shù)據(jù),你就會發(fā)現(xiàn)規(guī)律了,然后再通過程序處理。
回復(fù)

使用道具 舉報

ID:367369 發(fā)表于 2020-5-13 23:13 | 顯示全部樓層
你可以將他們換過來發(fā)送數(shù)據(jù),
服務(wù)器發(fā)送:
AT+CIPSEND=0,5\r\n      //0指連接的客戶端的編號,5指數(shù)據(jù)長度
接著再發(fā)hello
然后你的客戶端就會收到hello
這個是沒有數(shù)據(jù)頭的

回復(fù)

使用道具 舉報

ID:267719 發(fā)表于 2020-5-17 12:07 | 顯示全部樓層
小白拜拜 發(fā)表于 2020-5-11 00:34
您好,長度是固定的有10個字節(jié),最后一位
  變量【9】就是實(shí)際發(fā)送的數(shù)字,我要怎么把字符串保存到一個 ...

思路有了,代碼就是實(shí)現(xiàn)思路的過程。思路有了,代碼就不用寫了吧。。。
如果接收到的幀并不是+IPD,0,1:1,而是模組返回狀態(tài),或其他內(nèi)容,那我這種思路完全能避免出現(xiàn)獲取到錯誤的數(shù)據(jù)。
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

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