我正在尝试从 TTL 输出设备获取串行数据,将其通过 JY-MCU 加密狗并在我的 Android 手机上读取。数据以 4 位 ASCII 十进制数字形式发送,后跟回车和换行。
使用 BluetoothChat,我可以在手机上正确看到传输的号码,但我想在应用程序中操纵号码,然后将操纵结果发送到屏幕。
我只需要读取数据,而不是发送它。
查看中的代码,BluetoothChat.java
我想我需要将 MESSAGE_READ 中创建的字符串转换为一个Integer
值,操作此整数,将其转换回字符串并将此结果发送到显示器。这是解决这个问题的正确方法吗?我曾尝试使用Integer.parseInt()
and String.valueOf
() 但没有成功。
我可以发布一段简单的代码,显示我正在尝试做的事情,但我认为我可能会犯一个简单的错误,有人可以先指出。
感谢大卫的任何建议
byte[] readBuf = (byte[]) msg.obj;
// construct a string from the valid bytes in the buffer
String readMessage = new String(readBuf,0, msg.arg1);
//remove any leading zero's
String readMessages = readMessage.replaceAll("^0*", "");
//remove any leading zero's
// Declare Integer
int newMessage;
// give the integer a value
newMessage = Integer.valueOf(readMessages);
// try some simple division
newMessage = newMessage / 100;
// back to a string
String finalMessage = Integer.toString(newMessage);
// display the result
mConversationArrayAdapter.add(mConnectedDeviceName+": " + finalMessage);
堆栈跟踪
01-25 18:09:12.905: E/AndroidRuntime(5413): 致命异常: main 01-25 18:09:12.905: E/AndroidRuntime(5413): java.lang.NumberFormatException: Invalid int: "" 01-25 18:09:12.905: E/AndroidRuntime(5413): 在 java.lang.Integer.invalidInt(Integer.java:138) 01-25 18:09:12.905: E/AndroidRuntime(5413): 在 java.lang.Integer .parseInt(Integer.java:359) 01-25 18:09:12.905: E/AndroidRuntime(5413): 在 java.lang.Integer.parseInt(Integer.java:332)