【发布时间】:2018-10-19 04:42:14
【问题描述】:
我的 HC 05 蓝牙模块在接收端与 8051 连接。 我想使用 android mobile 将 简单文本文件 发送到 HC 05 模块。 我怎么能这样做?
【问题讨论】:
-
到目前为止你做了什么?
-
我可以将单个字节发送到 HC 05。所以通信正常。
标签: bluetooth microcontroller 8051
我的 HC 05 蓝牙模块在接收端与 8051 连接。 我想使用 android mobile 将 简单文本文件 发送到 HC 05 模块。 我怎么能这样做?
【问题讨论】:
标签: bluetooth microcontroller 8051
如果你使用 Java。
首先,你应该得到默认的蓝牙适配器:
BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter();
接下来你应该得到你的HC-05的MAC地址,你可以在手机蓝牙设置中的连接列表中查看它,或者你可以在你的应用程序中扫描附近的设备并查看它们的名称:
/* Check HC-05 in paired devices */
public void findInPairedDevices() {
Set<BluetoothDevice> pairedDevices = adapter.getBondedDevices();
if (pairedDevices.size() > 0) {
for (BluetoothDevice device : pairedDevices) {
if (device.getName().equals("HC-05")) {
MACaddress = device.getAddress();
}
}
}
}
/* Scan nearby devices for HC-05 */
public void findInAvailableDevices() {
IntentFilter filter = new IntentFilter(BluetoothDevice.ACTION_FOUND);
BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (BluetoothDevice.ACTION_FOUND.equals(action)) {
BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
if (device.getName().equals("HC-05")) {
MACaddress = device.getAddress();
adapter.cancelDiscovery();
}
}
}
};
activity.registerReceiver(broadcastReceiver, filter);
int MY_PERMISSIONS_REQUEST_ACCESS_COARSE_LOCATION = 1;
/* Permission for Bluetooth search */
ActivityCompat.requestPermissions(activity,
new String[]{Manifest.permission.ACCESS_COARSE_LOCATION},
MY_PERMISSIONS_REQUEST_ACCESS_COARSE_LOCATION);
adapter.startDiscovery();
}
获取MAC地址后即可获取HC-05:
BluetoothDevice device = adapter.getRemoteDevice(MACaddress);
并且可以创建socket:
BluetoothSocket socket = device.createRfcommSocketToServiceRecord(myUUID);
myUUID 是您可以使用的 UUID:
myUUID = UUID.fromString("Your UUID string");
最后,启动套接字:
socket.connect();
接下来您可以使用InputStream 和OutputStream 与HC-05 进行通信:
if (socket.isConnected()) {
InputStream inputStream = socket.getInputStream();
OutputStream outputStream = socket.getOutputStream();
}
读取输入信息:
byte[] buffer = new byte[256];
int bytes;
bytes = inputStream.read(buffer);
String inMsg = new String(buffer, 0, bytes);
对于写输出信息:
String outStr = "Meow";
outputStream.write(outStr.getBytes());
下班后你应该关闭流和套接字:
inputStream.close();
outputStream.close();
socket.close();
注意:你不能忘记例外。
【讨论】: