在使用CH34XUAR 1.7时候出现掉包

安卓在数据回调时出现的掉包情况,(registerDataCallback被调用的次数和预期的不符)

private void registerDataCallback(UsbDevice usbDevice){
    try {
        WCHUARTManager.getInstance().registerDataCallback(usbDevice, new IDataCallback() {
            @Override
            public void onData(int serialNumber, byte[] buffer, int length) {
                LogUtil.d(String.format(Locale.getDefault(),"serial %d receive data %d:%s", serialNumber,length, FormatUtil.bytesToHexString(buffer, length)));
                //1.注意回调的执行线程与调用回调方法的线程属于同一线程
                //2.此处所在的线程将是线程池中多个端点的读取线程,可打印线程id查看
                //3.buffer是底层数组,如果此处将其传给其他线程使用,例如通过runOnUiThread显示数据在界面上,
                //涉及到线程切换需要一定时间,buffer可能被读到的新数据覆盖,可以新建一个临时数组保存数据

                byte[] data=new byte[length];
                System.arraycopy(buffer,0,data,0,data.length);
                if(FILE_TEST){
                    updateReadDataToFile(usbDevice,serialNumber,data,length);
                }else {
                    updateReadData(usbDevice,serialNumber,data,length);
                }


            }
        });
    } catch (Exception e) {
        LogUtil.d(e.getMessage());
    }
}

请问这个是什么原因

已解决


安卓的效率比较低,高波特率不开硬件流控容易缓冲区溢出,115200以上就需要流控


只有登录才能回复,可以选择微信账号登录