此應用程序通過串口加密狗通過USB串口設備進行通信。我已經能夠得到它來處理我的單個查詢沒有問題,但我有一個命令,將發送多個查詢到串行設備和在我看來,緩衝區如果越過。這裏是我的代碼部分:Thread.Sleep崩潰我的應用程序
這是我與20查詢陣列命令:
String [] stringOneArray = {":000101017d", ":0001060178", ":00010B016C", ":000110017D",
":0001150178", ":00011A016C", ":00011F0167", ":0001240178", ":0001290173",
":00012E0167", ":0001330178", ":0001380173", ":00013D0167", ":0001420178",
":0001470173", ":00014C0167", ":0001510178", ":0001560173", ":00015B0167", ":0001600178"};
這是我如何使用數組:
getVelocitiesButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
ftDev.setLatencyTimer((byte) 16);
int z;
for (z = 0; z < 19; z++) {
String writeData = (String) stringOneArray[z];
byte[] OutData = writeData.getBytes();
ftDev.write(OutData, writeData.length());
try {
Thread.sleep(50);
} catch (InterruptedException e) { }
}
}
});
不知道代碼的其餘部分是必要的但會添加它,如果需要的話。 所以ftdev是我的串口設備。它將查詢命令發送到串行設備,它接收以字節爲單位的響應,我使用For循環來構建響應,直到所有字節(每個響應31個字節),然後我處理該響應,並在那個時候它應該接收第二個查詢直到發送最後一個命令爲止。如果我允許FOR循環僅發送一個或兩個查詢,但使用大量的數組索引並且它崩潰,那麼這很好。圖我只是放慢FOR循環,並添加thread.sleep,但它凍結了應用程序和崩潰......什麼給了?有沒有其他方法來控制命令發送的速度?我儘可能儘快地發送它們,但恐怕我不太瞭解java。這是迄今爲止我在完成這個個人項目方面的主要墊腳石,一直困擾着爲期2天的研究和嘗試解決方案。
如果問題可以通過暫停輸出來解決,那麼您只需要將工作放在後臺線程中即可。您在'onClick'中所做的所有工作都會「凍結」應用。 –
請發佈您的相關日誌條目。 – dcow