第一步USB通信:

Usb设备有两种,Host与Accessory 简单来说是主模式与从模式,主模式则android设备给外设供电,反之,外设给android设备充电,对于小票打印,使用的是Host模式

用到以下几个类:

1.UsbManager: 这个类用来获取USB设备-UsbDevice

UsbManager manager = (UsbManager) getSystemService(Context.USB_SERVICE);
// 获取设备
HashMap<String, UsbDevice> deviceList = manager.getDeviceList();

UsbInterface & UsbEndpoint : 代表UsbDevice有哪些功能

UsbInterface intf = device.getInterface(0);
// 官方文档上边是这样写的,直接获取第一个,但往往不一定只连接一个设备,就要求我们找到自己想要的那个,一般的做法是
int count = device.getInterfaceCount();
for (int i = 0;i < count; i++) {
UsbInterface intf = device.getInterface(i);
// 之后我们会根据 intf的 getInterfaceClass 判断是哪种类型的Usb设备,
// 并且结合 device.getVectorID() 或者厂家ID进行过滤,比如 UsbConstants.USB_CLASS_PRINTER
if (device.getVectorID() == '打印机的生产商ID' &&
intf.getInterfaceClass() == UsbConstants.USB_CLASS_PRINTER) {
// 这个device就是你要找的UsbDevice,此时还需要进行权限判断
if (usbManager.hasPermission(device) == false) { // 没有权限
PendingIntent permissionIntent = PendingIntent.getBroadcast(this, 0, new Intent("com.android.example.USB_PERMISSION"), 0);
IntentFilter filter = new IntentFilter("com.android.example.USB_PERMISSION");
registerReceiver(mUsbReceiver, filter);
return;
}
}
}

建立连接:

UsbDeviceConnection connection = mUsbManager.openDevice(device);
connection.claimInterface(intf, forceClaim);

开始写数据:

//do in another thread
connection.bulkTransfer(outEndpoint, bytes, bytes.length, TIMEOUT);

开始读数据:

//do in another thread
connection.bulkTransfer(inEndpoint, bytes, bytes.length, TIMEOUT);

初始化打印机:

byte[] bytes = new bytes[]{(byte) 27, (byte) 64};
connection.bulkTransfer(outEndpoint, bytes, bytes.length, TIMEOUT);

输出要打印的格式:

byte[] bytes = "你要打印的文字".getBytes("gbk");
connection.bulkTransfer(outEndpoint, bytes, bytes.length, TIMEOUT);

输出换行:

byte[] bytes = new bytes[]{(byte) 10};
connection.bulkTransfer(outEndpoint, bytes, bytes.length, TIMEOUT);

Android 小票打印USB的更多相关文章

  1. Android打印机--小票打印格式及模板设置

    小票打印就是向打印设备发送控制打印格式的指令集,而这些打印格式须要去查询相应打印机的API文档,这里我把经常使用的api给封装了一下 文字对齐方式 打印字体大小 字体是否加粗 打印二维码 打印条形码 ...

  2. linux下使用小票打印

    linux下使用小票打印 打印机: Xprinter XP-58IIH指令支持: ESC/POS接口: USB, 蓝牙 Linux系统: Centos7 蓝牙配对很快, 配对好后就是连接状态. 但很快 ...

  3. 【转】Android Service创建USB HOST通信

    之前做了一个关于Android USB通信的Case,通过Android的USB总线给Zigbee供电,和板载的Zigbee(基于Zigbee的自组网)进行通信.要使用Android的USB Host ...

  4. Delphi 10 Seattle 小票打印控件TQ_Printer

    TQ_Printrer控件,是一个为方便需要控制打印命令而设计的跨平台专用控件,已包含标准ESC/POS打印控制的基本指令在内(这些基本指令已能很好的满足多数项目使用). TQ_Printrer控件让 ...

  5. Android Service创建USB HOST通信

    之前做了一个关于Android USB通信的Case,通过Android的USB总线给Zigbee供电,和板载的Zigbee(基于Zigbee的自组网)进行通信.要使用Android的USB Host ...

  6. Android OTG支持USB读卡器

    我们知道,三星Android手机将USB读卡器通过OTG线插入Micro USB插口后,插拔读卡器里的SD卡,文件管理器也能够识别卡的插拔:而很多手机的OTG连上USB读卡器也来插拔SD卡,会发现文件 ...

  7. 更好的小票打印体验,huanent.printer2.0发布

    huanent.printer2.0是一个专注消费小票打印的类库.拥有许多先进的特性例如居中打印.自动换行等特性,可以通过简洁的代码来打印出复杂的消费小票.huanent.printer通过MIT方式 ...

  8. android网页打印,安卓网页打印,h5页面打印,浏览器打印,js打印工具

    Android设备打印比较麻烦,一般设备厂商都提供原生app开发的SDK,我们web开发者为难了,不会原生开发啊 给大家提供一个思路,实现web加壳,利用打印浏览器实现 简单来说就是把我们的web页面 ...

  9. 关于一体机打印新加菜按钮更改为下单小票打印设置FAQ(适用正餐6.0.1.0+,轻餐4.0.6.2+)

    适用版本:正餐6.0.1.0+,轻餐4.0.6.2+ 实际场景:更新后小票设置中的打印新加菜按钮更换为下单小票打印设置,更换后,设置中,有3个选项: 1.仅打印新加菜    (选中后,订单加菜后前台小 ...

随机推荐

  1. line-height && vertical-align 学习总结

    前言 line-height.font-size.vertical-align是设置行内元素布局的关键属性.这三个属性是相互依赖的关系,改变行间距离.设置垂直对齐等都需要它们的通力合作. 行高 lin ...

  2. spark JAVA 开发环境搭建及远程调试

    spark JAVA 开发环境搭建及远程调试 以后要在项目中使用Spark 用户昵称文本做一下聚类分析,找出一些违规的昵称信息.以前折腾过Hadoop,于是看了下Spark官网的文档以及 github ...

  3. LINQ to SQL 调用 SQL Server 的系统函数

    Ø  简介 在 C# 中比较常用的 ORM(Object Relational Mapping)框架就是 EF 了,EF 经常结合 LINQ to SQL 来操作数据库.本文主要讨论如何在 LINQ ...

  4. 玩转ubuntu之初体验

    安装的是ubuntu16.04.1,分区和具体细节就不多说了,非常简单 安装完之后要做的几件事: 1.设置root密码 #设置root密码 sudo passwd root 2.检查并更新系统 #ub ...

  5. 第六章 接口,lamda表达式与内部类

    接口 接口可以包含常量, 且不需要publish static final修饰, 接口的域会自动添加该修饰符. Java建议不要写多余的代码,因此省略修饰符更简洁. 全部都是常量的接口背离了接口的初衷 ...

  6. 机器学习爱好者 -- 翻译吴恩达老师的机器学习课程字幕 http://www.ai-start.com/

    机器学习爱好者 -- 翻译吴恩达老师的机器学习课程字幕 GNU Octave    开源  MatLab http://www.ai-start.com/ https://zhuanlan.zhihu ...

  7. IIS命令行静默安装脚本-python

    #coding=utf8 import platform from subprocess import Popen,PIPE,STDOUT import sys,os def run_cmd(cmd, ...

  8. 【原创】大叔问题定位分享(24)hbase standalone方式启动报错

    hbase 2.0.2 hbase standalone方式启动报错: 2019-01-17 15:49:08,730 ERROR [Thread-24] master.HMaster: Failed ...

  9. 解决 CentOS7 安装完成后ifconfig命令不能用

    今天用VMWare安装了CentOS7,选择了最小安装包模式,安装完毕之后想查看一下本机的ip地址,发现报错 # ifconfig -bash: ifconfig: command not found ...

  10. CENTOS 7 安装 TINYPROXY 代理服务器

    https://www.cnblogs.com/new_2050/p/7658508.html