[英]Java - Serial port data extraction
我對 Java 和一般編程相當陌生。 我正在 Java Swing 中制作一個應用程序,該應用程序從連接到點鈔機的串行端口讀取數據。 當機器計數某物時,它通過RS232-USB轉換器將計數數據發送到PC。 我設法制作了一個應用程序,可以找到並打開 COM 端口,並從機器中讀取數據。 這是我得到的數據:
是否可以僅從 output 中提取某些信息? 例如只有 D10 的單元數? 如果是這樣,我該怎么做?
想法是將所有信息分別寫入已經定義的JTextfields
。
我試過這樣的事情:
while ((line = portReader.readLine()) != null) {
//window.ta_logs.append(line + "\n");
StringTokenizer st = new StringTokenizer(line);
while (st.hasMoreElements()) {
String token = st.nextToken();
if (token.contains("D50")) {
data.put("D50", token.substring(2));
}
window.ta_logs.append(token);
}
System.out.println(line);
System.out.println(data);
}
提前致謝。
"是否可以從這個 output 中只提取某些信息? "
當然這是可能的。 您已經從串行端口讀取數據。 您可以標記數據並存儲在 map 中。
// Get the data from serial port and tokenize it
Map<String, Whatever> data = new HashMap<>();
data.put("D10", XXX);
data.put("D20", YYY);
...
然后,您可以在相應的文本框中設置文本
d10TextField.setText(data.get("D10"));
d20TextField.setText(data.get("D20"));
...
您只需要讓這個 map 可訪問。
while (input.available() > 0) {
input = serialPort.getInputStream();
int nBytes = input.available();
int c = input.read();
System.out.println("nBytes = " + nBytes);
System.out.println("read " + (char) c);
if (nBytes == 376) {
data.put("D10", (char) c);
} else if (nBytes == 344) {
data.put("D20", (char) c);
} else if (nBytes == 312) {
data.put("D50", (char) c);
} else if (nBytes == 280) {
data.put("D100", (char) c);
} else if (nBytes == 248) {
data.put("D200", (char) c);
} else if (nBytes == 216) {
data.put("D500", (char) c);
} else if (nBytes == 184) {
data.put("D1000", (char) c);
} else if (nBytes == 152) {
data.put("D2000", (char) c);
} else if (nBytes == 120) {
data.put("D5000", (char) c);
}
我這樣做並得到了想要的結果。
我的第二個問題是,例如,如果 D10 的數量超過 9 個,我該如何獲取數據。 在這種情況下,我必須考慮兩個字節,或者如果數字是 100 或更多,則考慮三個字節。
有任何想法嗎?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.