http://www.cnblogs.com/yangfengwu/p/8785516.html

先寫單片機端的程序
先把源碼和資料鏈接放到這里
鏈接: https://pan.baidu.com/s/1jpHZjW_7pQKNfN9G4B6ZjA 密碼:nhn3
咱先用TCP調試助手給單片機發指令,然后看一下回傳的數據
先做單片機程序,就在上一篇的基礎上增加功能

/**
* @brief WIFI模塊發送數據的命令
* @param id--發給哪一個連接的設備
* @param Length--數據的長度
* @param *SendData--數據
* @retval Overtime--接收命令的超時時間ms
* @example
**/
void ESPSendData(unsigned char id,unsigned char Length,unsigned char *SendData,int Overtime)
{
unsigned char Send [20]; int SendLength = 0; sprintf (Send, "AT+CIPSEND=%d,%d\r\n",(int)id, (int)Length); SendLength = 16; if(Length>=10){ SendLength = 17;} if(Length>=100){ SendLength = 18;} UartSendTI(Send,SendLength);//發送發送數據的命令 while(Overtime--) { if(UsartFlage == 1) { UsartFlage = 0; if(strstr(UsartReceive, ">"))//收到回復 { DelayMs(50); break; } } DelayMs(1); } if(Overtime>0)//沒有超時 { UartSendTI(SendData,Length); } }
這地方
SendLength = 16;
if(Length>=10){ SendLength = 17;} if(Length>=100){ SendLength = 18;}
是因為
AT+CIPSEND=0,8\r\n 數據少於10個 16個字符
AT+CIPSEND=0,12\r\n 數據少於10個 17個字符
AT+CIPSEND=0,103\r\n 數據少於10個 18個字符
主函數里面



也就增加了這一點內容..........
哦哦哦忘了,上次說的時候忘了....自己先用串口助手配置了

現在用手機連接模塊的無線--先用調試助手測試,即使是做項目也是先用調試助手測試...


還記得咱規定的命令不
啟動服務器成功以后就進入while(1) 循環,
接收到數據 0xaa,0x55,0x01,0x01 則發送自己的溫濕度數據 0xaa,0x55,溫度(16進制表示),濕度(16進制表示)
假設 接收到 0xaa,0x55,0x01,0x01 溫度10度,濕度50% 0xaa,0x55,,0x01,0x0a,0x32
這一節不加任何的校驗位,后期再加
接收到數據 0xaa,0x55,0x02,0x00 控制小燈熄滅
接收到數據 0xaa,0x55,0x02,0xff 控制小燈點亮

現在試一下

數據是 返回的數據是 aa 55 01 15 1C 15化成十進制是21度 1C是28% 溫度21度 相對濕度28%
說明可以采集了也能返回數據了,咱現在做C#采集端
說一下,自己想了想就不用委托和回調了,因為想起了自己以前學C#,感覺對於初學者而言怎樣簡單就怎樣做,不要去太追究規則和約束,等真正入門了再去考慮那些東西.
其實這節是看着高大上但是卻最是最簡單的....
咱前些日子寫到

現在增加幾句話

收到aa5501回復aa5501,對於為什么說不直接接收數據顯示,因為你要先確定好確實可以接收,用串口調試助手先測試,
可能有人直接就接收顯示了,也可以,不過以經驗來說,最好還是先這樣做,因為自己這樣上過當,反正C#的串口接收就必須用空閑中斷類似
的函數接收才行,因為每次接收到的不一定是一條數據..........
我就先連接我的手機的TCP服務器調試一下,關於軟件的使用可以看使用說明



現在自己的APP還是有點問題

會產生多余的發送任務,所以點擊了一下發送,發送了好幾次....................
上一版本的沒有這種情況,但是測試發現上一版本在5.1版本上任務卻不讓那樣用,,,,郁悶,后期再找解決方法
先不管它,先做現在的上位機
現在添加一個定時器,每隔1S發送一次命令





private void timer1_Tick(object sender, EventArgs e) { SendBuffer[0] = 0xaa; SendBuffer[1] = 0x55; SendBuffer[2] = 0x01; SendCnt = 3; }
現在測試一下是不是每隔1S發送一次數據
連接手機測試


好現在顯示溫濕度


自己用調試助手發的數據

現在可以連接模塊了

模塊初始化默認的網關是192.168.4.1,當然是可以修改的,后期再說

我吹口氣

也可以控制點燈


看了看我的單片機程序
采集溫濕度的命令是aa 55 01



http://www.cnblogs.com/yangfengwu/p/8871464.html
