当前位置: 首页 > 科技观察

【开发板试用报告】鸿蒙Hi3861环境搭建,基于tcp客户端远程控制LED

时间:2023-03-17 18:02:04 科技观察

更多内容请访问:与华为官方共建的鸿蒙技术社区https://harmonyos.51cto.com/#zz很惭愧,前段时间太忙,最近才开始鼓捣Hi3861。首先感谢乔老师和连老师的优质输出。简单记录一下搭建过程中的注意事项和tcp客户端demo。编译环境的搭建,在WIN10上,用WSL,还有docker,简直不要太爽。具体安装方法官方有详细步骤,这里不再赘述。docker环境可以参考docker无忧包安装,很方便。编译环境和代码环境准备好后,使用pythonbuild.pywifiiot进行代码编译。在docker环境下,非第一次编译基本几十秒就完成了。烧录环境需要注意的几点1.hpm无法加载文件的问题:1.以管理员身份运行vscode;2、执行:get-ExecutionPolicy,显示Restricted,表示状态为禁止;3、执行:set-ExecutionPolicyRemoteSigned;4、此时执行get-ExecutionPolicy,会显示RemoteSigned;2、MODULE_NOT_FOUND问题:修改bundle.json中的%UPLOAD_SCRIPT%3、固件没有问题:修改配置中的烧录文件路径和烧录方式,等到出现如下打印说明烧录完成。可以使用串口工具检查Hi3861启动是否正常。看到wifiinitsuccess打印后,使用AT命令测试串口连通性。至此,所有环境验证完成。你可以愉快地编码。接下来简单的使用python在PC端搭建一个tcpserver,在Hi3861上搭建一个tcpclient,通过PC端的socket向Hi3861发送命令,控制LED灯的亮灭。下面是一个简单的代码摘要。inttcp_client_demo(void){/*服务器的地址信息*/structsockaddr_inserver_addr;ssize_tret;printf("%s%d\r\n",__FILE__,__LINE__);sleep(10);/*1、创建socket*/if((sock_fd=socket(AF_INET,SOCK_STREAM,0))==-1){printf("%s%d\r\n",__FILE__,__LINE__);perror("socketiserror\r\n");exit(1);}/*配置server端的IP和端口*/server_addr.sin_family=AF_INET;server_addr.sin_port=htons(50007);server_addr.sin_addr.s_addr=inet_addr("192.168.1.101");printf("%s%d\r\n",__FILE__,__LINE__);/*连接tcpserver*/if(connect(sock_fd,(structsockaddr*)&server_addr,sizeof(structsockaddr))==-1){printf("%s%d\r\n",__FILE__,__LINE__);perror("connectiserror\r\n");exit(1);}printf("%s%d\r\n",__FILE__,__LINE__);/*接收循环*/while(1){if((ret=recv(sock_fd,recvbuf,sizeof(recvbuf),0))==-1){printf("recverror\r\n");return-1;}printf("recv:\r\n");printf("%s",recvbuf);printf("\r\n");if(recvbuf[0]=='1'){/*TurntheLEDON.*/g_ledState=LED_ON;printf("LEDturnedON\n");sprintf(sendbuf,"LEDturnedON");}elseif(recvbuf[0]=='0'){/*关闭LED。*/g_ledState=LED_OFF;printf("LEDturnedOFF\n");sprintf(sendbuf,"LEDturnedOFF");}else{printf("Invalidcommand\n");sprintf(sendbuf,"Invalidcommand");}if((ret=send(sock_fd,sendbuf,strlen(sendbuf)+1,0))==-1){perror("send:");}sleep(2);}close(sock_fd);return0;}下面是pythonserver的相关代码总结defecho_server(host,port):print("==========================")print("TCPServer")print("===========================")s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)s.setsockopt(socket.IPPROTO_TCP,socket.TCP_NODELAY,1)try:s.bind((host,port))s.listen(1)exceptsocket.errorasmsg:print("ERROR:",msg)s.close()s=NoneifsisNone:sys.exit(1)while1:print("Listeningon:%s:%d"%(host,port))data_len=0try:conn,addr=s.accept()exceptKeyboardInterrupt:print("ClosingConnection")s.close()s=Nonesys。exit(1)print('Incomingconnectionaccepted:',addr)try:while1:data=input("Enteryouroption:'1'toturnONLED,'0'totrunOFFLEDandPress'Enter'key:")conn.send(data.encode())data=conn.recv(4096)ifnotdata:breakprint("AcknowledgmentfromTCPClient:",data.decode('utf-8'))print("")exceptKeyboardInterrupt:print("ClosingConnection")s.close()s=Nonesys.exit(1)conn.close()最终效果如下:相关代码已经打包上传,希望下一个可以继续用HarmonyOS做一些有趣的事情!?版权归作者及HarmonyOS技术社区所有。如需转载请注明出处,否则将追究法律责任。更多信息请访问:与华为官方合作共建鸿蒙技术社区https://harmonyos.51cto.com/#zz

最新推荐
猜你喜欢