gpt4 book ai didi

javascript - 中断数据流并断开设备连接

转载 作者:行者123 更新时间:2023-12-01 00:47:17 25 4
gpt4 key购买 nike

基本上,我正在创建一个通过蓝牙与两个设备进行通信的应用程序。首先,我连接到第一个设备,然后连接到第二个设备。此时我开始从两个设备恢复数据(一个流数)。当用户单击“停止”时,我必须停止此数据读取并断开连接的设备。我该如何按照您的要求进行实现?

我使用react-native-ble-plx库

第一个问题是关于函数“stopConnection (device)”的我应该传递设备的值:this.model(this.props.device)。目前我收到错误。无法读取未定义的属性“cancelConnection”

第二个问题是数据流是连续的,因此当我单击“停止”按钮时大约 10 秒就会停止(“尝试停止 xD”)。谢谢

 constructor(props) {
super(props);
this.manager = new BleManager();
this.state = {
acc: [],
gyr: [],
mg: [],
};

scanDx() {
this.manager.startDeviceScan(null, null, (error, device) => {
if (error) {
return;
}
if (device.name == this.model_dx(this.props.ModelDevice)) {
this.manager.stopDeviceScan();
device
.connect()
.then(() => {
console.log("ConnectedDX.");
console.log(" ");
this.scanSx();
})
.then(() => {
this.deviceService_Dx(device);
})
.catch(() => {
Alert.alert("Alert.");
Actions.homepage();
});
}
});
}
stopConnection (device) {
device.cancelConnection()
return new Promise((resolve, reject) => {
resolve(console.log("Disconnected."))
})
}

render() {
device = this.model_dx(this.props.deviceModel)
const pressure = this.state.values.hasOwnProperty(this.Pressure)
? this.state.values[this.Pressure].join(" ")
: "-";
return (
<View>
<Text>First Device </Text>
<Text>{"Time:" + this.state.time}</Text>
<Text>{"Acc:" + this.state.acc.join(" ")}</Text>
<Text>{"Gyr:" + this.state.gyr.join(" ")}</Text>
<Text>{"Mg:" + this.state.mg.join(" ")}</Text>
<Text>{"Pressure:" + pressure}</Text>
<Text>{"Msg:" + this.state.info}</Text>
<View>
<Text>Second Device: </Text>
<Text>{"Time:" + this.state.time}</Text>
<Text>{"Acc:" + this.state.acc_dx.join(" ")}</Text>
<Text>{"Gyr:" + this.state.gyr_dx.join(" ")}</Text>
<Text>{"Mg:" + this.state.mg_dx.join(" ")}</Text>
<Text>{"Pressure:" + pressure}</Text>
<Text>{"Msg:" + this.state.info}</Text>
</View>
<View>
<TouchableOpacity
style={[style.button, style.buttonOK]}
onPress={() => this.stopConnection(device)} >
<Text style={style.buttonTesto}>Stop</Text>
</TouchableOpacity> </View>

最佳答案

react-native-ble-plx 模块中有一个函数可以停止扫描。

cancelDeviceConnection(deviceIdentifier: DeviceId): Promise

使用

const manager = new BleManager();
manager.cancelDeviceConnection(DeviceId)

或者

如果您有通过'new Divice()'创建的设备

new Device(nativeDevice: NativeDevice, manager: BleManager)

<小时/>

cancelConnection(): Promise

stopConnection (device) {
device.cancelConnection()
.then((device) => {
// Do work on device with services and characteristics
})
.catch((error) => {
// Handle errors
});
}
...
<TouchableOpacity
style={[style.button, style.buttonOK]}
onPress={() => this.stopConnection(device)} >
<Text style={style.buttonTesto}>Stop</Text>
</TouchableOpacity> </View>

关于javascript - 中断数据流并断开设备连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57273172/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com