0

我正在使用flutter_bluetooth_serial包与HC-05我的 Flutter 应用程序中的蓝牙模块进行通信。该模块负责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)

我有什么方法可以一次接收整个字符串值而不是块?

4

1 回答 1

1
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
        }
    })
于 2021-03-14T12:25:23.677 回答