在 Android 上与 USB 设备通信
Communicate with USB device on Android
我有一个用于 Windows 的 RFID usb reader,可用作外部键盘。当插入我的笔记本电脑时,reader 在扫描 RFID 对象时传输一个数字 (0014671609)(就像您在真实键盘上输入数字一样)。
我的目标是制作一个 Android 应用程序,该应用程序还可以在扫描 RFID 对象时打印编号。
目前,我可以连接到设备,当我扫描某些内容时会收到回复,但我无法阅读回复。这是我的代码:
public void run() {
try {
int packetSize = deviceEndpoint.getMaxPacketSize();
ByteBuffer buffer = ByteBuffer.allocate(packetSize);
UsbRequest outRequest = new UsbRequest();
outRequest.initialize(deviceConnection, deviceEndpoint);
outRequest.queue(buffer, 1);
if (deviceConnection.requestWait() == outRequest) {
UsbRequest inRequest = new UsbRequest();
inRequest.initialize(deviceConnection, deviceEndpoint);
if(inRequest.queue(buffer, packetSize) == true){
deviceConnection.requestWait();
// get response data
byte[] data = buffer.array();
System.out.println("Response: " + new String(data, "UTF-8"));
}
}
} catch (Exception ex) {
System.out.println("ERROR: " + ex.getMessage().toString());
}
}
回复:
Response: ����'����������
在 android 中,您可以在主 activity 中使用 dispatchKeyEvent。
我有一个类似的设置,除了条形码扫描仪,它传输条形码就像我用外部键盘输入它一样。
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
System.out.println(event.getAction() + " " + event.getKeyCode() + " - " + (char) event.getUnicodeChar());
return true;
}
如果您想获取信息,这应该对您有所帮助。您应该只知道 RFID 序列何时完成。它是否传输了您可以留意的后缀?
请记住,此方法会捕获所有按键事件:向上键和向下键。你应该过滤这个。
我有一个用于 Windows 的 RFID usb reader,可用作外部键盘。当插入我的笔记本电脑时,reader 在扫描 RFID 对象时传输一个数字 (0014671609)(就像您在真实键盘上输入数字一样)。
我的目标是制作一个 Android 应用程序,该应用程序还可以在扫描 RFID 对象时打印编号。
目前,我可以连接到设备,当我扫描某些内容时会收到回复,但我无法阅读回复。这是我的代码:
public void run() {
try {
int packetSize = deviceEndpoint.getMaxPacketSize();
ByteBuffer buffer = ByteBuffer.allocate(packetSize);
UsbRequest outRequest = new UsbRequest();
outRequest.initialize(deviceConnection, deviceEndpoint);
outRequest.queue(buffer, 1);
if (deviceConnection.requestWait() == outRequest) {
UsbRequest inRequest = new UsbRequest();
inRequest.initialize(deviceConnection, deviceEndpoint);
if(inRequest.queue(buffer, packetSize) == true){
deviceConnection.requestWait();
// get response data
byte[] data = buffer.array();
System.out.println("Response: " + new String(data, "UTF-8"));
}
}
} catch (Exception ex) {
System.out.println("ERROR: " + ex.getMessage().toString());
}
}
回复:
Response: ����'����������
在 android 中,您可以在主 activity 中使用 dispatchKeyEvent。 我有一个类似的设置,除了条形码扫描仪,它传输条形码就像我用外部键盘输入它一样。
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
System.out.println(event.getAction() + " " + event.getKeyCode() + " - " + (char) event.getUnicodeChar());
return true;
}
如果您想获取信息,这应该对您有所帮助。您应该只知道 RFID 序列何时完成。它是否传输了您可以留意的后缀?
请记住,此方法会捕获所有按键事件:向上键和向下键。你应该过滤这个。