>

현재 Flutter Blue를 사용하고 있으며 다음과 같은 문제에 봉착했습니다. https://github.com/pauldemarco/flutter_blue , 여기를 통해 기본 아이디어는 블루투스 장치에 연결하자마자 "FFE0"서비스가 있는지 확인한 다음 "FFE1"특성을 확인하기 시작한다는 것입니다. 이 특징은 프로젝트에 필요한 임의의 문자열을 뱉어냅니다.

특징이 열린 화면 이미지

위의 화면을 통해 블루투스 장치에 연결되는 즉시 특성에 대한 알림을 자동으로 설정하면됩니다.

이것은 현재 _Connect 기능에서 테스트중인 일부 코드입니다.

_connect(BluetoothDevice d) async {
    device = d;
    // Connect to device
    deviceConnection = _flutterBlue
        .connect(device, timeout: const Duration(seconds: 4))
        .listen(
      null,
      onDone: _disconnect,
    );
// Update the connection state immediately
    device.state.then((s) {
      setState(() {
        deviceState = s;
      });
    });
// Subscribe to connection changes
    deviceStateSubscription = device.onStateChanged().listen((s) {
      setState(() {
        deviceState = s;
      });
      if (s == BluetoothDeviceState.connected) {
        device.discoverServices().then((service) {
          service.forEach((_service){
            var characteristics = _service.characteristics;
            _service.characteristics.map((c) {
              print(c);
            });
            for(BluetoothCharacteristic _characteristic in characteristics) {
              device.readCharacteristic(_characteristic).then((_value){
                print(_value);
                if (_value.contains("FFE0")) {
                  print("Found!!");
              // do something 
                }
              });
            }
          });
          setState(() {
            services = service;
          });
          _getServices();
        });
      }
    });
  }

어쩌면 누군가 내 문제에 접근하는 방법에 대한 제안이있을 수 있습니다.

로빈

  • 답변 # 1

    https://github.com/Sensirion/smart-gadget-flutter/tree/master/lib를 찾았으며 다음 코드를 사용하여 문제를 해결할 수있었습니다.

         for(BluetoothService service in services) {
            for(BluetoothCharacteristic c in service.characteristics) {
              if(c.uuid == new Guid("0000ffe1-0000-1000-8000-00805f9b34fb")) {
                _setNotification(c);
              } else {
                print("Nope");
              }
            }
          }
    
    

    _connect 기능에 추가되었습니다.

    _connect(BluetoothDevice d) async {
        device = d;
    // Connect to device
        deviceConnection = _flutterBlue
            .connect(device, timeout: const Duration(seconds: 4))
            .listen(
          null,
          onDone: _disconnect,
        );
    // Update the connection state immediately
        device.state.then((s) {
          setState(() {
            deviceState = s;
          });
        });
    // Subscribe to connection changes
        deviceStateSubscription = device.onStateChanged().listen((s) {
          setState(() {
            deviceState = s;
          });
          if (s == BluetoothDeviceState.connected) {
            device.discoverServices().then((s) {
             services = s;
              for(BluetoothService service in services) {
                for(BluetoothCharacteristic c in service.characteristics) {
                  if(c.uuid == new Guid("0000ffe1-0000-1000-8000-00805f9b34fb")) {
                    _setNotification(c);
                  } else {
                    print("Nope");
                  }
                }
              }
              setState(() {
                services = s;
              });
              _getServices();
            });
          }
        });
      }
    
    

  • 답변 # 2

    여러 알림을 설정하고 변경 사항을들을 때 문제가 발견되었습니다

  • 이전 최신 버전의 반응 네이티브의 앱이 iOS에서 실행되고 있지 않습니다
  • 다음 python - 특정 규칙으로 배열의 요소를 인쇄