代码拉取完成,页面将自动刷新
文件结构: d2cc库由以下三个文件构成:
d2cc库分为两个部分:
将D2ccManager.java、d2cc.cpp、d2cc.h三个文件导入Android工程。工程目录可参考下图:
编写CMakeList.txt用来编译C++代码。参考下图:
编写java层程序调用D2ccManager.java中的方法来实例化D2ccManager类并打开USB设备。
♦ D2ccManager. getInstance(Context context1)//函数用来获取D2ccManager类实例来对USB设备进行操作。
♦ D2ccManager. OpenDevice()//函数遍历Android系统所有USB接口,并通过比较VID来识别目标USB设备。当找到目标设备后OpenDevice函数向Android系统申请该USB设备的访问权限。可以通过修改D2ccManager.java中如下字段来修改目标USB的VID值。(PS:FTDI厂家生产的所有USB芯片VID都为十进制的1027,此值并不需要修改)
♦ int Read(unsigned char *dst, int length,int off); //任意长度读取
♦ int BulkRead(unsigned char *dst, int bulk); //整块数据读取
♦ int Write(unsigned char *src, int length);
D2ccManager.java
/* 获取D2ccManager类的静态实例。第一次调用系统会自动创建实例,
* 之后再调用就会返回第一次创建的实例
* @return:静态实例mInstance
* @context1:由Activity传来的Context对象
* */
public D2ccManager D2ccManager.getInstance(Context context1);
/* 打开USB设备:若已经存在打开的设备此函数胡就啥也不做
* 如果没有已打开的设备,函数会遍历Android系统接入的所有USB设备,对比设备的PID;VID是否符合要求
* 若符合要求就向Android系统申请该USB设备的访问权限。系统发送android.hardware.usb.action.USB_DEVICE_ATTACHED广播
* @return:静态实例mInstance
* @context1:由Activity传来的Context对象
* */
public void D2ccManager.OpenDevice();
D2cc.cpp
/* 获取D2cc实例
* return:单例模式的D2xx实例
* */
static D2cc* D2cc::getInstance();
/*
* 关闭USB设备:暂停USB读取的进程,当再次调用OpenDevice则继续读取
* */
void D2cc::CloseDevice();
/*
* 返回接收缓冲区中剩余数据字节数
* */
int D2cc::GetAvailable();
/* 从USB接收缓冲区中读取任意长度数据。函数会根据需要读取的数据量逐个遍历USB接收FIFO进行读取。
* 若USB缓冲区没有足够数据读取,此函数会进入sleep状态等待,直到读取数据量达到length。
* @return:成功接收的字节数
* @dst:接收数据目的地址
* @length:接收数据字节数
* @off:数据放在dst数组的位置
* */
int D2cc::Read(unsigned char *dst, int length,int off); //任意长度读取
/* 接收一块USB数据,块长度为4096*4(可能比这个少一点)
* @return:成功接收的字节数,没接收到返回0
* @dst:接收数据目的地址
* */
int D2cc::BulkRead(unsigned char *dst); //整块数据读取
/* 发送USB数据
* @return:成功发送的字节数,没发送成功返回0
* @src:发送数据的首地址
* @length:发送数据的字节数
* */
int D2cc::Write(unsigned char *src, int length); //写入数据
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。