【发布时间】:2011-04-30 02:24:06
【问题描述】:
我正在尝试与蓝牙设备通信。我在设备上的信息表明
“通信协议是 ASCII,用逗号分隔输出值。消息以回车和换行对终止。使用终端仿真器将这些结果保存为文件时,可以将这些结果读入 Excel 电子表格。”
如何从该设备发送和接收?我曾尝试使用 InputStreamReader 和 OutputStreamWriter,但我认为这不起作用。
编辑:
我正在尝试发送数据:
public void send(String s){
try {
writer.write(s);
} catch (IOException e) {
e.printStackTrace();
}
}
在哪里
try {
tmpIn = socket.getInputStream();
tmpOut = socket.getOutputStream();
} catch (IOException e) { }
inStream = tmpIn;
writer = new OutputStreamWriter(tmpOut);
您还可以看到我在哪里使用 inStream,它是一个简单的 InputStream。我也尝试过 InputStreamReader,但我只是得到了随机字符。使用 InputStream,无论我发送什么设备,我都只能读取 4 个字节,所以我不确定发送是否正常。
我应该使用什么?谢谢!
【问题讨论】:
-
请详细说明。您尝试了哪些代码,遇到了哪些问题?包括任何结果或错误消息。
-
我在我的问题中添加了更多细节,感谢您的调查!
-
当有允许您指定编码的构造函数或方法时,切勿使用无编码构造函数或方法。如果您不指定编码,您将获得平台默认编码,这本质上是“随机编码”的委婉说法,导致代码依赖于平台。如果你的意思是
ASCII(只有 7 位),你应该指定它:new OutputStreamWriter(tmpOut, "ASCII"),但我怀疑它实际上是ISO-8859-1或其他一些 8 位编码。
标签: android bluetooth communication