Peugeot OBD app 만들기 도전

<2단계> Flutter_blue_plus 예제 코드로 OBDII write 명령 실행(6)

peugeotory 2024. 1. 15. 12:11

example 코드 수정해서 OBDII 명령(ELM327 AT 명령) 보내기 위해, 아래와 같이 "device_screen.dart" 코드를 수정하여 전송 버튼 만듭니다.

 

실행하면 아래 처럼 우측 상단에 작은 버튼 하나 생성됩니다.

 

위의 버튼을 눌렀을 때 실행될수 있도록  _sendElm327Command() 함수 만들어줍니다.

아래 두줄로 Service UUID = 0x1801의 Characteristic 0x2A05 선택해줍니다.

 

BluetoothService basicObiidiService = services[1];

BluetoothCharacteristic pidCharacteristic = basicObiidiService.characteristics[0];

 

 

원하는 기능을 선택하려면 현재 사용하는 BT 동글이 어떤 서비스를 제공해야 하는지 알아야 합니다.
사용한 BTL 동글은 아래와 같은 서비스 제공합니다. services[1]과 characteristics[0]는 아래 테이블에서 오랜지색이 선택됨을 의미합니다. (0x2A05)



<실행 결과> 각각 배열의 값을 변경해서 아래 4가지 서비스 선택후 결과 확인

 

(1) services[0], characteristics[0] = 0x2A00

(2) services[1], characteristics[0] = 0x2A05

(3) services[2], characteristics[0] = 0xFFF1

(4) services[2], characteristics[1] = 0xFFF2

 

 

실패와 성공으로 나눠진 이유는 Write 기능 (여기서는 Write만 가능하고 응답을 받지 않는 "WriteNoResp") 때문인 것으로 추정됩니다.

결국, (3),(4) Characteristic 기능만 OBD 명령을 보낼 수 있습니다.

 

 

그럼 AT 명령 보내고, 받아 보는 "Notifiy" 기능은 어느 서비스가 제공할까요?

 

< 다음편에 계속...>