我的程序可以运行,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"