2012-05-02 1 views
2

저는 Bluetooth 프로그래밍이 처음이므로이 질문이 순진한 것처럼 보일 경우 사과드립니다.PC에서 여러 개의 Bluetooth 데이터 스트림 집계

즉, 내 잠재 고객은 블루투스를 통해 Windows PC로 데이터를 전송하는 맞춤 하드웨어 장치를 가지고 있다고 말했습니다. PC 소프트웨어는 가상 COM 포트를 열고 장치에서 데이터를 읽음으로써 장치에 연결합니다. 이 데이터를 실시간으로 시각화합니다.

그들이 원하는 것은 이러한 장치 중 3 개 (또는 다른 센서에 연결되는 매우 유사한 3 개의 장치)를 PC에 동시에 연결하는 것입니다. 그들은 세 가지 소스의 데이터를 통합하고 실시간으로 모든 것을 시각화하기 위해 소프트웨어를 다시 작성하려고합니다. 이는 데이터를 생성하는 각 장치와 화면에 나타나는 데이터 간의 지연이 최악의 경우 수십 밀리 초 정도 일 수 있음을 의미합니다.

내 질문은 두 가지입니다.

1). 이 일을 전혀 할 수 있습니까? PC의 소프트웨어가 동시에 3 개의 블루투스 지원 가상 COM 포트에 연결할 수있는 방법이 있습니까? (나는 그 대답이 "예"라고 추측하지만 그것은 확실하다).

2). 이 작업을 수행하는 데 가장 적합한 플랫폼은 무엇입니까? 원래 소프트웨어는 C++/MFC로 작성되었지만 개인적으로 좀 더 현대적인 그래픽과 GUI API를 사용할 수있는 방법을 선호합니다.

답변

1

내 라이브러리를 사용할 수 있습니다. 32feet.NET 예 : documentation

처음에는 이 아니고은 가상 COM 포트를 사용하기 때문에 설정하기가 어렵고 사용하기에 불투명하며 유지 관리가 어렵습니다. BluetoothClient.Connect 수술을 사용하십시오 (기기가 PC에 연결하는 경우 BluetoothListener). 그러면 소켓이 세 개가됩니다 (실제로는 NetworkStream). 비동기식이든 동기식이든 관계없이이 세 가지 소켓 모두에서 읽을 수 있습니다. 예 : General Bluetooth Data Connections

장치가 직렬 포트 프로필을 사용하므로 UUID/Guid BluetoothService.SerialPort을 사용하십시오. 세 장치에 필요한 것은 각각에 대한 장치 주소입니다. 디스커버리 (문서 참조)를 통해 장치를 가져 오거나 장치 주소가 장치의 레이블 또는 회로 보드에 쓰여지고 코드에서 const로 정의 할 수 있습니다. 예 :

static readonly BluetoothAddress DeviceAddr1 
    = BluetoothAddress.Parse("002233445566"); 

대기 시간에 대해서는 확인해야하며 다른 방법으로는 속도가 느려질 것이라고 생각합니다. .NET은 현대적이고 UI 용 WinForms, WPF 및 Silverlight 옵션을 사용합니다.

+0

문서를 올바르게 읽는다면 "peerStreamStream = cli.GetStream();"을 사용할 수 있습니다. 서비스 클래스가 SerialPort로 설정된 경우에도 - 맞습니까? 이 경우 각 개별 장치의 UUID 만 알면됩니다. 그런 다음 각 장치에 별도의 스트림을 열 수 있습니다. 그것은 꽤 산뜻합니다. 그렇다면 라이브러리를 확실히 확인해 보겠습니다. – Bugmaster

+0

답변 됨 : BluetoothClient (Connect + GetStream)는 모든 RFCOMM 서비스에서 작동하며 장치는 RFCOMM 서비스 SPP를 사용합니다. 따라서 세 장치의 장치 주소가 필요합니다. – alanjmcf

+0

고마워, 나는 그것을 밖으로 시도 할 것이다! – Bugmaster