自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

【開發(fā)板試用報告】鴻蒙Hi3861環(huán)境搭建,基于tcp client遠程控制LED

系統(tǒng)
文章由鴻蒙社區(qū)產(chǎn)出,想要了解更多內(nèi)容請前往:51CTO和華為官方戰(zhàn)略合作共建的鴻蒙技術社區(qū)https://harmonyos.51cto.com/#zz

[[361124]]

 想了解更多內(nèi)容,請訪問:

51CTO和華為官方合作共建的鴻蒙技術社區(qū)

https://harmonyos.51cto.com/#zz

非常慚愧由于前段時間太忙到最近才開始鼓搗Hi3861,首先感謝下喬幫主、連老師等大牛的優(yōu)質(zhì)輸出,真乃大神種樹后人乘涼啊。

簡要記錄一下搭建過程的注意事項和tcp client demo。

編譯環(huán)境的搭建,在WIN10上,利用WSL,配合docker簡直不要太爽。具體安裝方式官方有詳細步驟,這里不再贅述,docker環(huán)境可以參考docker無憂包安裝,非常便捷。

編譯環(huán)境和代碼環(huán)境準備好后,用 python build.py wifiiot 就可執(zhí)行代碼編譯。docker環(huán)境下非首次編譯基本就幾十秒就編完。



燒錄環(huán)境需要注意的幾個事項

一、hpm無法加載文件問題:

1. 以管理員身份運行vscode;

2. 執(zhí)行:get-ExecutionPolicy,顯示Restricted,表示狀態(tài)是禁止的;

3. 執(zhí)行:set-ExecutionPolicy RemoteSigned;

4. 這時再執(zhí)行get-ExecutionPolicy,就顯示RemoteSigned;

二、MODULE_NOT_FOUND問題:


更改bundle.json中的%UPLOAD_SCRIPT%

 

三、固件不存在問題:


修改配置中燒錄文件路徑和燒錄方式


等到下面打印出現(xiàn)說明燒錄完成


可以使用串口工具看下Hi3861的啟動是否正常


在看到wifi init success打印后在串口使用AT指令測試連通性



到此,所有環(huán)境搭建驗證完成??梢杂淇斓臄]代碼了。

接下來簡單的用python在PC端搭建了一個tcp server,在Hi3861上搭建了tcp client,PC上通過socket發(fā)送指令給Hi3861,控制LED燈的亮滅。下面是簡單的代碼摘要。

  1. int tcp_client_demo(void) 
  2.  
  3.  
  4. /* 服務器的地址信息 */ 
  5.  
  6. struct sockaddr_in server_addr; 
  7.  
  8. ssize_t ret; 
  9.  
  10. printf("%s %d \r\n", __FILE__, __LINE__); 
  11.  
  12. sleep(10); 
  13.  
  14. /* 1 、創(chuàng)建socket */ 
  15.  
  16. if((sock_fd = socket(AF_INET, SOCK_STREAM, 0)) == -1) 
  17.  
  18.  
  19. printf("%s %d \r\n", __FILE__, __LINE__); 
  20.  
  21. perror("socket is error\r\n"); 
  22.  
  23. exit(1); 
  24.  
  25.  
  26. /* 配置server端的IP和端口 */ 
  27.  
  28. server_addr.sin_family = AF_INET; 
  29.  
  30. server_addr.sin_port = htons(50007); 
  31.  
  32. server_addr.sin_addr.s_addr = inet_addr("192.168.1.101"); 
  33.  
  34. printf("%s %d \r\n", __FILE__, __LINE__); 
  35.  
  36. /* 連接 tcp server*/ 
  37.  
  38. if(connect(sock_fd, (struct sockaddr *)&server_addr, sizeof(struct sockaddr)) == -1) 
  39.  
  40.  
  41. printf("%s %d \r\n", __FILE__, __LINE__); 
  42.  
  43. perror("connect is error\r\n"); 
  44.  
  45. exit(1); 
  46.  
  47.  
  48. printf("%s %d \r\n", __FILE__, __LINE__); 
  49.  
  50. /* 接收循環(huán) */ 
  51.  
  52. while(1) 
  53.  
  54.  
  55. if((ret = recv(sock_fd, recvbuf, sizeof(recvbuf), 0)) == -1){ 
  56.  
  57. printf("recv error \r\n"); 
  58.  
  59. return -1; 
  60.  
  61.  
  62. printf("recv :\r\n"); 
  63.  
  64. printf("%s", recvbuf); 
  65.  
  66. printf("\r\n"); 
  67.  
  68. if(recvbuf[0] == '1'
  69.  
  70.  
  71. /* Turn the LED ON. */ 
  72.  
  73. g_ledState = LED_ON; 
  74.  
  75. printf("LED turned ON\n"); 
  76.  
  77. sprintf(sendbuf, "LED turned ON"); 
  78.  
  79.  
  80. else if(recvbuf[0] == '0'
  81.  
  82.  
  83. /* Turn the LED OFF. */ 
  84.  
  85. g_ledState = LED_OFF; 
  86.  
  87. printf("LED turned OFF\n"); 
  88.  
  89. sprintf(sendbuf, "LED turned OFF"); 
  90.  
  91.  
  92. else 
  93.  
  94.  
  95. printf("Invalid command\n"); 
  96.  
  97. sprintf(sendbuf, "Invalid command"); 
  98.  
  99.  
  100. if((ret = send(sock_fd, sendbuf, strlen(sendbuf) + 1, 0)) == -1) 
  101.  
  102.  
  103. perror("send : "); 
  104.  
  105.  
  106. sleep(2); 
  107.  
  108.  
  109. close(sock_fd); 
  110.  
  111. return 0; 
  112.  

 下面是python server的相關代碼摘要。

  1. def echo_server(host, port): 
  2.  
  3. print("=========================="
  4.  
  5. print("TCP Server"
  6.  
  7. print("=========================="
  8.  
  9. s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
  10.  
  11. s.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1) 
  12.  
  13. try: 
  14.  
  15. s.bind((host, port)) 
  16.  
  17. s.listen(1) 
  18.  
  19. except socket.error as msg: 
  20.  
  21. print("ERROR: ", msg) 
  22.  
  23. s.close() 
  24.  
  25. s = None 
  26.  
  27. if s is None: 
  28.  
  29. sys.exit(1) 
  30.  
  31. while 1: 
  32.  
  33. print("Listening on: %s:%d"%(host, port)) 
  34.  
  35. data_len = 0 
  36.  
  37. try: 
  38.  
  39. conn, addr = s.accept() 
  40.  
  41. except KeyboardInterrupt: 
  42.  
  43. print("Closing Connection"
  44.  
  45. s.close() 
  46.  
  47. s = None 
  48.  
  49. sys.exit(1) 
  50.  
  51. print('Incoming connection accepted: ', addr) 
  52.  
  53. try: 
  54.  
  55. while 1: 
  56.  
  57. data = input("Enter your option: '1' to turn ON LED, '0' to trun OFF LED and Press the 'Enter' key: "
  58.  
  59. conn.send(data.encode()) 
  60.  
  61. data = conn.recv(4096) 
  62.  
  63. if not data: break 
  64.  
  65. print("Acknowledgement from TCP Client:", data.decode('utf-8')) 
  66.  
  67. print(""
  68.  
  69. except KeyboardInterrupt: 
  70.  
  71. print("Closing Connection"
  72.  
  73. s.close() 
  74.  
  75. s = None 
  76.  
  77. sys.exit(1) 
  78.  
  79. conn.close() 

 最終實現(xiàn)的效果如下:


相關代碼已經(jīng)打包上傳,希望接下來能繼續(xù)用鴻蒙做出一些有趣的事情!

©著作權(quán)歸作者和HarmonyOS技術社區(qū)共同所有,如需轉(zhuǎn)載,請注明出處,否則將追究法律責任。

想了解更多內(nèi)容,請訪問:

51CTO和華為官方合作共建的鴻蒙技術社區(qū)

https://harmonyos.51cto.com/#zz

 

責任編輯:jianghua 來源: 鴻蒙社區(qū)
相關推薦

2020-12-09 09:44:29

Hi3861硬件介紹鴻蒙開發(fā)板

2020-10-29 09:53:06

Hi3861硬件開發(fā)板

2020-10-30 17:42:36

鴻蒙 OS Hi386

2020-11-17 12:15:36

MQTT開發(fā)

2020-11-23 09:32:43

WIFI連接

2021-09-16 10:03:39

鴻蒙HarmonyOS應用

2021-12-20 21:01:52

鴻蒙HarmonyOS應用

2020-11-03 09:53:04

體驗官方固件程序

2023-05-09 15:17:42

Hi3861鴻蒙

2020-10-21 10:01:47

HiSpark Wi-智能家居套件

2020-10-20 09:32:43

HiSparkWi-FiIoT

2020-10-26 10:21:39

Wi-Fi IoT智能家居套件

2020-11-27 11:52:40

OneNet

2020-11-26 12:02:07

OneNet平臺

2020-11-25 11:55:47

FlappyBird

2020-10-23 09:50:15

HiSpark Wi-開發(fā)套件

2020-11-06 10:15:16

HiBurn

2021-12-15 15:28:18

鴻蒙HarmonyOS應用

2020-12-15 11:57:49

Hi3861 HarmonyOS開發(fā)板

2020-11-11 10:06:15

鴻蒙
點贊
收藏

51CTO技術棧公眾號