通过OTG对USB存储设备操作和与单片机串口连接互传数据可能存一定差异,暂时还没有尝试对USB存储设备的操作;下面都是与单片机CH34x芯片连接互传数据的尝试;(代码部分与前2期的不一样)斜体样式
与单片机的互传数据首先可以参考如下的demo;直接使用xx公司写的jar包
https://download.csdn.net/download/mjc1321/12318022
将其中的demo研究了下,尽可能全部精简后,主要就几个步骤;
权限自行添加
界面自行设计,我就设计了几个组件:1)显示文本框,2)开启连接按钮,3)发送按钮,4)文本输入框
1、包导入
将压缩包lib文件夹下CH34xUARTDriver.jar文件复制到工程项目下的libs文件夹中(自己创建),如下:
然后重启eclipse,刷新工程项目,可在Android Private Libraries下找到我们需要的jar包;
切勿直接使用工程项目的build path中Add External JARs添加,该方式是将jar包放置在Referenced Libraries下,这会导致程序无法正常运行;这个大坑折腾了好久,暂时没研究为啥;
2、代码
1)创建CH34xUARTDriver对象
2)设置串口参数(波特率=115200,stopBit=1,dataBit=8,parity、flowControl一般不管设为0)
3)流程:依次调用CH34xUARTDriver对象的ResumeUsbPermission()、ResumeUsbList()、UartInit()、SetConfig()等函数;—都在开启连接按钮点击监听方法中执行;
4)发送按钮监听方法中调用CH34xUARTDriver对象的WriteData()函数发送数据
5)读取数据,通过readThread额外的线程读取;
6)读取数据处理handler
open按钮监听函数:
//打开流程主要步骤为ResumeUsbList,UartInit
button_open.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
if (!isOpen) {
int retval = chDriver.ResumeUsbPermission();
if (retval == 0) {
retval = chDriver.ResumeUsbList();
if (retval == -1)// ResumeUsbList方法用于枚举CH34X设备以及打开相关设备
{
chDriver.CloseDevice();
} else if (retval == 0){
if ( chDriver.mDeviceConnection != null) {
//对串口设备进行初始化操作