问题描述
我正在使用Flutter_bluetooth_serial
软件包与Flutter应用中的HC-05
蓝牙模块进行通信。该模块负责每秒发送一次字符串HC05-1 Mode1 Data: 1.696728 V
到我的应用程序,但是在接收数据时,该值被分成几块,如下所示:
I/Flutter (24772): Data incoming: H
I/Flutter (24772): Data incoming: C05-1 Mo
I/Flutter (24772): Data incoming: de1 Data:
I/Flutter (24772): Data incoming: 1.696728
I/Flutter (24772): Data incoming: V
conn.input.listen((Uint8List data) {
String dataStr = ascii.decode(data);
print('Data incoming: $dataStr');
})
这是我必须发送数据的C代码:
sprintf((char*)sendbuf,"HC05-1 Mode1 Data: %f V\r\n",ttemp)
// send to bluetooth module
u2_printf("HC05-1 Mode1 Data: %f V\r\n",ttemp)
我有没有办法一次接收整个字符串值而不是块?
解决方法
Create variable String message='';
然后在您的函数中进行更改
conn.input.listen((Uint8List data) {
String dataStr = ascii.decode(data);
message+=dataStr;
if (dataStr.contains('\n')) {
print(message); // here you get complete string
message = ''; //clear buffer to accept new string
}
})