2016-05-27 56 views
1

所以我使用SerialPort類從串口設備讀取數據。我的代碼如下所示。我研究了一下,發現串行數據以100kb /秒的速度讀取。因此,根據這一點,我的程序必須在2秒鐘內讀取數據,因爲我已經用200000作爲參數調用了readHexString函數,因此它讀取了200000字節,我只想知道爲什麼讀取數據需要很長時間連續?爲什麼Java從串口讀取這麼慢?

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


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

這是一個非常粗略的計算。您的波特率設置爲每秒57600位。你有200,000個字節要發送(即2,000,000比特)。 2,000,000/57600 =不到35秒。 – jr593

+0

串行數據以您指定的波特率讀取,而不是'100kb/sec'。您指定的*波特率低於100kb/sec。你期望什麼? – EJP

回答

2

你不能假設100KB /秒

D=Bd*o/(o+d)

這導致34722秒爲2000000個字節

我想問一下,如果你的設備是連續發送數據?您的代碼讀取200.000字節。所以你必須等到緩衝區滿了。您可以嘗試循環較少量的數據,並在達到標記時中斷。