本文主要是介绍手机数据线连接linux,Linux设备通过USB线与手机通信(Android、IOS),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
背景介绍
通过手机USB连接遥控器,无人机的视频经遥控器实时传到手机预览,手机也可以通过USB发送指令给无人机,或者从无人机下载视频照片到手机。
方案选择
IOS手机使用usbmuxd方式,这样就不需要MFI认证,Android手机使用AOA协议,框图如下:
原理解析
手机通过USB发送rtsp/http/ftp等消息,经过遥控器,遥控器起到了一个数据转发的作用,将接收到手机的消息转发给无人机,同样遥控器也需要接收无人机发送的消息,并转发给手机。遥控器除了转发收到的数据外,针对不同消息有可能还需要解析,并且遥控器还需要维护跟无人机的连接。
Android手机
Android手机通过AOA协议跟遥控器连接,遥控器端需要移植libusb库,使用异步方式获取手机发送的消息,解析消息是rtsp、http还是ftp,并将消息发送给对应的无人机socket句柄上。反之从相应的socket句柄上接收无人机的消息,转发给手机。
IOS手机
IOS手机使用usbmuxd方式是为了避免MFI认证,IOS系统端已经集成了usbmuxd服务,遥控器端使用的是Linux系统,Linux中没有usbmuxd服务,需要自己移植。可以去github上下载源码交叉编译,地址:https://github.com/libimobiledevice。
usbmuxd屏蔽了底层的USB操作,将USB的数据转化为TCP(基于Unix Domain Socket)数据,这样iPhone的App和外设上的应用就可以使用Socket进行TCP进行通信了。参考网站:https://www.theiphonewiki.com/wiki/Usbmux,此网站介绍了usbmuxd的数据格式,创建socket并通信的步骤,根据此文档可以编写遥控器端Linux应用程序。
总结:使用AOA和usbmuxd协议实现了Android手机和IOS手机通过USB连接遥控器,手机既可以预览无人机画面,又可以控制无人机飞行。
这篇关于手机数据线连接linux,Linux设备通过USB线与手机通信(Android、IOS)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!