가장 궁금했던, 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에서 잘 동작하는지 확인했습니다.
< 다음편에 계속..>
'Peugeot OBD app 만들기 도전' 카테고리의 다른 글
<3단계> iOS, Android 겸용 Peugeot OBD앱 초기 버전 완성(1) (1) | 2024.03.05 |
---|---|
<2단계 > Android, Mac OS, iOS: OBDII(ELM327) 동일 코드 실행(8) (0) | 2024.01.17 |
<2단계> Flutter_blue_plus 예제 코드로 OBDII write 명령 실행(6) (0) | 2024.01.15 |
<2단계> Flutter_blue_plus 예제 android 실행 결과와 API 정리(5) (0) | 2024.01.14 |
<2단계> (사전학습) 스마트폰에서 ELM327 명령 송수신 시도(4) (0) | 2024.01.13 |