为什么Java在从串行端口读取数据时如此缓慢?

为什么Java在从串行端口读取数据时如此缓慢?,java,time,serial-port,port,execution,Java,Time,Serial Port,Port,Execution,所以我使用SerialPort类从串行设备读取数据。我的代码如下所示。我研究了一下,发现串行数据的读取速度是100kb/秒。根据这一点,我的程序必须在2秒钟内读取数据,因为我用200000作为参数调用了readHexString函数,因此它读取200000字节,我只想知道为什么串行读取数据需要很多分钟 serialPort.openPort(); serialPort.setParams(SerialPort.BAUDRATE_57600,

所以我使用SerialPort类从串行设备读取数据。我的代码如下所示。我研究了一下,发现串行数据的读取速度是100kb/秒。根据这一点,我的程序必须在2秒钟内读取数据,因为我用200000作为参数调用了readHexString函数,因此它读取200000字节,我只想知道为什么串行读取数据需要很多分钟

serialPort.openPort();
        serialPort.setParams(SerialPort.BAUDRATE_57600, 
                             SerialPort.DATABITS_8,
                             SerialPort.STOPBITS_1,
                             SerialPort.PARITY_NONE);


        int count = 0;
        String data = serialPort.readHexString(200000);

您不能假定为100kb/秒

这导致2000000字节的时间为34722秒


我想问一下您的设备是否连续发送数据?您的代码读取200.000字节。因此,您必须等待缓冲区已满。您可以尝试循环少量数据,并在到达标记时中断。

您不能假定为100kb/秒

这导致2000000字节的时间为34722秒


我想问一下您的设备是否连续发送数据?您的代码读取200.000字节。因此,您必须等待缓冲区已满。您可以尝试循环少量数据,并在到达标记时中断。

这是一个非常粗略的计算。波特率设置为每秒57600位。您有200000字节要发送(即2000000位)。2000000/57600=不到35秒。串行数据以您指定的波特率读取,而不是“100kb/秒”。您指定的波特率比100kb/秒低得多。你预料到了什么?这是一个非常粗略的计算。波特率设置为每秒57600位。您有200000字节要发送(即2000000位)。2000000/57600=不到35秒。串行数据以您指定的波特率读取,而不是“100kb/秒”。您指定的波特率比100kb/秒低得多。你期待什么。