为Wifi-lot小车做一个遥控器应用
在HarmonyOS3.0和OpenHarmony3.2的支持下,TCP-socket通信API已经稳定可控,今天我们做一个控制应用来控制小车。
1、效果演示
2、设计思路
运行环境:HarmonyOS3.0,OpenHarmony3.2
(1)按键说明
①转向控制:左右滑动摇杆,实现转向,上下滑动摇杆,实现速度控制。
②动力控制:上下滑动摇杆,实现前进后退。
③本机IP地址展示
④对端IP地址输入
⑤链接,断开按键,主动进行TCP连接请求与断开。
(2)控制指令
本遥控器以状态指令为驱动,每触发一种状态仅发送一次指令,对端在未接收到新指令的情况下一直保持当前指令状态。
- 前进状态:“1”
- 后退状态:“2”
- 左转状态:“3”
- 右转状态: “4”
- 停止状态: “0”
3、页面设计
在摇杆的拖动设计中,主要运用ontouchmove,ontouchend,ontouchstart实现,通过手指坐标来确定摇杆组件的top和left值,通过设定方向阈值来判断是否开始发送指令,通过打印回调数据来设置参数。
(1)hml
(2)CSS
4、业务逻辑
(1)参数调试
我们前面为摇杆组件设置了ontouch事件,那么如何设计Top或者left值来判断什么时候可以开始发送指令呢?摇杆既不可太过灵敏也不可以太过迟钝,我们可以通过打印触摸事件返回的参数来进行调参。
(2)触摸控制
根据前文提到的状态控制机制,我们应该在ontouchmove中进行判断,当上滑到某一阈值的时候开始发送前进指令,当松手时即ontouchend时我们应该立即发送停止指令。即滑动中判断并发送指令,停止则立马发送停止信息。具体的阈值参数根据个人考虑进行调试设置。
(3)TCP
- 通过输入框获取对端IP地址,点击链接按键时触发connect方法请求连接,连接成功弹出对话框"连接成功"。
- 展示本机IP地址。
- 应用或者页面销毁时应关闭连接,否则会占据对端该端口,导致下次连接失败。
- 根据状态驱动指令控制,由于ontouchmove是一直在触发的,也就是判断是一直在进行的,当我们保持摇杆前进状态的时候,注意要判断指令状态是否更新了?如果指令未变,那么就不再发送指令。只有指令变化的时候才会发送一次指令。
- 只有连接成功后,才能够发送信息。
方法 | 描述 |
creatScoket() | 绑定本机IP |
sendMessage() | 发送指令 |
onConnect() | 链接对端 |
onDisconnect() | 断开链接 |
getIpAddress() | 获取本机IP地址 |
- tcp设置参数:
|参数|描述|
|-|-|
|keepAlive|是否保持连接。默认为false。|
|OOBInline|是否为OOB内联。默认为false。|
|TCPNoDelay|TCPSocket连接是否无时延。默认为false。|
|receiveBufferSize|接收缓冲区大小(单位:Byte)|
|sendBufferSize|发送缓冲区大小(单位:Byte)|
|reuseAddress|是否重用地址。默认为false|
|socketTimeout|套接字超时时间,单位毫秒(ms)| - 建议开启HarmonyOS工程,开发完毕后可同步安装到OpenHarmony设备,反之则会变得麻烦一些。
(4)申请权限
5、结语
本次分享的应用需要南北向开发配合食用,同时需要HarmonyOS3.0设备或者OpenHarmony3.2设备。HarmonyOS2.0设备可考虑采用JS/JAVA混合开发,JAVA侧实现Socket通信,可参考我往期博客。下一期,我将会分享如何配置HarmonyOS3.0设备的碰一碰拉起应用配置。
相关文章
- 药物互助小程序的120个小时
- Android平台GB28181设备接入端如何实时更新经纬度实现国标平台侧电子地图位置标注
- Android 子线程 UI 操作真的不可以?
- 移动安全-安卓frida hook基础篇
- 微信开放Donut,我们的App也能像微信跑小程序了
- Android Activity Deeplink启动来源获取源码分析
- Android构建工具--AAPT2源码解析(一)
- Android模块化开发实践
- 手把手教你实现Android编译期注解
- 打通“任督二脉”:Android 应用安装优化实战
- Android系统Bitmap内存分配原理与优化
- Android客户端网络预连接优化机制探究
- Android内存泄露检测 LeakCanary2.0(Kotlin版)的实现原理
- 存量用户运营企业微信的“用户端小程序”优化方案
- 一文帮你搞懂 Android 文件描述符
- Android NativeCrash 捕获与解析
- axios的简单使用
- IDEA整合Android
- 羊了个羊逆天改命过关法!PC小程序抓包教程
- AndroidQ兼容性适配指南