目录

1. 新建继承FTDevice的类usb2uart

2.  函数open

3. 函数close

4. 函数write

5. 函数read

6. 验证

6.1 发送数据

6.2 处理read的线程


FT4232H支持4路串口,选择第一路串口做LOOP实验,将AD0和AD1短接

1. 新建继承FTDevice的类usb2uart

public class usb2uart extends FTDevice{public usb2uart(Context context) {super(context);}}

2.  函数open

打开串口设备,并设置串口的波特率、校验方式、数据位数,停止位数。

public int open(int baudrate, byte parity, byte dataBits, byte stopBits){int ret;ret = openDevice(D2xxManager.FT_BITMODE_RESET);if(ret < 0)return ret;ftDevice.setBaudRate(baudrate);ftDevice.setDataCharacteristics(dataBits, stopBits, parity);return FTDevice.RETURN_OK;
}

设备模式FT_BITMODE_RESET表示串口模式,即默认的模式是串口模式。

3. 函数close

与FTDevice的功能相同。

public int close(){return closeDevice();
}

4. 函数write

public void write(byte[] dat, int len){ftDevice.write(dat, len);
}

5. 函数read

public int read(byte[] dat, int maxLen){int num = 0;num = ftDevice.getQueueStatus();if(num <= 0)return 0;if(num > maxLen){ftDevice.read(dat, maxLen);return maxLen;}else{ftDevice.read(dat, num);return num;}
}

从UART读数据,如果没有数据直接返回0,如果数据长度大于数组长度,则只读取数组长度的数据。返回值为从UART中读到的数据长度。

6. 验证

6.1 发送数据

在button的Click事件中添加

public void onClick(View view) {String strWrite;strWrite = etSend.getText().toString();if(strWrite.length() == 0)return;byte[] byteWrite = strWrite.getBytes();ftD2xxDev.write(byteWrite, byteWrite.length);
}

etSend是EditText。

6.2 处理read的线程

线程中一直读取串口数据,如果有数据就把数据读入到数组readData中,然后发消息界面更新。

   private class RecvRunnable implements Runnable {@Overridepublic void run() {while (true) {try {Thread.sleep(100);} catch (InterruptedException e) {}if (threadStop == true)break;if (threadPause == true)continue;if(ftD2xxDev == null)break;readNum = ftD2xxDev.read(readData, 1024);Log.i("Debug", "read num:" + readNum);if (readNum == 0) {continue;}Log.i("Debug", "read num:" + readNum);Message message = myHandler.obtainMessage();message.arg1 = 111;// 值可自定义myHandler.sendMessage(message);}}};RecvRunnable recvRunnable = new RecvRunnable();Thread recvThread;

在打开设备的按键处理中添加

threadPause = false;
threadStop = false;
recvThread = new Thread(recvRunnable, "UartRecv");
recvThread.start();

在关闭设备中添加

threadPause = true;
threadStop = true;

收到消息后更新TextView

    static Handler myHandler = new Handler(new Handler.Callback() {@Overridepublic boolean handleMessage(@NonNull Message message) {if (message.arg1 == 111) {//readText.setText("");for(int i = 0; i < readNum; i++){tvRecv.append("" + (char)readData[i]);}}return false;}});

发送字符串“abc”,接收相同的数据,验证OK。

FT4232H Android开发 3 - USB转UART相关推荐

  1. FT4232H Android开发 4 - USB转GPIO

    USB转GPIO利用的是FT4232H的MPSSE模式.FT4232H虽然有4路UART,但是只能支持2路MPSSE(Channel A和Channel B).其中Channel A对应ADBUS0 ...

  2. FT4232H Android开发 6 - USB转IIC

    目录 1. 新建类mpsse_iic 2. 修改类mpsse_gpio 3. iic的初始化 4. IIC的Start 5. IIC的Stop 6. IIC的读一个字节 7. IIC的发送一个字节 8 ...

  3. FT4232H Android开发 5 - USB转SPI

    目录 1.  基本原理 2. 设置频率 3. CS电平控制 4. SPI写的实现 5. SPI读的实现 6. 验证 当FT4232H作为MPSSE设备时,DBUS0固定为CLK输出,DBUSD1固定为 ...

  4. FT4232H Android开发 2 - 建立一个FTDI设备的样板工程

    目录 1. 新建一个FTDevice的类 2. 导入用到的类 3.  添加变量 4. 定义构造函数 5. 成员函数selectDevice 6. 成员函数getDeviceType 7. 成员函数cl ...

  5. FT4232H Android开发 1 - 建立环境

    系统:Windows 10 64bit IDE: Android Studio 硬件平台:FT4232H Mini Module 1. 新建工程 2. 下载J2XX https://ftdichip. ...

  6. Android Camera相机开发示例、Android 开发板 USB摄像头采集、定期拍照、定时拍照,安卓调用摄像头拍照、Android摄像头预览、监控,USB摄像头开发、摄像头监控代码

    我们有个需求,在机器上加个摄像头,定时拍照: 我到网上搜索,发现没有快速上手和简单使用的: 个人感觉,大部分博客写得很乱,或者长篇大论: 而我只想简单实现功能,并不打算学习多少理论: 下面代码是我写来 ...

  7. Android开发之USB数据通信

    Android开发中USB串口通信开发主要涉及到以下几个类及相应的方法: 1 ,UsbManager:负责管理USB设备的类,你可以在相应代码中通过以下方法获得 //获取UsbManager实例方法 ...

  8. mac android手机调试,mac os开发android应用通过usb真机调试

    当前开发用的ari,sublime + webstrom 开发node.js还比较流畅,还没有出现被堵被坑的局面. 尝试开发android应用时,各种坑,其中一个比较深的坑就是今天要和大家分享的. m ...

  9. B4A 或其它Android开发平台连接USB设备进行调试

    -   配置Android开发环境.   (Basic4android新手指南-1 搭建环境.pdf) -  首先下载Android设备相关的自身驱动. - 下载安装USB驱动管理软件 UsbDriv ...

最新文章

  1. Nagios 监控系统架设全攻略_转自IBM Developer
  2. 计算机组成原理(哈工大刘宏伟)135讲(三)
  3. 手机qq2008触屏版_天猫精灵 CC10 电池版体验:只卖 799 元的平板电脑,比 iPad 更适合老人小孩...
  4. Oracle 数据类型及存储方式
  5. Java I/O流-总结(InputStream,OutputStream,Reader,Writer)
  6. daz模型导入marvelous_传世工坊自制Daz Studio 4.10 系列入门教程
  7. this.getstate_Java线程类Thread.State getState()方法(带示例)
  8. android 首页接口设计方案,Android开发最佳实践——1.接口设计
  9. 【Landsat 8】介绍
  10. python爬取商品信息
  11. 7 基于matplotlib的python数据可视化——导入Excel数据制作饼图
  12. python怎么打e,python e怎么表示
  13. dbcp 出现的connection is closed的问题
  14. 阿里云数据库RDS如何用Navicat连接?
  15. 这套Github上40K+star面试笔记,可以帮你搞定95%以上的Java面试
  16. ckeditor4 自定义组件之文字格式组件,类加粗,类下划线(vue项目)
  17. 场曲 zemax示例(概念、校正)
  18. linux个人学习记录
  19. 视频时序动作识别(video action recognition)介绍
  20. RSD的PANSHARP融合——以GF2为例

热门文章

  1. android仿ios滑动解锁,Android自定义绘制:Shader - 模仿iOS滑动解锁
  2. (附源码)ssm基于JAVA的二手房屋信息管理系统设计与实现 毕业设计271542
  3. CVTE软件技术支持面试(已拿offer)
  4. 磁盘低格后数据为何还能恢复?
  5. 竞争神经网络 python_用python解决kaggles奔驰环保竞争
  6. 爬取汽车之家图片 - scrapy - crawlspider - python爬虫案例
  7. java工厂方法模式_java-工厂方法模式的优势
  8. POJ 1846 System 笔记
  9. python爬虫实例-运用requests抓取豆瓣电影TOP250(详解)
  10. 如果一个女生说,她集齐了十二个星座的前男友,我们应该如何估计她前男友的数量?...