本文來源電子發(fā)燒友社區(qū),作者:xiaopeng, 帖子地址:https://bbs.elecfans.com/jishu_2308707_1_1.html
前言
上一篇帖子已經(jīng)完成了多線程操作和LCD的基本驅(qū)動,本篇在上一篇的工程基礎(chǔ)上加上wifi功能,實現(xiàn)實時天氣的獲取。
新建wifi處理任務(wù)
既然是基于OpenHarmony的程序開發(fā),自然要發(fā)揮多線程的優(yōu)勢。所以對于相對獨立的程序最好是單獨建立一個獨立的任務(wù),方便管理。
1、新建源文件TaskWifi.c
該源文件處理兩件事情:
① 創(chuàng)建wifi任務(wù)
②處理wifi聯(lián)網(wǎng),連接服務(wù)器,數(shù)據(jù)收發(fā)等與wifi相關(guān)的所以事情
詳細(xì)如下:
2、新建weather.c和weather.h
weather.c負(fù)責(zé)所以函數(shù)的具體實現(xiàn),主要包括如下:
weather.h是其對應(yīng)的函數(shù)聲明和相關(guān)宏定義,如下:
3、添加wifi_connect.c文件
該文件可以直接從官方wifi例程里復(fù)制過來,wifi目前只能連接無密碼的wifi熱點,所以需要進(jìn)行一處修改:
4、修改BUILD.gn文件
每次新增源文件都需要將源文件添加到BUILD.gn文件中,如下
socket tcp數(shù)據(jù)收發(fā)
socket是在應(yīng)用層和傳輸層之間的一個抽象層,它把TCP/IP層負(fù)責(zé)復(fù)雜的操作抽象為幾個簡單的接口供應(yīng)用層調(diào)用已以實現(xiàn)進(jìn)程在網(wǎng)絡(luò)中的通信。
主要接口如下:
socket():創(chuàng)建socket
bind():綁定socket到本地地址和端口,通常由服務(wù)器調(diào)用
listen():TCP專用,開啟監(jiān)聽模式
accept():TCP專用,服務(wù)器等待客戶端連接,一般是阻塞態(tài)
connect():TCP專用,客戶端主動連接服務(wù)器
send():TCP專用,發(fā)送數(shù)據(jù)
recv():TCP專用,接收數(shù)據(jù)
sendto():UDP專用,發(fā)送數(shù)據(jù)到指定的IP地址和端口
recvfrom():UDP專用,接收數(shù)據(jù),返回數(shù)據(jù)遠(yuǎn)端的IP地址和端口
closesocket():關(guān)閉socket
本文主要用到其中的四個:
socket()
send()
recv()
closesocket()
本文發(fā)送和接收都使用阻塞的方式進(jìn)行。
發(fā)送:
static int send_data_to_server(char* data, int len)
{
int ret;
ret = send(sock, data, len, 0);
if(ret == -1)
{
printf("data send failrn");
}
return ret;
}
接收:
void data_recv(char* buffer)
{
int ret;
uint16_t recv_len = 0;
while(1)
{
ret = recv(sock, buffer + recv_len, sizeof(buffer), 0);
if (ret > 0)
{
recv_len += ret;
}
else
{
buffer[recv_len] = '';
printf("rec len:%drn,recv data:%srn", recv_len, buffer);
break;
}
}
}
數(shù)據(jù)接收的時候調(diào)用recv函數(shù)時,第三個參數(shù)不能是表達(dá)式,如果是表達(dá)式,則只能讀回來四個字節(jié),后面再調(diào)用recv函數(shù)讀回來的長度都是0,這一點還不知道原因。
效果展示
接收到的天氣數(shù)據(jù)目前暫時通過uart打印,數(shù)據(jù)如下:
后面將對這些數(shù)據(jù)進(jìn)行解析和顯示。
-
開鴻智谷
+關(guān)注
關(guān)注
2文章
145瀏覽量
1562 -
NiobeU4
+關(guān)注
關(guān)注
3文章
31瀏覽量
633
發(fā)布評論請先 登錄
【匯思博SEEK100開發(fā)板試用體驗】04 網(wǎng)絡(luò)連接及獲取和風(fēng)天氣數(shù)據(jù)
開鴻開發(fā)板深度體驗:從開源鴻蒙開發(fā)到AI場景實踐

【潤開鴻HH-SCDAYU800A開發(fā)板試用體驗】潤開鴻HH-SCDAYU800A開發(fā)板(二)
基于RK3576處理器,米爾RK3576開發(fā)板免費試用

搭載OpenHarmony操作系統(tǒng),視美泰SC-3568HA開發(fā)板免費試用

基于RK處理器,創(chuàng)龍TL3562-MiniEVM開發(fā)板試用體驗

性能強悍!合眾HZ-RK3568開發(fā)板試用體驗

有獎丨米爾 NXP i.MX91開發(fā)板免費試用來啦

雷卯收集4G/WIFI無線傳輸產(chǎn)品開發(fā)板

免費丨米爾 STM32MP257開發(fā)板有獎試用

有獎丨米爾 瑞芯微YR3562開發(fā)板免費試用

有獎丨米爾 瑞芯微RK3576開發(fā)板免費試用

評論