2016-07-19 3 views
1

저는 블루투스를 통해 Linux를 실행하는 임베디드 암 기반 장치와 통신하는 모바일 애플리케이션 (iOS 및 Android)을 개발 중입니다. 통신은 클라이언트 - 서버입니다. 전화 (클라이언트)는 장치와 쌍을 이루어 연결하고 쿼리를 보냅니다. 기기가이 검색어에 답장합니다.Cordova 응용 프로그램에서 iPhone에서 Bluetooth를 사용하는 방법은 무엇입니까?

저는 모바일 개발에 Cordova (및 Ionic 프레임 워크)를 사용하기로 결정했습니다. Android 부분이 완료되었습니다. 통신을 위해 나는 BluetoothSerial 플러그인 (https://github.com/don/BluetoothSerial)을 사용하고 있습니다.

장치의 서버 부분

이 튜토리얼을 기반으로합니다

https://people.csail.mit.edu/albert/bluez-intro/x502.html#rfcomm-server.c는 최근에 나는 아이폰 SE를 구입하고 난 아이폰 OS를 대상으로합니다. 블루투스 통신을 제외한 모든 기능이 정상적으로 작동합니다.

정확하게 이해한다면 iPhone의 Bluetooth 통신은 Bluetooth Smart (또는 Bluetooth Low Energy/BLE)로만 제한됩니다. 사용중인 BluetoothSerial 플러그인은 제한된 수의 기기로 iOS에서 통신 할 수 있습니다.

그래서 제 질문은 다음과 같습니다

  1. 는 iOS의 전체 블루투스 지원을 할 수 있습니까? 전체적으로는 클라이언트 (전화)가 구조화 된 데이터를 전송하고 기기가 일부 구조화 된 데이터를 텍스트로 회신하는 채팅과 같은 커뮤니케이션을 의미합니다.

  2. 그렇다면 BluetoothSerial 플러그인을 사용할 수 있습니까? 나는 또한 코르도바에 대한 BLE 플러그인을 찾았지만 블루투스 통신에 대한 지원은 매우 제한적으로 보인다. BLE 장치에 광고 된 특성을 가져 오거나 쓰는 것입니다.

  3. . 내가 맞습니까?

모든 단서, 제안 또는 솔루션을 제공해 주셔서 감사합니다.

+0

당신이 플러그인을 작성해야한다고 생각합니다. 코르도바는 이것에 대한 좋은 틀이 아닙니다. 이 모든 일을 네이티브에서해야합니다. –

+0

@KunalBalani 예, 하드웨어와 통신하기 위해 플러그인을 사용해야한다는 것을 알고 있습니다. 바로 Android 케이스에서 내가하고있는 것입니다. BluetoothSerial을 사용하고 있습니다. 내 질문은 이것이 iOS (100 % 기본 응용 프로그램 또는 Cordova 용 플러그인)에서 가능한지 여부입니다. 그리고 그렇다면 어떤 플러그인/라이브러리/프레임 워크를 사용할 것인가. – stepan

답변

1

이 시나리오에서는 Bluetooth를 사용하여 전화와 장치간에 통신하는 두 가지 옵션이 있습니다.

  1. 전화 --- 기존 블루투스를 통해 RFCOMM ------- 장치가 구현 (직렬 포트 프로필) SPP 서버

  2. 전화 --- 블루투스 낮은 에너지를 통해 GATT (BLE) - - 맞춤식 GATT 서비스를 구현하는 기기. BLE에는 표준 SPP GATT 서비스가 없습니다.

Serial plugin은 Android의 경우 옵션 1을, iOS의 경우 옵션 2를 지원합니다.

직렬 플러그인을 통한 Android 앱은 옵션 1을 사용하여 RFCOMM server을 실행하는 기기에 연결합니다. iOS 용 옵션 1을 사용하려면 기기가 MFi program을 통과해야한다고 생각합니다. 직렬 플러그인은 iOS 용 옵션 1을 지원하지 않습니다.

옵션 2의 경우 : 직렬 플러그인은 iOS의 경우 옵션 2를 지원하지만 Android의 경우 옵션 2를 지원하지 않습니다. https://github.com/don/cordova-plugin-ble-central은 Android 및 iOS 모두에서 옵션 2를 지원합니다. 장치는 이제 직렬 포트를 에뮬레이트하는 GATT 서비스를 구현해야합니다. 질문에 대한

답변

  1. 내가 iOS에서 기존 블루투스를 통해 SPP 프로파일에 대한 생각, 장치가있는 MFi과 호환되어야합니다.

  2. https://github.com/don/cordova-plugin-ble-centralhttps://github.com/randdusing/cordova-plugin-bluetoothle은 옵션 2의 Android와 iOS를 모두 지원합니다. 장치가 GATT 서비스를 구현해야합니다. 전화와 장치 간 통신 방법은 GATT 서버의 특성을 읽고 쓰는 것입니다.

  3. 예, 이제 장치는 GATT 서비스를 구현해야합니다. 현재 RFCOMM 서비스를 구현하고 있습니다.

+0

답장을 보내 주셔서 감사합니다!이제 MFi 인증이 현실적인 시나리오가 아니기 때문에 BLE/GATT 솔루션에 의존해야합니다. 연결 속도가 약간 걱정됩니다. Android 및 RFCOMM에서는 예를 들어 15fps로 작은 이미지 (10KB)를 전송합니다. 나는 이것이 더 이상 가능하지 않다고 생각한다 : http://stackoverflow.com/questions/10254048/iphone-4sble-data-transfer-speed – stepan

+0

장치와 전화가 LE 4.1을 지원한다면 최대 이론적 데이터 l2cap 계층에서의 속도는 ~ 305kbits/sec입니다. 응용 프로그램 계층에서 훨씬 낮아집니다. LE 4.2는보다 높은 데이터 전송률을 제공합니다. – Preeti

0

나는 싶은 것은 가능하다고 생각 :

  1. 아이폰 OS가 전체 블루투스 지원합니다. 블루투스 저에너지는 추가가 아닌 대체품입니다. 전체적으로는 블루투스 프로토콜 스택의 특정 레벨까지 모든 기능을 지원하지만 귀하의 질문은 약간 다릅니다. 또한 유스 케이스에 대한 프로파일이 있는지 묻는 중입니다. iOS에 대한 추가 사항은 블루투스 용 핵심 라이브러리 (BLE)와 IOBluetooth (기존 블루투스)에 대한 라이브러리가 있다는 것입니다.
  2. BluetoothSerial은 BLE 구현입니다. 코어 블루투스를 사용해야합니다. 그것 이외에 나는 그것이 효과가 없어야하는 이유를 보지 못한다.
  3. 저는 여러분이 실제로 사용한 것에 대해 혼란스러워하며 어떻게 작동 시키게되었는지 조금 혼란 스럽습니다. BluetoothSerial은 BLE 솔루션입니다. (의사가 말한 것입니다.) Bluetooth 표준을위한 프로토콜 인 RFCOMM을 사용하는 튜토리얼을 참조하십시오. 어떤 경우 든 BLE 또는 Bluetooth classic 및 RFCOMM을 사용하여 BluetoothSerial을 선택해야합니다.
+0

안녕하세요, 답장을 보내 주셔서 감사합니다. BluetoothSerial은 BLE 솔루션이 아닙니다. 이 플러그인은 실제로 Android에서는 Bluetooth Classic을, iOS에서는 BLE를 사용합니다. 지금까지 Android 솔루션 만 보유하고 있으며 iOS에서도 작동하는 유사한 솔루션을 찾고 있습니다. – stepan

+0

iOS의 BLE 전용 BluetoothSerial 코드입니다. iOS의 블루투스 클래식으로 이식 할 수 있어야합니다. 해당 플랫폼에서 제한되는 일부 기능이 필요한 경우가 아니라면 이러한 경우가 있습니다. Android 코드를 참조로 사용하여 필요한 모든 기능을 사용할 수 있는지 확인할 수 있습니다. –

+0

글쎄, 제대로 이해한다면, 아이폰과 블루투스 클래식을 사용하는 기기와 통신하고 싶다면, 당신의 기기는 애플 MFi 프로그램에 의해 인증을 받아야한다. 그렇지 않으면 BLE 만 사용할 수 있습니다. – stepan

관련 문제