私のプログラムは で実行できますinputStream.toString();
が、ご存じのとおり、それは に変換する良い方法ではありませinputStream
んString
。そのため、適切に変換しようとするとハングします。私の方法は次のとおりです。
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
if(initialized && connected){
try{
sms.findOperator();
jTextArea2.append(sms.logString);
sms.logString = "";
}
catch(Exception e){
JOptionPane.showMessageDialog(null, "Failed to find operator!", "ERROR", JOptionPane.ERROR_MESSAGE);
}
}
else JOptionPane.showMessageDialog(null, "Cannot connect to the port specified!", "ERROR", JOptionPane.ERROR_MESSAGE);
// TODO add your handling code here:
}
これはfindOperator()
方法です:
public void findOperator(){
send("AT+COPS?\r\n");
}
send()
メソッドは次のとおりです。
public void send(String cmd) {
try {
//Thread.sleep(200);
outputStream.flush();
outputStream.write(cmd.getBytes());
inputStream = serialPort.getInputStream();
//System.out.println(" Input Stream... " + inputStream.toString());
Thread.sleep(300);
logString += inputStreamtoString(inputStream);
}
catch(Exception e){
e.printStackTrace();
}
finally{
//logString += inputStream.toString()+ '\n';
// if(infoType == "msg") return "Input Stream... " + inputStream.toString()+ '\n';
// else return inputStream.toString();
//return logString;
//logString += inputStreamtoString(inputStream);
}
}
そして、これはinputStreamtoString()
方法です:
public String inputStreamtoString(InputStream is) throws IOException{
// try {
// return new java.util.Scanner(is).useDelimiter("\\A").next();
// } catch (java.util.NoSuchElementException e) {
// return "";
// }
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
StringBuilder sb = new StringBuilder();
String line = null;
try {
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return sb.toString();
}
inputStreamtoString()
メソッドを使用せずinputStream.toString()
にプログラムを使用すると、適切に実行されますが、適切な文字列が得られません。なにか提案を?前もって感謝します...
更新:私のモデムはCOM3
、GSM SIM カードのポートを使用しています。次のような巨大なスペースを含む文字列を取得します。
+COPS: <...500 spaces...> 0,0,"Banglalink"
だから私はそのスペースが嫌いです。文字列が必要です:+COPS: 0,0,"Banglalink"