- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我的程序可以使用 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()
我的程序运行良好,但我没有得到正确的字符串。有什么建议吗?提前致谢...
更新:我的调制解调器使用带有 GSM SIM 卡的端口 COM3
。我得到一个包含巨大空间的字符串,例如:
+COPS: <...500 spaces...> 0,0,"Banglalink"
所以我讨厌那个空间。我需要一个字符串:+COPS: 0,0,"Banglalink"
最佳答案
您正在尝试从连接到串行端口的流中彻底读取(即直到读取所有数据)。如果端口上没有可用数据(等待数据到来),这将挂起。即使有数据,也会出现无限循环。
更新:您可以尝试这样的方法(改编自列出的代码 here ):
byte[] readBuffer = new byte[200];
try {
while (is.available() > 0) {
int numBytes = is.read(readBuffer);
sb.append(new String(readBuffer, "US-ASCII"));
}
} catch (IOException e) {
// handle exception
}
更新:更改字符串创建以使用指定的字符集(而不是系统默认值)
关于java - 将 InputString 转换为 String 就好像程序没有挂起一样,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10123315/
已关闭。这个问题是 not reproducible or was caused by typos 。目前不接受答案。 这个问题是由拼写错误或无法再重现的问题引起的。虽然类似的问题可能是 on-top
在以下代码行中,出现错误,指出它无法将代码中两个实例中的 inputString 识别为符号。 error: cannot find symbol inputString ^ 代码: import j
我正在研究 Java 中的枚举,我有一个问题在我的代码中不能很好地解决。 我用秒和一些名称做了我的枚举,后来,我做了一个在枚举类中查找它的方法。这个想法是根据操作的名称启动一个计数器(这就是我在 En
请帮我解决这个异常:- String strBinary="1000000000000000010000000000000000000000000000000000000000000000000000
我的应用程序中有以下 JavaScript 代码: var boo = function(inputStr) { if (!inputStr || inputStr === "") {
我在 Quora 上阅读了一个答案,在那里我遇到了一些简单的事情: char* inputString; printf(inputString); 是一个安全漏洞。 我假设 inputString 不
我的程序可以使用 inputStream.toString(); 运行,但如您所知,这不是将 inputStream 转换为 String 的好方法。因此,当我尝试正确转换时,它会挂起。我的方法是:
本文主要给大家介绍java的InputStream 流的使用。 (1)FileInputstream: 子类,读取数据的通道 使用步骤: 1.获取目标文件:new File()
有这个功能 var array = inputString.componentsSeparatedByString("\r") 用于从字符串创建字符串数组。是否有机会在插入之前转换数组的元素,以便我得
关闭。这个问题需要debugging details .它目前不接受答案。 想改进这个问题?将问题更新为 on-topic对于堆栈溢出。 5年前关闭。 Improve this question pu
typedef struct { char *inputString; int stringLenght; } InputString; string = (InputString *
使用 System.Diagnostics 中的进程类,我已经能够在程序中运行可执行文件,但我想在我的程序中生成文本并将其传递给可执行文件以直接转换为输出文件(. midi) 而不是生成文件然后转换文
我是一名优秀的程序员,十分优秀!