为什么Java在从串行端口读取数据时如此缓慢?
所以我使用SerialPort类从串行设备读取数据。我的代码如下所示。我研究了一下,发现串行数据的读取速度是100kb/秒。根据这一点,我的程序必须在2秒钟内读取数据,因为我用200000作为参数调用了readHexString函数,因此它读取200000字节,我只想知道为什么串行读取数据需要很多分钟为什么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.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/秒低得多。你期待什么。