首页 > 解决方案 > 为什么收不到数据

问题描述

根据存储库,我制作了一个应用程序,理论上使用 Android 作为主机 UsbManager 模式与光学设备通信:https ://github.com/mik3y/usb-serial-for-android

我连接到 ABACUS A9U 电缆并与光学设备通信。他发送要写入的字节并接收它们,但是当我请求读取响应时,我什么也没收到。

这是我的代码

 private void Conection(UsbManager manager) throws IOException{
    List<UsbSerialDriver> drivers = UsbSerialProber.getDefaultProber().findAllDrivers(manager);
    if (drivers.isEmpty()){
        Log.i(TAG,"Driver No Disponibles"+"\n");
    }else{
        UsbSerialDriver driver = drivers.get(0);
        Log.i(TAG,"Driver "+driver.toString()+"\n");
        UsbDeviceConnection con = manager.openDevice(driver.getDevice());
        Log.i(TAG,"Conexión "+con+"\n");
        UsbSerialPort port = driver.getPorts().get(0);
        Log.i(TAG, "Puerto "+port+"\n");
        port.open(con);
        port.setParameters(9600,8,UsbSerialPort.STOPBITS_1,UsbSerialPort.PARITY_NONE);
        Log.i(TAG,"Numero Conexión "+ con.getSerial() +"\n");

        port.setDTR(true);
        port.setRTS(true);

        Log.i(TAG,"CTS "+ port.getCTS());
        Log.i(TAG,"RTS "+ port.getRTS());
        Log.i(TAG,"DTS "+ port.getDTR());

        String ss = "55";
        byte[] ss2 = ss.getBytes();

        int PW1 = port.write(ss2,1000);
        if (PW1 != 0){
            Log.i(TAG,"Escritura 1 "+ PW1 + " Bytes Escritos con valor de "+ new String(ss2) +"\n");
        }

        String Frame_Request = "EE0000000001201310";
        byte[] Frame_Request_B = Frame_Request.getBytes();
        int PW2 = port.write(Frame_Request_B,1000);
        if (PW2!= 0){
            Log.i(TAG,"Escritura 2 "+ PW2 + " Bytes Escritos con valor de "+ new String(Frame_Request_B) +"\n");
            Request.setText(new String(Frame_Request_B));
        }else{
            Log.i(TAG,"Error en Escritura 2 "+ PW2 + " Bytes Escritos con valor de "+ new String(Frame_Request_B) +"\n");
        }

        byte[] Frame_Response_B = new byte[14];
        int PR1 = port.read(Frame_Response_B,14000);
        if (PR1 != 0){
            Log.i(TAG,"Lectura 1 "+ PR1 + " Bytes Leídos con valor de "+ new String(Frame_Response_B) +"\n");
            Response.setText(new String(Frame_Response_B));
        }else{
            Log.i(TAG,"Error en Lectura 1 "+ PR1 + " Bytes Leídos con valor de "+ new String(Frame_Response_B) +"\n");
        }

        port.close();
    }
}

输出是读取的 0 字节。有人能告诉我为什么吗?

标签: javaandroid

解决方案


推荐阅读