如何处理flutter_bluetooth_serial包中的字符串数据?

问题描述

我正在使用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

以下是Flutter代码以接收数据:

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
        }
    })