寫這篇文章是因爲 ESP8266 SDK 包自帶的 STNP 經常同步時間失敗,只能尋找新的辦法了。通過分析發現自己編寫TCP通信代碼就能拿到時間,下面我們來講述下其原理:
很多http網頁如果請求失敗會帶時間戳返回,可以利用這個原理來提取系統時間:
我下面的例子就是簡單的獲取時分秒,年月日裏就月份比較難獲取而已,有興趣自己弄下。
void ICACHE_FLASH_ATTR espconn_connect_cb(void *arg) {
char a;
os_printf("\n*********** espconn_connect_cb ***********\n");
if (tcp_client.state == ESPCONN_CONNECT) {
os_printf("send to server...\n");
a = '1'; //發任意數據就行了
espconn_sent(&tcp_client, &a, 1);
}
}
//espconn_recv_cb(),len=295
//HTTP/1.1 400 Bad Request
//Server: nginx
//Date: Wed, 08 May 2019 02:58:25 GMT
//Content-Type: text/html
//Content-Length: 150
//Connection: cl