android平板用otg连接usb和android连串口设备 在android开发时有区别吗? 50

我用otg连接usb接一个设备,想用android_serialport_api进行串口编程的方式实现安卓与设备的通信,但程序总是显示没有权限或不知名原因错误,改文件权限... 我用otg连接usb接一个设备,想用android_serialport_api进行串口编程的方式实现安卓与设备的通信,但程序总是显示没有权限或不知名原因错误,改文件权限也没有用。

请大神指导一下是不是这种usb连接的和串口不一样?我看demo里的设备路径都是/dev/tty*, 我这个usb设备路径是/dev/bus/usb/001/002 。
展开
 我来答
千锋教育
2016-04-18 · 做真实的自己 用良心做教育
千锋教育
千锋教育专注HTML5大前端、JavaEE、Python、人工智能、UI&UE、云计算、全栈软件测试、大数据、物联网+嵌入式、Unity游戏开发、网络安全、互联网营销、Go语言等培训教育。
向TA提问
展开全部
基础知识:
做usb通信,首先要先弄清楚哪边是HOST那边是SLAVE。
比如你的android手机做host,要获得slave,用UsbDevice表示slave
要是你的android手机做slave,要获得host,用UsbAccessory表示host
以前没有接触过android USB Host编程。来到这个公司后,第一个任务就是写一个android平板的usb host 的demo,和打印机,ic卡等通信。
一、说一下USB HOST的用处:
USB设备分为HOST(主设备)和SLAVE(从设备),只有当一台HOST与一台SLAVE连接时才能实现数据的传输。android支持实现了android外设协议的USB硬件。Android外设和主机模式,在android3.1或者更高的平台上直接支持。但是,对USB主机和外设模式的支持,最终还是要取决于设备的硬件,而不仅仅是看平台的等级。
我上网搜了一下,早期的一些夏新的手机,以及htc的WM手机支持USB HOST功能,而现在的android手机中支持USB HOST的还很非常少,查到的支持USB HOST功能的手机有三星的I9250,HTC手机暂未发现,现在测试使用的HTC T328w不支持USB HOST功能。所以,测试条件不太充分。
另外,USB HOST的主要用处,一般是android手机做HOST主设备,用来控制其他一些元器件,比如,单片机,鼠标,游戏手柄,数码相机,等等。

说到手机的usb host 一般用OTG线连接usb外界设备,但是OTG是什么呢? 今天我才懂,惭愧啊,
这里在简单说明下:OTG即On-The-Go,是近年来发展起来的技术,主要应用是让不同的USB设备和移动设备之间连接,进行数据交换。主要应用是在一些高端手机和平板上,在具有OTG功能的平板或手机上,我们可以连接各种USB设备,例如鼠标、键盘、U盘等,这对于移动办公来说还是有一定作用的。尤其是对U盘、读卡器等设备的读取,在身边没有电脑的情况就可利用移动设备直接使用这些设备。

连接无线键鼠,鼠标移动尚算灵敏,但是部分输入法使用键盘打字会出现严重的延迟,而且暂时还没试出哪个输入法支持USB键盘的中文输入。

连接U盘,这个算比较常见的一个用途,效果不错。

而很少把手机端当做从设备,与电脑端通过USB HOST进行通信的。另外看到一个人说不能通过USB HOST方式与电脑实现通信:
二、通过socket方式进行连接
开始的时候看到一个例子说是通过USB HOST实现的PC与手机端进行连接,我根据查到的资料和自己的理解觉得大概是如下的意思:
1.基于socket编程方式,在android手机端和pc端进行连接传输数据。
2.连接时,需要通过adb forward方式进行端口转发,才能连接的上去。
3.需要用到broadcast来进行,在server端用adb shell 命令开启android端的socket连接服务。
4.主要基于android.hardware.usb包下的UsbManager 类和UsbAccessory类。
5.然后就是一些IO操作,IO处理及关闭优化。
最关键的两点就是:
1)端口转发:
Runtime.getRuntime().exec(“adb forward tcp :12580 tcp:10086 ”);
在服务端监听10086端口。
2)在server端java程序中使用adb 命令启动client端的service。
Runtime.getRuntime().exec(“adb shell am broadcast –a NotifyServiceStart”);
后来测试多次发现,这个方式没有用到USB HOST的方式,依然是socket通信,只不过是进行了一下端口转发。
另外,关于socket通信时,写的android程序在模拟器上可以与PC上的server端进行通信,而把程序装到真机上时,就不能实现通信,这个问题的主要原因是PC端和手机上的无线网络不在一个网段,无法进行连接。
三、串口通信,hid访问
在网上查到一些关于USB HOST的开发都是基于基于android端与一些单片机进行串口通信的,串口转usb
USB HID
是Human Interface Device的缩写,由其名称可以了解HID设备是直接与人交互的设备,例如键盘、鼠标与游戏杆等。不过HID设备并不一定要有人机接口,只要符合HID类别规范的设备都是HID设备。

mini usb 以前的手机的usb那样
micro usb 现在手机的usb口那样
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式