1. 簡介
外設介面 LAN 口,錢箱口, usb2.0 口,串口,耳機孔等通用通信介面。
本文主要介紹錢箱口,usb 口和串口的使用方式。
2. 介面說明
2.1 錢箱口
錢箱口使用RJ12介面。 開發者可以通過向錢箱口發送數據來控制錢箱。
錢箱開發者文檔及資源文件
2.2 串口
串口使用 RJ11 介面,開發者可以通過串口的數據發送來控制外設。 商米設備的RJ11為四線,不支持硬流控(部分外設默認開啟硬件流控,這些設備無法通過RJ11連接商米主機)。
由於安全考慮,不支持串口節點遍歷,但可以直接打開埠進行通信
D2mini、T1、T1mini:機器底座串口的節點路徑 /dev/ttyHSL1;
T2、S2、T2lite、X2、T2mini:/dev/ttyHSL3;
N1、D2、D1s單屏:/dev/ttyS1;
N1、D2、D1s、S2cc、雙屏:/dev/ttyS3
D2s_KDS、D2_2nd: /dev/ttyS0 ( 或者軟鏈接 /dev/sunmi/pub/serial)
串口參考demo ,JNI參考

通信文檔事例:Jaynes 串口電子秤通信文檔(不同電子秤通信協議需參考每家廠商提供的 文檔)
2.3 USB 口
支持 USB2.0 協議的 USB 設備。USB 通信開發者文檔
SunmiOS支持的USB轉串口晶元列表
目前支持的USB轉串口晶元有:CH341、FT系列、PL2303、CP210X系列
插入USB轉串口線或者板子會生成:/dev/ttyUSERx節點,其中x:表示序號0,1,2,3.....
使用USB轉串口時請勿使用USB調試線,二者互斥,只能同時使用一個功能
2.3.1 獲取 USB 設備的 PID/VID
方法1: java代碼
try {
//獲得外接USB輸入設備的信息
Process p=Runtime.getRuntime().exec("cat /proc/bus/input/devices");
BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line = null;
while((line = in.readLine())!= null){ }
String deviceInfo = line.trim();
//對獲取的每行的設備信息進行過濾,獲得自己想要的。
} catch (Exception e) {
// TODO: handle exception e.printStackTrace();
}
// deviceinfo中包含每個設備的pid和vid
方法2: adb命令
adb shell cat /proc/bus/input/devices
2.3.2 通用 USB 外設HID設備默認支持 HID 協議設備(鼠標鍵盤掃碼槍等),可即插即用。
HID 掃碼槍
HID掃碼槍可即插即用:連接商米設備,在商米設備上打開一個可編輯框並獲取焦點,掃碼。此時編輯框應該被輸入條碼或者二維碼內容。
從代碼獲取掃碼內容可參考USB 外設通信谷歌開發者文檔
U盤
支持的U盤格式: FAT32:可讀可寫;NTFS:可讀不可寫 ;exFAT:不支持
攝像頭
商米支持 USB UVC 攝像頭 (如LogitechC170,C100,C525)Demo、源碼
2.3.3 商米讀寫器側邊欄可接入商米讀卡器(刷卡槽介面)
商米讀卡器包含兩部分:一部分為磁條卡刷卡,磁條卡刷卡可參考商米讀卡器開發包和讀卡器demo。另一部分為nfc,nfc為android原生介面,可參考android nfc開發文檔
第三方通用讀寫器商米目前已經支持四款第三方usb通用讀寫器,開發者可參考商米提供的demo做讀卡寫卡操作。
上海億矽智能科技有限公司 UM002讀卡器
深圳市德卡科技有限公司 T10讀寫器(需支持android版本,電源充電版)
香港龍傑智能卡有限公司 ACR1281U-C1讀寫器
香港龍傑智能卡有限公司 ACR1281U-K1讀寫器