센서와 휴대폰 사이에 가능한 유선통신방법
| topics | 504 네트워킹 |
일단 apple폰 (ios)와 센서간의 통신을 이용하려면 MFI에 등록해야한다.
표준 USB 장치의 경우는 안해도 된다고 한다.
하드웨어간의 통신은 ios, android 분기처리해서 개발해야함
ios : https://mfi.apple.com/
센서와의 직접 통신(유선)
- CDC(Communication Device Class)를 사용하는 것을 말함
- USB Host Mode를 이용하여 앱이 usb를 제어하고 통신할 수 있다.
https://accessories.android.com/demokit/?hl=ko - 디바이스에 센서가 직접 쓰고 저장하고 센서의 상태를 확인하려면 이 통신을 이용해야할 것으로 보인다.
- 각 기기의 이용 내부 프레임 워크
- android : UsbManager
- ios : External Accessory
- 시리얼 통신도 이 센서 통신중 하나
- UART를 이용하여 데이터를 직렬방식으로 전송하는 것
- 직접통신을 한다면 아마 시리얼 통신을 이용하지않을까..
- 장점
- 빠르다
- 앱이 usb를 제어할 수 있다.
- 단점
- ios까지 고려한다면 mfi 인증을 위한 비용, 시간 나감
표준 usb장치
여기서의 표준 usb장치는 USB Mass Storage 장치(예: USB 드라이브)나 HID 장치(예: 키보드, 마우스) 를 말함
- USB Mass Storage 장치
- 파일로 인식함
- 장점
- mfi인증 안해도되는듯함
- 단점
- 센서의 상태를 확인할 수 없음
- 파일형태로 데이터를 주고받을 수는 있을 듯함..
- 예를들어 최근 수정일과 제목이 맞는다면 이를 금방 측정한 데이터로 간주하고 사용할 수는 있을것
- HID
- 시스템(os)이 관리하는 장치로 앱에서 직접 처리가 불가능함
- 따라서 이방식은 고려사항이 아님
어떤 곳에 저장하는 것이 편한가
이걸 알아보게 된 계기는 회사분이 어떤 저장소에 저장하는 것이 편하냐는 질문에서 비롯되었다.
일단 지금까지 알아본 바로는 로컬기기에 직접 저장하지는 못함(통신할 수는 있음)
하지만 일단 쓸수 있다고 가정하고 csv를 로컬내 어느저장소를 쓸지에 대해 알아보도록함.
- ios의 경우
- documen 폴더 : 앱마다 접근할 수있는 document가 저장되어있음
- 접근 코드 :
FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)
- 안드로이드
- 앱별 내부 디렉토리 저장하면 될듯하다
- 경로 : /data/data/패키지명/*
- 접근 코드 :
File(context.filesDir, filename) - https://developer.android.com/training/data-storage/app-specific?hl=ko
- https://stackoverflow.com/questions/13006315/how-to-access-data-data-folder-in-android-device
- https://velog.io/@eia51/Android-%EC%A0%80%EC%9E%A5%EC%86%8C-%EA%B4%80%EB%A6%AC
결론
표준 usb를 이용할 경우 센서의 상태가 확인 불가능하며 데이터의 무결성을 보장하지 못하며 추가적인 기능을 추가하기도 힘듭니다. 따라서 일단 android를 타겟으로하여 센서와 직접통신을 이용하여 개발하는것이 용이해보입니다.