1.在user_init(void)初始化好串口基本信息進入ESP8266_STA_Init();設置STA基本信息,利用軟件定時器連接wifi
- void ICACHE_FLASH_ATTR user_init(void)
- {
- uart_init(115200,115200);
- os_delay_us(1000);
- os_printf("\r\n==========================================\r\n");
- os_printf("\r\n ProjectName: %s\r\n",ProjectName);
- os_printf("\r\n==========================================\r\n");
- ESP8266_STA_Init();
- OS_Timer_1_Init_JX(1000,1);
- os_printf("===================user init is over====================");
- }
復制代碼 2.連接wifi后ESP8266獲得IP地址;初始化網絡連接
- void ICACHE_FLASH_ATTR ESP8266_NetCon_Init()
- {
- ST_NetCon.type = ESPCONN_UDP; //設置通信協議為UDP
- ST_NetCon.proto.udp = (esp_udp *)os_zalloc(sizeof(esp_udp)); // 開辟內存
- //此處設置本地端口號以及遠程設備的IP地址和端口號,因為ESP8266設置為客戶端
- ST_NetCon.proto.udp->local_port = 8266;
- ST_NetCon.proto.udp->remote_port = 8888;
- ST_NetCon.proto.udp->remote_ip[0]=192;
- ST_NetCon.proto.udp->remote_ip[1]=168;
- ST_NetCon.proto.udp->remote_ip[2]=1;
- ST_NetCon.proto.udp->remote_ip[3]=8;
- Uart_arg = &ST_NetCon;//把遠程設備的IP地址和端口號地址賦值給Uart_arg,方便在串口函數中使用
- //注冊回調函數
- espconn_regist_recvcb(&ST_NetCon,ESP8266_WIFI_Recv_cb);
- espconn_regist_sentcb(&ST_NetCon,ESP8266_WIFI_Sent_cb);
- //初始化UDP通信
- espconn_create(&ST_NetCon);
- //客戶端主動向服務器發送數據
- espconn_send(&ST_NetCon,"Hello,I am ESP8266\n",os_strlen("Hello,I am ESP8266\n"));
- }
復制代碼 3.編寫接收網絡數據【ESP8266_WIFI_Recv_cb()】和發送數據【ESP8266_WIFI_Sent_cb】的回調函數
4.在uart.c文件下定義結構體struct espconn *Uart_arg;并在uart.h文件下定義好extern struct espconn *Uart_arg;
5.在uart.c文件下的uart_recvTask(os_event_t *events)函數中編寫串口接收數據后的操作。()
- LOCAL void ICACHE_FLASH_ATTR ///////
- uart_recvTask(os_event_t *events)
- {
- ....... //
- //從串口接收數據后在此編寫你要操作的程序
- {
- os_printf("\nESP8266 Uart0 Recieve Word:\n");
- uart0_sendStr(Uart0_Buffer); //串口打印從串口接收到的數據
- espconn_send(Uart_arg,Uart0_Buffer,os_strlen(Uart0_Buffer)); //發送數據給遠端設備
- .........
- }
- }
復制代碼 6.結果
51hei圖片20200905010021.png (235.89 KB, 下載次數: 89)
下載附件
2020-9-5 01:00 上傳
具體例程在附件里
19STA_UDP_Client.7z
(3.24 MB, 下載次數: 21)
2020-9-5 01:46 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|