我通过蓝牙向蓝牙芯片发送命令有问题。
我有智能手机和BT芯片配对好。因为我可以发送" text"
BluetoothSPP bt;
void Heat() {
heat.setOnClickListener(
new View.OnClickListener() {
@Override
public void onClick(View view) {
bt.send("Text", true);
}
}
);
}
public void send(String data, boolean CRLF) {
if(mChatService.getState() == BluetoothState.STATE_CONNECTED) {
if(CRLF)
data += "\r\n";
mChatService.write(data.getBytes());
}
}
Heat是xml文件上的Button。热量只做这个代码。
但我不知道如何改造以证明发送和接收这些命令:
↓
Send: "$$$" Receive: "CMD"
Send: "S&,0404\r" Receive: "AOK"
Send: "S&,0400\r" Receive: "AOK"
Send: "---\r" Receive: "END"
我看到发送文本是成功的,因为芯片有LED接通,如果接受一些信息。
请给我建议或示例。
在创建
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_autoconnect);
Log.i("Check", "onCreate");
bt = new BluetoothSPP(this);
if(!bt.isBluetoothAvailable()) {
Toast.makeText(getApplicationContext()
, "Bluetooth is not available"
, Toast.LENGTH_SHORT).show();
finish();
}
bt.setBluetoothConnectionListener(new BluetoothConnectionListener() {
public void onDeviceConnected(String name, String address) {
Toast.makeText(getApplicationContext()
, "Connected to " + name
, Toast.LENGTH_SHORT).show();
}
public void onDeviceDisconnected() {
Toast.makeText(getApplicationContext()
, "Connection lost"
, Toast.LENGTH_SHORT).show();
}
public void onDeviceConnectionFailed() {
Log.i("Check", "Unable to connect");
}
});
bt.setAutoConnectionListener(new BluetoothSPP.AutoConnectionListener() {
public void onNewConnection(String name, String address) {
Log.i("Check", "New Connection - " + name + " - " + address);
}
public void onAutoConnectionStarted() {
Log.i("Check", "Auto menu_connection started");
}
});
TextView btnConnect = (TextView)findViewById(R.id.btnConnect5);
btnConnect.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
if (bt.getServiceState() == BluetoothState.STATE_CONNECTED) {
bt.disconnect();
/** Toast.makeText(getApplicationContext()
, "pripojene"
, Toast.LENGTH_SHORT).show(); **/
// bt.disconnect();
} else {
/** Toast.makeText(getApplicationContext()
, "nepripojene"
, Toast.LENGTH_SHORT).show(); **/
Intent intent = new Intent(getApplicationContext(), DeviceList.class);
startActivityForResult(intent, BluetoothState.REQUEST_CONNECT_DEVICE);
}
}
});
Log.i("Check", "onCreate");
textStatus = (TextView)findViewById(R.id.textStatus2);
bt = new BluetoothSPP(this);
if(!bt.isBluetoothAvailable()) {
Toast.makeText(getApplicationContext()
, "Bluetooth is not available"
, Toast.LENGTH_SHORT).show();
finish();
}
我可以与芯片通信,但我不知道如何发送命令。我想你只是改造 bt.send .. 如果?
答案 0 :(得分:0)
经过一些研究后,我发现您使用的是来自https://github.com/akexorcist/Android-BluetoothSPPLibrary的BluetoothSPP
库。
我不知道你为什么使用这个库,或者即使你必须使用它(如需求)但是看一下源代码,我可以看到它只是 Android内置蓝牙的包装器用于RFCOMM
通信的经典SDK (也称为Serial Port Protocol
- SPP )。
无论如何,所有与发送/接收数据相关的代码似乎都是在BluetoothService
中处理的我建议您创建自己的包装器,以便控制正在进行的蓝牙连接的流。然后,您将能够发送您想要的内容,因为它只需将字节写入流并在另一端读取它们。但是,您不确定您正在使用的远程Bluetooh chip
是什么。
如果有关于要发送内容的某种文档,请在通过流发送字节时按照该文档进行操作。
再次,查看BluetoothSPP
库的源代码,我只看到围绕Google的蓝牙聊天示例的简单包装器。就是这样,这里没有魔力。