LwIP+ STM32+HTTP
#include <RTL.h>
#include <rtthread.h>
#include <lwip/netdb.h>
#include <lwip/sockets.h>
#include <led.h>
// Http請求內容
static const char send_data[] =
"GET /v1.0/device/1949/sensor/2511/datapoints HTTP/1.1\r\n"
"U-ApiKey:[your apikey]\r\n"
"Host: api.yeelink.net\r\n\r\n";
void tcpclient(const char* host_name, int port)
{
(void)port;
char *recv_data;
int sock, bytes_received;
struct hostent *yeelink_host;
struct in_addr yeelink_ipaddr;
struct sockaddr_in yeelink_sockaddr;
recv_data = rt_malloc(1024);
if (recv_data == RT_NULL)
{
rt_kprintf("No memory\r\n" );
return;
}
// 第一步 DNS地址解析
rt_kprintf("calling gethostbyname with: %s\r\n", host_name);
yeelink_host = gethostbyname(host_name);
yeelink_ipaddr.s_addr = *(unsigned long *) yeelink_host->h_addr_list[0];
rt_kprintf("Yeelink IP Address:%s\r\n" , inet_ntoa(yeelink_ipaddr));
yeelink_sockaddr.sin_family = AF_INET;
yeelink_sockaddr.sin_port = htons(80 );
yeelink_sockaddr.sin_addr = yeelink_ipaddr;
rt_memset(&(yeelink_sockaddr.sin_zero), 0, sizeof(yeelink_sockaddr.sin_zero));
while(1)
{
// 第二步 建立套接字
if ((sock = socket(AF_INET, SOCK_STREAM, 0)) == -1)
{
rt_kprintf("Socket error\n");
rt_free(recv_data);
return;
}
// 第三步 連線yeelink
if (connect(sock, (struct sockaddr *)&yeelink_sockaddr, sizeof(struct sockaddr)) == -1)
{
rt_kprintf("Connect fail!\n");
lwip_close(sock);
rt_free(recv_data);
return;
}
// 第4步 傳送Http請求
send(sock,send_data,strlen(send_data), 0);
// 第5步 獲得Http響應
bytes_received = recv(sock, recv_data, 1024 - 1, 0);
recv_data[bytes_received] = '\0';
// 響應內容為 {"timestamp":"2013-11-19T08:50:11","value":1}
// 擷取“value”之後的內容
char* actuator_info = rt_strstr( recv_data , "\"value\"");
int offset = rt_strlen("\"value\":");
actuator_status = *(actuator_info + offset);
rt_kprintf("actuator status :%c\r\n",actuator_status);
// 獲得開關狀態,並設定LED指示燈
char actuator_status;
(actuator_status == '1')?rt_hw_led_on(0):rt_hw_led_off(0);
rt_memset(recv_data , 0 , sizeof(recv_data));
// 關閉套接字
closesocket(sock);
// 延時5S之後重新連線
rt_thread_delay( RT_TICK_PER_SECOND * 5 );
}
}
相關推薦
LwIP+ STM32+HTTP例程參考
#include <RTL.h> #include <rtthread.h>#include <lwip/netdb.h>#include <lwip/sockets.h>#include <led.h>// Http請求內容static cons
LwIP+ STM32+HTTP
#include <RTL.h> #include <rtthread.h> #include <lwip/netdb.h> #include <lwip/sockets.h> #include <led.
lwip之http伺服器
準備工作: 1、下載一個網頁檔案。 2、下載winhex,用winhex開啟網頁檔案,將網頁檔案轉換成c陣列。 具體操作如下: Edit--->Copy All------>C Source 這樣操作後,轉換成的c陣列就被複制到剪下板了。 開啟一個記事本就可以將陣列貼上進去。 lwip相關操作:
記LWIP除錯http server的Out of memory問題
最近在做IOT控制,主要通過LWIP的http server來做控制,實現手機和電腦瀏覽器控制檢視資料,其中用web server做實時的資料傳輸,遇到了切換網頁是有時會卡在跳轉處很久,有時會直接跳轉失敗,只能重新進入web,於是開啟LWIP的除錯發現卡死時輸出
LWIP network interface 網卡 初始化 以 STM32 為例子 後面會有 用 2G 或者4G 模塊 用 PPP撥號的 形式 虛擬出網卡 所以先以 這個為 前提
lan 函數 網卡 描述 ane details 我們 err img LWIP network interface 網卡 初始化 以 STM32 為例子 後面會有 用 2G 或者4G 模塊 用 PPP撥號的 形式 虛擬出網卡 所以先以 這個為
stm32+lwip(一):使用STM32CubeMX生成項目
phy .cn delay timers log 驅動開發 ref user 搭建 系列文章: stm32+lwip(一):使用STM32CubeMX生成項目 stm32+lwip(二):UDP測試 stm32+lwip(三):TCP測試 stm32+lwip(四):網頁服
[原創]基於OneNET雲實現STM32+K型熱電偶溫度HTTP實時上報
公司手頭有個專案,需要做溫控系統,溫度探頭引線長度至少10米,帶液晶顯示,還要無線上報,仔細研究下來,確定了 STM32+K型熱電偶+SIM800C方案 其實看著真的很簡單,完整做下來,真心。。。電路細節暫時不表,基本一路綠燈,軟體真心調的懷疑人生。記錄下來,以便有同仁指教 S
stm32+lwip的物聯網開發——學習過程(1)
注:本人拒絕重複教程內容,只寫下自認為自己有所工作的地方,哪怕只是很小的一點點。 十分歡迎大家與我討論,指出文中錯誤與不足之處。 2016.04.16下午13.23 由於一個IOT的專案,順理成章地學習stm32+lwip。本來先學stm32可能會好一些,
第39章 ETH—Lwip乙太網通訊—零死角玩轉STM32-F429系列
第39章 ETH—Lwip乙太網通訊 全套200集視訊教程和1000頁PDF教程請到秉火論壇下載:www.firebbs.cn 野火視訊教程優酷觀看網址:http://i.youku.com/firege 網際網路技術對人類社會的
基於STM32使用TCP/IP,HTTP協議連線雲伺服器個人總結
對於如何將底層測量資料上傳到雲伺服器這個問題我進行了許多嘗試,都以失敗告終。這讓我不得不仔細去了解TCP/IP協議。OSI是網路程式設計的經典模型,將構成網路的程式分成了7個層面。TCP/IP是第三層與第四層。第一層,物理層:例如我要使用STM32驅動ESP8266連線路由器
基於STM32封裝的HTTP請求
使用STM32封裝HTTP協議 通過封裝HTTP頭,向伺服器傳送GET請求,通過GET請求上傳資料,並獲取返回值 #include <string.h> #include <stdi
stm32 lwip的DHCP
stm32f107 lwip dhcp第一篇 DHCP自動獲取功能的實現概要 DHCP在電腦中經常用到,因為我們並不關心我們電腦的IP是多少 只要能連上網路就行了。在嵌入式的產品裝置中,DHCP用到的比較少,因為很多的操作是通過ip來進行的。除非那種有伺服器
STM32移植lwip 檢索目錄
本系列主要講述在STM32F207VCT6平臺上利用LWIP庫實現TCP/IP通訊協議。遵循的原則是由淺入深,循序漸進,重實踐。閱讀本文需要有一定的C語言基礎,和基本的STM32微控制器操作。例如如何在IDE上新建工程,STM32基本暫存器操作,STM32庫檔案架構等沒有及進行介紹,還望一些在這些方面不太熟悉
LwIP學習筆記——STM32 ENC28J60移植與入門
0.前言 去年(2013年)的整理了LwIP相關程式碼,並在STM32上“裸奔”成功。一直沒有時間深入整理,在這裡借博文整理總結。LwIP的移植過程細節很多,博文也不可能一一詳解個別部分只能點到為止。 【本文要點】 【1】不帶作業系統的LwIP移植,LwIP
STM32移植lwip之建立web伺服器
本篇目標:在之前能ping通pc機的工程基礎上搭建web伺服器,借鑑官方web伺服器的程式與網頁,能夠用pc機瀏覽器訪問web伺服器,並返回設定的網頁 材料準備: 除錯工具:用來除錯tcp連線下的資料接收(網路除錯助手) 測試瀏覽器:這裡使用的是Chr
STM32移植LWIP
本文使用的是STM32F207VCT6平臺,MII介面的RTL8201EL網路晶片,LWIP版本是1.4.1基礎工程是:已經實現了10ms定時,led燈1s閃爍,還有串列埠列印歡迎檢視本文所在的系列,S
6-STM32物聯網開發WIFI(ESP8266)+GPRS(Air202)系統方案升級篇-優化升級(安裝Apache (Web服務器)軟件,測試HTTP)
percent start 避免 協議 use xxxx 上位機 ... apache服務 為了和SDK升級保持協議一致,花了兩天時間實現了用LUA開發,MQTT+HTTP方式實現遠程升級 安裝Apache主要是為了實現通過HTTP下載資源 升級介紹: 1,用戶點擊檢
socket與http的區別
單獨 計算機 是否 tcp協議 操作 end 不定 請求 釋放 1、TCP連接 手機能夠使用聯網功能是因為手機底層實現了TCP/IP協議,可以使手機終端通過無線網絡建立TCP連接。TCP協議可以對上層網絡提供接口,使上層網絡數據的傳輸建立在“無差別”的網絡之上。 建立起
Http反響代理
web服務器 代理服務器 1 案例1:反向代理1.1 問題通過配置代理服務器,實現以下目標:代理服務器可以將遠程的Web服務器頁面緩存在本地代理服務器端口設置為80端口用戶通過訪問代理服務器即可獲得遠程Web服務器上的頁面內容遠程Web服務器對客戶端用戶是透明的利用緩存機制提高網站的響應速度1.2 方
Laravel 5.1 中的異常處理器和HTTP異常處理 abort()
錯誤日誌 exce ant upload 記錄 再次 .org splay don 原文 http://laravelacademy.org/post/1867.html 錯誤和異常是處理程序開發中不可回避的議題,在本地開發中我們往往希望能捕獲程序拋出的異常並將其顯示打印