通过蓝牙从 Java 服务器发送字符串到 Android 客户端
Send String through Bluetooth From Java Server to Android Client
我在使用蓝牙从服务器向客户端发送数据时遇到问题。
我想每 5 秒从 PC 服务器向 Android 客户端发送 360 字符串。但是我只能发送一个字符串,尤其是在'\n'之后,然后服务器关闭。
谁能帮我理解这段代码?实际上我只是从 here.
得到这段代码
这是我的服务器代码。
public class SimpleSPPServer {
//start server
private void startServer() throws IOException{
//Create a UUID for SPP
UUID uuid = new UUID("1101", true);
//Create the servicve url
String connectionString = "btspp://localhost:" + uuid +";name=Sample SPP Server";
//open server url
StreamConnectionNotifier streamConnNotifier = (StreamConnectionNotifier)Connector.open( connectionString );
//Wait for client connection
System.out.println("\nServer Started. Waiting for clients to connect...");
StreamConnection connection=streamConnNotifier.acceptAndOpen();
RemoteDevice dev = RemoteDevice.getRemoteDevice(connection);
System.out.println("Remote device address: "+dev.getBluetoothAddress());
System.out.println("Remote device name: "+dev.getFriendlyName(true));
/*
//read string from spp client
InputStream inStream=connection.openInputStream();
BufferedReader bReader=new BufferedReader(new InputStreamReader(inStream));
String lineRead=bReader.readLine();
System.out.println(lineRead);
*/
//send response to spp client
**String message = "-0.145 \n";
byte[] msgBuffer = message.getBytes();
OutputStream outStream=connection.openOutputStream();
outStream.write(msgBuffer);**
//PrintWriter pWriter=new PrintWriter(new OutputStreamWriter(outStream));
//pWriter.write("Response String from SPP Server\r\n");
//pWriter.flush();
//pWriter.close();
streamConnNotifier.close();
}
基本上我想把加粗的部分改成这个:
Byte [] msgBuffer;
OutputStream outStream;
for(int i=0;i<5;i++)
{
String message = "-0.145" + i;
msgBuffer = message.getBytes();
outStream=connection.openOutputStream();
outStream.write(msgBuffer);
}
但是不能接受多个数据。
这是我的客户端:
try {
inStream = btSocket.getInputStream();
//outStream = btSocket.getOutputStream();
BufferedReader bReader=new BufferedReader(new InputStreamReader(inStream));
String lineRead = bReader.readLine();
newNumber = Double.valueOf(lineRead);
numbertime = (double) 0;
DataPoint v = new DataPoint(numbertime,newNumber);
mlii.appendData(v, true, 1);
System.out.println("data"+v);
//System.out.println("I got the text from server = "+lineRead);
//out.append("I got the text from server = "+lineRead);
} catch (IOException e) {
AlertBox("Fatal Error", "In onResume() and output stream creation failed:" + e.getMessage() + ".");
}
这个库适用于蓝牙 https://github.com/palaima/AndroidSmoothBluetooth
我在使用蓝牙从服务器向客户端发送数据时遇到问题。
我想每 5 秒从 PC 服务器向 Android 客户端发送 360 字符串。但是我只能发送一个字符串,尤其是在'\n'之后,然后服务器关闭。 谁能帮我理解这段代码?实际上我只是从 here.
得到这段代码这是我的服务器代码。
public class SimpleSPPServer {
//start server
private void startServer() throws IOException{
//Create a UUID for SPP
UUID uuid = new UUID("1101", true);
//Create the servicve url
String connectionString = "btspp://localhost:" + uuid +";name=Sample SPP Server";
//open server url
StreamConnectionNotifier streamConnNotifier = (StreamConnectionNotifier)Connector.open( connectionString );
//Wait for client connection
System.out.println("\nServer Started. Waiting for clients to connect...");
StreamConnection connection=streamConnNotifier.acceptAndOpen();
RemoteDevice dev = RemoteDevice.getRemoteDevice(connection);
System.out.println("Remote device address: "+dev.getBluetoothAddress());
System.out.println("Remote device name: "+dev.getFriendlyName(true));
/*
//read string from spp client
InputStream inStream=connection.openInputStream();
BufferedReader bReader=new BufferedReader(new InputStreamReader(inStream));
String lineRead=bReader.readLine();
System.out.println(lineRead);
*/
//send response to spp client
**String message = "-0.145 \n";
byte[] msgBuffer = message.getBytes();
OutputStream outStream=connection.openOutputStream();
outStream.write(msgBuffer);**
//PrintWriter pWriter=new PrintWriter(new OutputStreamWriter(outStream));
//pWriter.write("Response String from SPP Server\r\n");
//pWriter.flush();
//pWriter.close();
streamConnNotifier.close();
}
基本上我想把加粗的部分改成这个:
Byte [] msgBuffer;
OutputStream outStream;
for(int i=0;i<5;i++)
{
String message = "-0.145" + i;
msgBuffer = message.getBytes();
outStream=connection.openOutputStream();
outStream.write(msgBuffer);
}
但是不能接受多个数据。 这是我的客户端:
try {
inStream = btSocket.getInputStream();
//outStream = btSocket.getOutputStream();
BufferedReader bReader=new BufferedReader(new InputStreamReader(inStream));
String lineRead = bReader.readLine();
newNumber = Double.valueOf(lineRead);
numbertime = (double) 0;
DataPoint v = new DataPoint(numbertime,newNumber);
mlii.appendData(v, true, 1);
System.out.println("data"+v);
//System.out.println("I got the text from server = "+lineRead);
//out.append("I got the text from server = "+lineRead);
} catch (IOException e) {
AlertBox("Fatal Error", "In onResume() and output stream creation failed:" + e.getMessage() + ".");
}
这个库适用于蓝牙 https://github.com/palaima/AndroidSmoothBluetooth