我正在研究一个从配对的蓝牙设备读取数据的android 4.0应用程序.我能够搜索可发现的蓝牙设备并配对设备.但是,我不确定如何通过串口从蓝牙设备读取数据?android系统是否支持SERIAL PORT?因为我在android系统中找不到像COM1或COM2这样的串口.目前,我正在使用BluetoothSocket配对设备.但是,有没有办法从像Windows这样的蓝牙串口读取数据呢?
socket = _devices.get(k).createRfcommSocketToServiceRecord(MY_UUID_SECURE);
socket.connect();
Run Code Online (Sandbox Code Playgroud)
任何帮助赞赏!谢谢你的支持.
问候,
查尔斯
就在这里.在socket
您收到可以给你一个InputStream
实例.如果socket
连接,你就可以读取数据(char
,String
或者byte
,这取决于你抚慰着你什么的读者InputStream
,如果你换一个).
要使用设备打开串行端口,必须使用用于创建套接字的UUID中的串行端口配置文件.在网络上抛出一个简单的UUID是
00001101-0000-1000-8000-00805F9B34FB
Run Code Online (Sandbox Code Playgroud)
然后,您可以创建套接字,连接到它,获取流以及使用它们读/写字节.示例:
private static final String UUID_SERIAL_PORT_PROFILE
= "00001101-0000-1000-8000-00805F9B34FB";
private BluetoothSocket mSocket = null;
private BufferedReader mBufferedReader = null;
private void openDeviceConnection(BluetoothDevice aDevice)
throws IOException {
InputStream aStream = null;
InputStreamReader aReader = null;
try {
mSocket = aDevice
.createRfcommSocketToServiceRecord( getSerialPortUUID() );
mSocket.connect();
aStream = mSocket.getInputStream();
aReader = new InputStreamReader( aStream );
mBufferedReader = new BufferedReader( aReader );
} catch ( IOException e ) {
Log.e( TAG, "Could not connect to device", e );
close( mBufferedReader );
close( aReader );
close( aStream );
close( mSocket );
throw e;
}
}
private void close(Closeable aConnectedObject) {
if ( aConnectedObject == null ) return;
try {
aConnectedObject.close();
} catch ( IOException e ) {
}
aConnectedObject = null;
}
private UUID getSerialPortUUID() {
return UUID.fromString( UUID_SERIAL_PORT_PROFILE );
}
Run Code Online (Sandbox Code Playgroud)
然后,在代码中的某处,您可以从阅读器中读取:
String aString = mBufferedReader.readLine();
Run Code Online (Sandbox Code Playgroud)
你可以使用OutputStream
和各种作者在相反的方向做同样的事情.
归档时间: |
|
查看次数: |
18401 次 |
最近记录: |