Приложение принимает данные на USB-порт через CP2102 UART на USB-конвертер на нажатой кнопке. Я могу открыть USB-устройство, прочитать PID, но когда я вставляю фрагмент кода, где открыт последовательный порт, сбой приложений. Кто-нибудь знает, в чем проблема? (CP2102 library used)CP2102 Сбой приложений для Android
public class MainActivity extends AppCompatActivity {
private ToggleButton toggle;
private TextView textView;
private Toolbar toolbar;
private UsbSerialDevice serialPort;
private UsbManager usbManager;
private UsbDevice device;
private UsbDeviceConnection connection;
private UsbSerialInterface.UsbReadCallback mCallback = new UsbSerialInterface.UsbReadCallback()
{
@Override
public void onReceivedData(byte[] arg0)
{
// Code here
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
toolbar = (Toolbar) findViewById(R.id.toolbar);
textView =(TextView) findViewById(R.id.textView);
toggle = (ToggleButton) findViewById(R.id.toggleButton);
setSupportActionBar(toolbar);
usbManager = (UsbManager) getSystemService(Context.USB_SERVICE);
device = null;
connection = null;
HashMap<String, UsbDevice> usbDevices = usbManager.getDeviceList();
if(!usbDevices.isEmpty())
{
boolean keep = true;
for(Map.Entry<String, UsbDevice> entry : usbDevices.entrySet())
{
device = entry.getValue();
int deviceVID = 0;
deviceVID = device.getVendorId();
int devicePID = device.getProductId();
if(deviceVID != 0x1d6b || (devicePID != 0x0001 || devicePID != 0x0002 || devicePID != 0x0003))
{
// We are supposing here there is only one device connected and it is our serial device
connection = usbManager.openDevice(device);
textView.append("\nConnected USB Device ID:");
textView.append(Integer.toString(deviceVID));
serialPort = UsbSerialDevice.createUsbSerialDevice(device, connection);
keep = false;
}else
{
connection = null;
device = null;
}
if(!keep)
break;
}
}
toggle.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {
textView.append("\nLogging Started!\n");
if(serialPort != null)
{
if(serialPort.open())
{
// Devices are opened with default values, Usually 9600,8,1,None,OFF
// CDC driver default values 115200,8,1,None,OFF
textView.setText("Serial port opened");
serialPort.setBaudRate(115200);
serialPort.setDataBits(UsbSerialInterface.DATA_BITS_8);
serialPort.setStopBits(UsbSerialInterface.STOP_BITS_1);
serialPort.setParity(UsbSerialInterface.PARITY_NONE);
serialPort.setFlowControl(UsbSerialInterface.FLOW_CONTROL_OFF);
serialPort.read(mCallback);
}else
{
// Serial port could not be opened, maybe an I/O error or it CDC driver was chosen it does not really fit
textView.setText("Could not open port");
}
}else
{
// No driver for given device, even generic CDC driver could not be loaded
textView.setText("No driver");
}
} else {
textView.append("Logging Stopped!");
}
}
});
}
@Override
protected void onDestroy() {
super.onDestroy();
}
Что делает Android-монитор в Android Studio? Какую версию Android вы используете? Дополнительная информация поможет. – andred
Я не вижу, что делает Android Monitor, потому что я должен отключить USB-кабель и подключить CP2102. Я использую 6.0.1 Android vesrion – Nikson
Насколько ваше устройство и ваша машина разработки находятся в одной сети, вы можете подключать adb через сеть. Это описано здесь http://stackoverflow.com/q/2604727/589216 – andred