Android 小票打印USB


第一步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); 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM