Java 从USB设备接收数据
我尝试向usb设备发送命令并获得响应。这是一个定制的扫描仪。我和它有联系,这很好。我现在需要做的是发送命令DA AD 02 74 00打开设备。我这样定义命令:Java 从USB设备接收数据,java,android,usb,Java,Android,Usb,我尝试向usb设备发送命令并获得响应。这是一个定制的扫描仪。我和它有联系,这很好。我现在需要做的是发送命令DA AD 02 74 00打开设备。我这样定义命令: private final byte[] send = new byte[]{ (byte) 0xDA, (byte) 0xAD, // const (byte) 0x02, (byte) 0x74, (byte) 0x00, // com }; mT
private final byte[] send = new byte[]{
(byte) 0xDA, (byte) 0xAD, // const
(byte) 0x02, (byte) 0x74, (byte) 0x00, // com
};
mTestButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
UsbConnector connector = new UsbConnector(getApplicationContext(), device, listener);
connector.run();
connector.send(send);
Toast.makeText(MainActivity.this, "BYTE" + send, Toast.LENGTH_SHORT).show();
mRunning = true;
while (mRunning) {
byte[] received = connector.receive(36);
if (received == null) {
Toast.makeText(MainActivity.this, "NULL", Toast.LENGTH_SHORT).show();
mRunning=false;
}
if (received != null) {
Toast.makeText(MainActivity.this, "NIE NULL", Toast.LENGTH_SHORT).show();
mRunning=false;
}
}
}
我有一个UsbConnector.class,我在其中设置连接并执行其他奇怪的操作。我还有两种发送和接收数据的方法:
public int send(byte[] bytes) {
return currentUsbDeviceConnection.bulkTransfer(currentUsbEndpointOut, bytes, bytes.length, SEND_TIMEOUT);
}
public byte[] receive(int length) {
byte[] bytes = new byte[length];
int result = currentUsbDeviceConnection.bulkTransfer(currentUsbEndpointIn, bytes, bytes.length, RECEIVE_TIMEOUT);
if (result >= 0) {
return bytes;
}
return null;
}
我想在单击按钮后发送数据,如下所示:
private final byte[] send = new byte[]{
(byte) 0xDA, (byte) 0xAD, // const
(byte) 0x02, (byte) 0x74, (byte) 0x00, // com
};
mTestButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
UsbConnector connector = new UsbConnector(getApplicationContext(), device, listener);
connector.run();
connector.send(send);
Toast.makeText(MainActivity.this, "BYTE" + send, Toast.LENGTH_SHORT).show();
mRunning = true;
while (mRunning) {
byte[] received = connector.receive(36);
if (received == null) {
Toast.makeText(MainActivity.this, "NULL", Toast.LENGTH_SHORT).show();
mRunning=false;
}
if (received != null) {
Toast.makeText(MainActivity.this, "NIE NULL", Toast.LENGTH_SHORT).show();
mRunning=false;
}
}
}
但我仍然在接收时变为空。请帮忙:/