色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

【HarmonyOS HiSpark Wi-Fi IoT 套件試用連載】八:天氣顯示

開發板試用精選 ? 來源:開發板試用 ? 作者:電子發燒友論壇 ? 2022-11-02 14:38 ? 次閱讀
本文來源電子發燒友社區,作者:李元江, 帖子地址:https://bbs.elecfans.com/jishu_2026438_1_1.html


上一次帖子,已經通過網絡獲取天氣數據,但是還沒顯示到顯示屏上。今天的帖子我寫的是關于如何取模天氣圖片,并顯示天氣圖標和天氣數據。
一、ssd1306顯存填充
顯示板使用的OLED驅動芯片為SSD1306,我們來看看這款芯片的顯存和該顯存填充方式。下面是從SSD1303芯片手冊上的截圖,可以看得出它的顯存是大小為128*64bit的RAM,并且分成為8頁,PAGE0-PAGE7。顯示板像素點大小為128*64,所以一個像素點對應RAM中的1bit。

230447jmohlb5bims3y834.jpg
往RAM的某一位寫入1或者0,該位對應的像素點就顯示亮點或者不顯示。但是它是按照什么順序寫入數據的。下面也是從芯片手冊上的截圖。
230515enb3nrz6j3by6y3b.jpg
可以看得出RAM填充順序了 ,寫入一個字節數據時,最低位數據寫入一頁中最上面那行,最高位寫入一頁中最下面那行。這樣,使用取模軟件取模圖片或者字符時,我們才能知道按照什么順序取模。之后再寫相應代碼,按照順序把取模數據寫入RAM中。

二、天氣圖標取模
首先當然是先在網絡下載我們需要的天氣圖標,大小看你像顯示多大區域的圖標,我的是48*48大小圖標,在OLED上顯示大小也是48*48。
230801gqbtzvkkbz5sogbf.jpg

我使用的是下面這款取模軟件,我覺得圖標取模不太好,不知道大家有沒有推薦的。需要根據SSD1306進行取模軟件的設置。比較重要的是取模方式的選擇,這是跟SSD1306顯示填充順序對應的,我們需要選擇列行式。其他數據點陣選擇48,自定義格式選擇C51。
230759z8lsvl6ifg7214xv.jpg

選擇晴圖標,生成如下數組。

230757x7a019cqogigi6if.jpg
上面的小花就是太陽圖標,是有點丑,先湊合用吧。

二、軟件設計
1、顯示天氣圖標
我們已經按照SSD1306顯存填充順序,取模好圖片數據,接下來按照順序把數據寫入RAM就行了,代碼如下。
  1. typedef enum
  2. {
  3. QINGLOGO =0,
  4. YINGLOGO,
  5. DUOYULOGO,
  6. YULOGO,
  7. LEIYULOGO,
  8. XUELOGO,
  9. }WEATHER_TYPE;
  10. void OLED_ShowWeather(uint8_t x,uint8_t y,WEATHER_TYPE type)
  11. {
  12. unsigned char (*temp)[48];
  13. //if(type ==qinglogo )
  14. //temp=Qing48;
  15. switch(type)
  16. {
  17. case QINGLOGO: temp=Qing48;break;
  18. case YINGLOGO: temp=Yin48;break;
  19. case YULOGO: temp=Yu48;break;
  20. case LEIYULOGO:temp=LeiYu48;break;
  21. case DUOYULOGO:temp=DuoYun48;break;
  22. case XUELOGO: temp=Xue48;break;
  23. default :
  24. temp=Qing48;
  25. break;
  26. }
  27. //OledSetPosition(x,y);
  28. for(uint8_t i=0;i<6;i++){
  29. OledSetPosition(x,y+i);
  30. for(uint8_t j = 0;j<48;j++){
  31. WriteData(temp[i][j]);
  32. }
  33. }
  34. }
復制代碼
2、按鍵任務
OLED顯示板上的兩個按鍵,主要用于界面切換、獲取實時時間、天氣數據。增加了按鍵任務,主要進行這兩個按鍵的處理。右邊按鍵,按下后可以切換界面,現在設置有四個界面。在時間顯示界面按下左鍵,會獲取實時時間。在天氣顯示界面,按下左鍵會獲取實時天氣。
  1. #include
  2. #include
  3. #include
  4. #include "ohos_init.h"
  5. #include "cmsis_os2.h"
  6. #include "wifiiot_gpio.h"
  7. #include "wifiiot_gpio_ex.h"
  8. #include "wifiiot_pwm.h"
  9. #include "wifiiot_adc.h"
  10. ?
  11. #include "oled_ssd1306.h"
  12. ?
  13. #defineanalog_KEY_CHAN_NAME WIFI_IOT_ADC_CHANNEL_2
  14. ?
  15. typedef enum{
  16. TIMESCREEN=0,
  17. NOWSCREEN,
  18. TOSCREEN,
  19. ATOSCREEN,
  20. } SCREEN_STATUS;
  21. extern SCREEN_STATUS Now_Screen ;
  22. extern SCREEN_STATUS Last_Screen ;
  23. ?
  24. typedef enum{
  25. GET_NORMAL =0 ,
  26. GET_PROPRESS,
  27. GET_SUC,
  28. GET_FAIL,
  29. }GET_STATUS;
  30. ?
  31. GET_STATUS Get_Status = GET_NORMAL;
  32. GET_STATUS Last_Get_Status = GET_NORMAL;
  33. ?
  34. extern void getNtpTime(void);
  35. extern bool getWeather(void);
  36. ?
  37. static float ConvertToVoltage(unsigned short data)
  38. {
  39. return (float)data * 1.8 * 4 / 4096; /* adc code equals: voltage/4/1.8*4096*/
  40. }
  41. ?
  42. static void KeyTask(void *arg)
  43. {
  44. (void)arg;
  45. unsigned short data = 0;
  46. ?
  47. GpioInit();
  48. static bool keyflag = false;
  49. while(1)
  50. {
  51. AdcRead(ANALOG_KEY_CHAN_NAME, &data, WIFI_IOT_ADC_EQU_MODEL_4, WIFI_IOT_ADC_CUR_BAIS_DEFAULT, 0);
  52. float voltage = ConvertToVoltage(data);
  53. ?
  54. if((voltage>0.45 && voltage<0.65)&&(!keyflag))
  55. {
  56. keyflag = true;
  57. //OledShowString(16,7,"Sync time...",1);
  58. //getNtpTime();
  59. //OledFillScreen(0);
  60. switch (Now_Screen){
  61. case TIMESCREEN:
  62. //OledShowString(16,7,"Sync time...",1);
  63. Get_Status = GET_PROPRESS;
  64. getNtpTime();
  65. //OledFillScreen(0);
  66. Get_Status = GET_SUC;
  67. break;
  68. case NOWSCREEN:
  69. //OledShowString(0,7,"Get Weather...",1);
  70. Get_Status = GET_PROPRESS;
  71. if(getWeather())
  72. //OledFillScreen(0);
  73. Get_Status = GET_SUC;
  74. else
  75. {
  76. //OledShowString(0,7,"Get fail...",1);
  77. Get_Status = GET_FAIL;
  78. }
  79. break;
  80. case TOSCREEN:
  81. Get_Status = GET_PROPRESS;
  82. if(getWeather())
  83. Get_Status = GET_SUC;
  84. else
  85. {
  86. Get_Status = GET_FAIL;
  87. }
  88. break;
  89. case ATOSCREEN:
  90. Get_Status = GET_PROPRESS;
  91. if(getWeather())
  92. Get_Status = GET_SUC;
  93. else
  94. {
  95. Get_Status = GET_FAIL;
  96. }
  97. break;
  98. ?
  99. default:
  100. break;
  101. }
  102. }
  103. else if((voltage>0.9 && voltage<1)&&(!keyflag))
  104. {
  105. keyflag = true;
  106. Now_Screen ++;
  107. if(Now_Screen > ATOSCREEN)
  108. {
  109. Now_Screen = TIMESCREEN;
  110. }
  111. }
  112. ?
  113. if((!(voltage>0.45 && voltage<0.65)) && (!(voltage>0.9 && voltage<1))) {
  114. keyflag = false;
  115. }
  116. ?
  117. usleep(300000);
  118. }
  119. }
  120. ?
  121. static void KeyTaskHandle(void)
  122. {
  123. osThreadAttr_t attr;
  124. attr.name = "KeyTask";
  125. attr.attr_bits = 0U;
  126. attr.cb_mem = NULL;
  127. attr.cb_size = 0U;
  128. attr.stack_mem = NULL;
  129. attr.stack_size = 4096;
  130. attr.priority = osPriorityNormal+2;
  131. ?
  132. if (osThreadNew(KeyTask, NULL, &attr) == NULL) {
  133. printf("[KeyTaskHandle] Falied to create KeyTask!n");
  134. }
  135. }
  136. APP_FEATURE_INIT(KeyTaskHandle);
復制代碼
3、 OLED任務修改
修改oled_demo.c內容。增加頁面切換,獲取時間、天氣數據情況提示,顯示天氣數據和天氣圖標。

  1. typedef enum{
  2. TIMESCREEN=0,
  3. NOWSCREEN,
  4. TOSCREEN,
  5. ATOSCREEN,
  6. } SCREEN_STATUS;
  7. SCREEN_STATUS Now_Screen = TIMESCREEN;
  8. SCREEN_STATUS Last_Screen = TIMESCREEN;
  9. ?
  10. typedef enum{
  11. GET_NORMAL =0 ,
  12. GET_PROPRESS,
  13. GET_SUC,
  14. GET_FAIL,
  15. }GET_STATUS;
  16. extern GET_STATUS Get_Status ;
  17. extern GET_STATUS Last_Get_Status ;
  18. ?
  19. static uint8_t i=0;
  20. ?
  21. static void TimeScreenDisp(void)
  22. {
  23. //OledShow
  24. rtc_time_t mData;
  25. OLED_ShowCHinese(0,3,0);//溫
  26. OLED_ShowCHinese(16,3,2);//度
  27. OledShowChar(32,3,':',2);
  28. sprintf((char *)TimeStr,"%02d",
  29. (uint32_t)temperature);
  30. OledShowString(40,3,(char *)TimeStr,2);
  31. OLED_ShowCHinese(64,3,1);//濕
  32. OLED_ShowCHinese(80,3,2);//度
  33. OledShowChar(96,3,':',2);
  34. sprintf((char *)TimeStr,"%02d",
  35. (uint32_t)humidity);
  36. OledShowString(104,3,(char *)TimeStr,2);
  37. covUnixTimeStp2Beijing(timedata, &mData);
  38. sprintf((char *)TimeStr,"%04d-%02d-%02d",
  39. mData.ui8Year, mData.ui8Month, mData.ui8DayOfMonth);
  40. OledShowString(24,0,(char *)TimeStr,1);
  41. sprintf((char *)TimeStr,"%02d:%02d:%02d",
  42. mData.ui8Hour,mData.ui8Minute,mData.ui8Second);
  43. OledShowString(32,1,(char *)TimeStr,1);
  44. ?
  45. if(Get_Status != Last_Get_Status)
  46. {
  47. Last_Get_Status = Get_Status;
  48. switch ( Get_Status)
  49. {
  50. case GET_NORMAL:
  51. break;
  52. case GET_PROPRESS:
  53. OledShowString(16,7,"Sync time...",1);
  54. break;
  55. case GET_SUC:
  56. OledClearString(16,7,"Sync time...",1);
  57. OledShowString(16,7,"Sync Suc...",1);
  58. break;
  59. case GET_FAIL:
  60. OledClearString(16,7,"Sync time...",1);
  61. OledShowString(16,7,"Sync fail...",1);
  62. break;
  63. default:
  64. break;
  65. }
  66. }
  67. }
  68. ?
  69. static void DispWeather(uint8_t x, uint8_t y ,uint8_t code){
  70. switch(code)
  71. {
  72. case 0:
  73. case 1:
  74. case 2:
  75. case 3:
  76. OLED_ShowWeather(x,y,QINGLOGO);
  77. break;
  78. case 4:
  79. case 5:
  80. case 6:
  81. case 7:
  82. case 8:
  83. OLED_ShowWeather(x,y,DUOYULOGO);
  84. break;
  85. case 9:
  86. case 10:
  87. OLED_ShowWeather(x,y,YINGLOGO);
  88. break;
  89. case 11:
  90. case 12:
  91. ?
  92. OLED_ShowWeather(x,y,LEIYULOGO);
  93. break;
  94. case 13:
  95. case 14:
  96. case 15:
  97. case 16:
  98. case 17:
  99. case 18:
  100. case 19:
  101. OLED_ShowWeather(x,y,YULOGO);
  102. break;
  103. case 20:
  104. case 21:
  105. case 22:
  106. case 23:
  107. case 24:
  108. case 25:
  109. OLED_ShowWeather(x,y,XUELOGO);
  110. break;
  111. case 30:
  112. //OLED_ShowWeather(x,y,YULOGO);
  113. //break;
  114. default:
  115. OLED_ShowWeather(x,y,QINGLOGO);
  116. break;
  117. }
  118. ?
  119. }
  120. ?
  121. extern weather weatherValue;
  122. static voidWeatherDisp(SCREEN_STATUS Screen){
  123. switch (Screen)
  124. {
  125. case NOWSCREEN:
  126. DispWeather(5, 1 ,weatherValue.nowcode);
  127. OLED_ShowCHinese(56,0,9);//今
  128. OLED_ShowCHinese(72,0,12);//天
  129. sprintf((char *)DispStr,"%02d",
  130. (uint32_t)weatherValue.nowtemp);
  131. OledShowString(60,5,(char *)DispStr,2);
  132. OLED_ShowCHinese(76,5,13);//天
  133. sprintf((char *)DispStr,"%02d/%02d",
  134. (uint32_t)weatherValue.low[Screen-1],(uint32_t)weatherValue.high[Screen-1]);
  135. OledShowString(60,3,(char *)DispStr,2);
  136. sprintf((char *)DispStr,"%d%%",
  137. (uint32_t)weatherValue.humi[Screen-1]);
  138. OledShowString(100,5,(char *)DispStr,2);
  139. break;
  140. case TOSCREEN:
  141. DispWeather(5, 1 ,weatherValue.code[Screen-1]);
  142. OLED_ShowCHinese(56,0,10);//明
  143. OLED_ShowCHinese(72,0,12);//天
  144. sprintf((char *)DispStr,"%02d/%02d",
  145. (uint32_t)weatherValue.low[Screen-1],(uint32_t)weatherValue.high[Screen-1]);
  146. OledShowString(60,3,(char *)DispStr,2);
  147. sprintf((char *)DispStr,"%d%%",
  148. (uint32_t)weatherValue.humi[Screen-1]);
  149. OledShowString(70,5,(char *)DispStr,2);
  150. break;
  151. case ATOSCREEN:
  152. DispWeather(5, 1 ,weatherValue.code[Screen-1]);
  153. OLED_ShowCHinese(56,0,11);//后
  154. OLED_ShowCHinese(72,0,12);//天
  155. sprintf((char *)DispStr,"%02d/%02d",
  156. (uint32_t)weatherValue.low[Screen-1],(uint32_t)weatherValue.high[Screen-1]);
  157. OledShowString(60,3,(char *)DispStr,2);
  158. sprintf((char *)DispStr,"%d%%",
  159. (uint32_t)weatherValue.humi[Screen-1]);
  160. OledShowString(70,5,(char *)DispStr,2);
  161. break;
  162. default:
  163. break;
  164. }
  165. if(Get_Status != Last_Get_Status)
  166. {
  167. Last_Get_Status = Get_Status;
  168. switch ( Get_Status)
  169. {
  170. case GET_NORMAL:
  171. break;
  172. case GET_PROPRESS:
  173. OledShowString(0,7,"Get Weather...",1);
  174. break;
  175. case GET_SUC:
  176. OledClearString(0,7,"Get Weather...",1);
  177. OledShowString(0,7,"Get Suc...",1);
  178. i=0;
  179. break;
  180. case GET_FAIL:
  181. OledClearString(0,7,"Get Weather...",1);
  182. OledShowString(0,7,"Get fail...",1);
  183. i=0;
  184. break;
  185. default:
  186. break;
  187. }
  188. }
  189. }
  190. static void OledTask(void *arg)
  191. {
  192. (void)arg;
  193. GpioInit();
  194. OledInit();
  195. OledFillScreen(0x00);
  196. while (1) {
  197. if(Now_Screen != Last_Screen)
  198. {
  199. Last_Screen = Now_Screen;
  200. OledFillScreen(0);
  201. Get_Status = GET_NORMAL;
  202. Last_Get_Status = GET_NORMAL;
  203. i=0;
  204. }
  205. ?
  206. if((Get_Status == GET_FAIL) ||(Get_Status == GET_SUC))
  207. {
  208. i++;
  209. if(i > 20)
  210. {
  211. Get_Status = GET_NORMAL;
  212. i=0;
  213. ?
  214. switch(Now_Screen){
  215. case TIMESCREEN:
  216. OledClearString(16,7,"Sync time...",1);
  217. break;
  218. case NOWSCREEN:
  219. case TOSCREEN:
  220. ?
  221. case ATOSCREEN:
  222. printf("clear oled i = %dn",i);
  223. OledClearString(0,7,"Get Weather...",1);
  224. break;
  225. default :
  226. break;
  227. ?
  228. }
  229. }
  230. }
  231. ?
  232. switch (Now_Screen){
  233. ?
  234. case TIMESCREEN:
  235. TimeScreenDisp();
  236. break;
  237. ?
  238. case NOWSCREEN:
  239. WeatherDisp(NOWSCREEN);
  240. break;
  241. ?
  242. case TOSCREEN:
  243. WeatherDisp(TOSCREEN);
  244. break;
  245. ?
  246. case ATOSCREEN:
  247. WeatherDisp(ATOSCREEN);
  248. break;
  249. ?
  250. default:
  251. break;
  252. }
  253. usleep(100000);
  254. }
  255. }
復制代碼
4、加入rtc.c
現在時間調整是通過每一秒時間戳加1,再把時間戳轉化為北京時間,到達時間的更新。為了減少任務中因為其他函數存在,增加時間誤差,所以單獨創建一個任務來進行時間戳的調整。
  1. #include
  2. #include
  3. #include
  4. ?
  5. #include "ohos_init.h"
  6. #include "cmsis_os2.h"
  7. uint32_t timedata=1608362368;
  8. ?
  9. static void RtcTask(void *arg)
  10. {
  11. (void)arg;
  12. while(1)
  13. {
  14. timedata++;
  15. sleep(1);
  16. }
  17. }
  18. ?
  19. static void RtcTaskHandle(void)
  20. {
  21. osThreadAttr_t attr;
  22. attr.name = "RtcTask";
  23. attr.attr_bits = 0U;
  24. attr.cb_mem = NULL;
  25. attr.cb_size = 0U;
  26. attr.stack_mem = NULL;
  27. attr.stack_size = 512;
  28. attr.priority = osPriorityNormal;
  29. ?
  30. if (osThreadNew(RtcTask, NULL, &attr) == NULL) {
  31. printf("[RtcTaskHandle] Falied to create KeyTask!n");
  32. }
  33. }
  34. APP_FEATURE_INIT(RtcTaskHandle);
復制代碼


5、修改BUILD.gn
修改OLED文件夾下的BUILD.gn文件,sources中加入keytask.c
  1. sources = [
  2. "oled_demo.c",
  3. "oled_ssd1306.c",
  4. "timeconv.c",
  5. "envrionment_demo.c",
  6. "aht20.c",
  7. "wifi_connecter.c",
  8. "getNTP.c",
  9. "getweather.c",
  10. "cjsonparse.c",
  11. "keytask.c",
  12. "rtc.c"
  13. ]
復制代碼
三、結果演示
按下右邊按鍵,可以切換界面,有四個界面,分別為時間顯示界面,今天、明天、后天天氣顯示界面。在時間顯示界面按下左鍵,會獲取實時時間,在天氣顯示界面,按下左鍵會獲取實時天氣,并且顯示天氣獲取情況提示。
231310ra9m49i9z4x4zf8e.jpg?231311ou0uw807ox6p0j77.jpg?231313ak03o957e9yy37r7.jpg?231314yw30xh0iojj0oob3.jpg?231315e660zeor3a53xs6r.jpg
四、總結
這一篇先寫到這里,下一篇是關于通過一個公網的中轉服務器,進行wifiiot和手機之間的遠程數據傳輸
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • wi-fi
    +關注

    關注

    14

    文章

    2147

    瀏覽量

    124612
  • HarmonyOS
    +關注

    關注

    79

    文章

    1979

    瀏覽量

    30274
  • HiSpark
    +關注

    關注

    1

    文章

    156

    瀏覽量

    6938
收藏 人收藏

    評論

    相關推薦

    Wi-Fi 8要來了!未來Wi-Fi技術演進方向揭秘

    產品銷售中,雖然Wi-Fi 7產品的銷量份額快速從年初的個位數百分比增長至14%,但Wi-Fi 6產品的銷量份額依然穩定在60%左右。如果從存量設備來看,那么Wi-Fi 7路由器的占比將遠遠小于這個數。 ? 智能手機等終端設備已
    的頭像 發表于 11-24 03:14 ?1720次閱讀
    <b class='flag-5'>Wi-Fi</b> 8要來了!未來<b class='flag-5'>Wi-Fi</b>技術演進方向揭秘

    華為海思正式進入Wi-Fi FEM賽道?

    大家都知道了,2018年11 月離開銳迪科(RDA),前往福建晉江創立三伍微,專注于Wi-Fi射頻前端芯片,從路由器Wi-Fi FEM,到手機Wi-Fi FEM,再到IoT FEM全覆
    發表于 12-11 17:42

    Wi-Fi 4到Wi-Fi 7:網速飆升40倍的無線革命

    1 Wi-Fi技術的快速發展 每一代新的Wi-Fi協議發布,都會帶來更高的無線速率。 ? 從Wi-Fi 4到Wi-Fi 7:無線網絡技術顯著提升,實現了網速的巨大飛躍。 ? ?
    的頭像 發表于 12-09 10:10 ?291次閱讀
    從<b class='flag-5'>Wi-Fi</b> 4到<b class='flag-5'>Wi-Fi</b> 7:網速飆升40倍的無線革命

    Wi-Fi 7與Wi-Fi 6E有什么區別

    也許很多人還在考慮是否要將使用的Wi-Fi設備升級到Wi-Fi 6或Wi-Fi 6E,而這些標準的繼任者卻已經開始“登堂入室”了。Wi-Fi 7是新一代
    的頭像 發表于 11-07 11:38 ?870次閱讀

    IR900 Wi-Fi聯網的配置過程

    , 通過SSID掃描可以查看;輸入密碼,點擊保存; 在SSID掃描頁面中查看是否連接成功, 如果沒有請檢查認證方式、加密方式、密碼是否輸入正確; Wi-Fi掃描顯示“已連接”,進入“快速向導-新建WAN
    發表于 07-25 06:09

    未來的Wi-Fi路由器

    轉載自——鐘林談芯 沒有創新就沒有未來,Wi-Fi路由器也是如此。 進入2024年以后,Wi-Fi路由器市場變得更加艱難,利潤大幅下滑,BOM成本價高于市場價,接不接訂單,都陷入兩難。 國內主芯片
    的頭像 發表于 06-20 15:32 ?454次閱讀

    DA16200 超低功耗 Wi-Fi 模塊開發套件 Pro數據手冊

    電子發燒友網站提供《DA16200 超低功耗 Wi-Fi 模塊開發套件 Pro數據手冊.rar》資料免費下載
    發表于 05-30 17:53 ?1次下載
    DA16200 超低功耗 <b class='flag-5'>Wi-Fi</b> 模塊開發<b class='flag-5'>套件</b> Pro數據手冊

    DA16200 超低功耗 Wi-Fi 模塊開發套件數據手冊

    電子發燒友網站提供《DA16200 超低功耗 Wi-Fi 模塊開發套件數據手冊.rar》資料免費下載
    發表于 05-30 17:13 ?0次下載
    DA16200 超低功耗 <b class='flag-5'>Wi-Fi</b> 模塊開發<b class='flag-5'>套件</b>數據手冊

    華為獲得全球首個國際Wi-Fi聯盟WFA企業級Wi-Fi 7認證!

    Wi-Fi聯盟已發布Wi-Fi 7認證標準,華為是第一批送測廠商,獲得業界首個企業級Wi-Fi 7 的Wi-Fi聯盟官方認證。
    的頭像 發表于 04-28 10:17 ?756次閱讀
    華為獲得全球首個國際<b class='flag-5'>Wi-Fi</b>聯盟WFA企業級<b class='flag-5'>Wi-Fi</b> 7認證!

    驗證物聯網Wi-Fi HaLow用例的MM6108-EKH08開發套件來啦

    驗證物聯網Wi-Fi HaLow用例的MM6108-EKH08開發套件來啦 MM6108-EKH08開發套件專為驗證物聯網Wi-Fi HaLow用例而設計。該
    的頭像 發表于 04-11 12:01 ?1759次閱讀
    驗證物聯網<b class='flag-5'>Wi-Fi</b> HaLow用例的MM6108-EKH08開發<b class='flag-5'>套件</b>來啦

    Wi-Fi 7與Wi-Fi 6的相關知識科普

    科普:Wi-Fi 7 vs. Wi-Fi 6,青出于藍
    的頭像 發表于 03-12 10:59 ?771次閱讀
    <b class='flag-5'>Wi-Fi</b> 7與<b class='flag-5'>Wi-Fi</b> 6的相關知識科普

    Wi-Fi的誕生與發展

    和5GHz兩個頻段,承載著不斷增長的網絡需求。ABIResearch顯示,2022年Wi-Fi上傳流量激增80%,Wi-Fi數據流量已超過蜂窩流量,且成為流量增量貢
    的頭像 發表于 03-07 08:26 ?1280次閱讀
    <b class='flag-5'>Wi-Fi</b>的誕生與發展

    Wi-Fi HaLow和傳統Wi-Fi的區別

    Wi-Fi HaLow和傳統Wi-Fi的區別? Wi-Fi是一種無線網絡技術,可以連接到互聯網或局域網,為用戶提供無線上網的便利。隨著科技的發展和互聯網的普及,Wi-Fi也在不斷演進和
    的頭像 發表于 02-02 15:28 ?1318次閱讀

    康普攜手Wi-Fi聯盟,RUCKUS Wi-Fi 7系列接入點成Wi-Fi

     康普高級副總裁兼網絡、智能蜂窩和安全解決方案總裁Bart Giordano對此表示: “我們非常榮幸能與Wi-Fi Alliance形成長期合作伙伴關系,將我們的RUCKUS Wi-Fi 7 接入點平臺作為Wi-Fi CERT
    的頭像 發表于 01-23 14:10 ?782次閱讀

    BT Wi-Fi模式是否可以通過ModustoolBox對套件進行編程來實現?

    想配置用于分析 CYW43439 的 CY8CPROTO-062S2-43439 原型開發套件。 瀏覽文檔我無法弄清楚如何在不同的 Wi-Fi 和藍牙模式(電源模式、連接模式等)下配置套件。 在
    發表于 01-22 06:19
    主站蜘蛛池模板: 国产精品久久久久久人妻精品流 | 国产麻豆精品传媒AV国产在线| 亚洲午夜久久久精品影院| 欧美xxxav| 精品视频在线一区| 国产成人教育视频在线观看| 91九色麻豆| 亚洲性夜夜夜色综合网| 色午夜日本高清视频www| 男人到天堂a在538线| 精品欧美小视频在线观看| 国产h视频在线观看网站免费| 97在线观看免费视频| 印度学生xxxxx性14一16| 亚洲成 人a影院青久在线观看| 日韩吃奶摸下AA片免费观看| 蜜桃无码AV视频在线观看| 精品少妇爆AV无码专区| 国产午夜精品久久久久婷婷| 成人在线不卡视频| FREECHINESE东北群交| 4399的视频BD高清在线观看免费| 亚洲欧美韩国综合色| 乌克兰肛交影视| 色中色入口2015| 日本亚洲欧洲免费旡码| 欧美123区| 女教师跟黑人男朋友激情过后| 快播理伦片| 久久综合电影| 久久综合九色| 久久深夜视频| 久久影院午夜理论片无码| 久久se视频精品视频在线| 簧片在线免费观看| 黄梅戏mp3大全| 精品国产一区二区三区久久影院 | 老外的好大c的我好爽| 久久99re7在线视频精品| 精品亚洲麻豆1区2区3区| 经典WC女厕所里TV|