Peugeot OBD app 만들기 도전

<2단계> Flutter_blue_plus 예제로 OBDII(ELM327) Notify 확인(7)

peugeotory 2024. 1. 16. 12:09

가장 궁금했던, OBDII ELM327칩이 전송 받은 명령에 대해 응답하는가? (Notify 기능)에 대해 확인했습니다. 이전글에서 진행했던것 처럼 AT 명령을 string으로 보내고 응답 받도록 코드를 수정했습니다.


<실행 결과>

각각 배열의 값을 변경해서 아래 4가지 서비스 선택후 결과 확인하면, (3) 조건만 응답 확인이 가능합니다.

 

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

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

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

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

 

 

(참고)Visual studio code의 "디버그 콘솔창"에서 확인시 아래와 같이 좀더 상세한 메시지 확인이 가능합니다.

 

I/flutter (30031): [FBP] [[ OnCharacteristicReceived ]] result: {error_string: GATT_SUCCESS, service_uuid: fff0, success: 1, remote_id: 00:10:CC:4F:36:03, error_code: 0, characteristic_uuid: fff1, value: 41545a0d}

I/flutter (30031): 응답 받은 notification

I/flutter (30031): ATZ 

 

I/flutter (30031): [FBP] [[ OnCharacteristicReceived ]] result: {error_string: GATT_SUCCESS, service_uuid: fff0, success: 1, remote_id: 00:10:CC:4F:36:03, error_code: 0, characteristic_uuid: fff1, value: 0d0d454c4d3332372076322e310d0d3e}

I/flutter (30031): 응답 받은 notification

I/flutter (30031): ELM327 v2.1

 

 

(3)번만 성공한 이유는, Write기능과 subscribe 기능 둘다 만족하기 때문입니다.

즉, 명령 보내고(WriteNoResp), 받기(subscribe : 아마도 notify기능)가 있어서 성공하고 나머지는 서비스는 둘중 하나만 기능 제공하기 때문에 실패합니다.

 

왜? Notify 또는 Notification이라고 하지 않았을까요?
처음 접한 저로서는 subscribe 용어 때문에 notify 기능이 없는줄 알았습니다.

 

안드로이드 폰에서 잘 동작하는 것을 확인했으니, 동일한 코드로

Mac OS나 iOS에서 잘 동작하는지 확인했습니다.

< 다음편에 계속..>