我正在创建一个基于蓝牙的 react-native 聊天应用程序,我在其中使用 react-native-bluetooth-serial-next 库(https://github.com/nuttawutmalee/react-native-bluetooth-serial-next)。我成功地将应用程序连接到另一台设备(连接到 STM32 的 HC-05 蓝牙模块),并且在从应用程序向另一台设备发送消息时没有任何问题。我的主要问题是接收步骤。到目前为止,我还没有找到任何有效的方法来帮助我赶上并打印其他设备发送的即时消息。我尝试在 useeffect 挂钩中使用 setinterval,在 setinterval 中,我将 read 方法放在下面的代码中,但从长远来看它不起作用。运行 read 方法后我需要做很多事情,并且应用程序停止响应可能是因为它没有在指定的 2 秒间隔内完成任务。我还尝试使用库提供的侦听器,但它不会立即触发 read 方法。
const [redata, setredata] = useState('');
const [device, setdevice] = useState(null);
...
useEffect((device = device) => {
const interval = setInterval(() => {
read1(device);
}, 150);
return () => clearInterval(interval);
});
...
const redataupdate = redata1 => {
setredata(redata1);
};
async function read1(id) {
const data = await BluetoothSerial.readFromDevice(id);
redataupdate(data);
if (redata != '') {
console.log(redata);
}
}