저는 블루투스 프로그래밍에 익숙하지 않으므로 유의하시기 바랍니다.자바 데스크탑 블루투스 클라이언트가 서비스를 찾을 수 없습니다.
필자는 데스크톱 PC, 특히 제퍼 HxM BT에서 맥박 센서에 연결하려고합니다. 나는 특정 장치 드라이버를 사용하지 않고 있으며, 사용하고있는 Java 블루투스 라이브러리는 Bluecove이고 블루투스 스택은 BlueSoleil입니다. 나의 이해에서
, 내가 진행하는 방식이
1) BT 장치
public void startSearch() throws BluetoothStateException{
System.out.println("Inquiry started");
localdevice.getDiscoveryAgent().startInquiry(DiscoveryAgent.GIAC, this);
}
이 잘 작동하기위한 검사입니다, 내 펄스 벨트를 발견하고)
public void deviceDiscovered(RemoteDevice arg0, DeviceClass arg1)
이 호출 장치에서 서비스 검색
장치가 검색되면이를 검색해야합니다. DiscoveryAgent의 캐시 된 장치 목록에 추가하면 내 벨트를 발견 했음에도 불구하고 캐시 (및 사전에 알려진 장치)가 항상 비어있어 이것이 내 첫번째 문제입니다.
그래서 지금 내가하는 일은 내 장치 목록을 유지하거나 단순히 장치 검색에서 직접 서비스 검색을 시작하는 것입니다.
public int searchServices(int[] attrSet,
UUID[] uuidSet,
RemoteDevice btDev,
DiscoveryListener discListener)
throws BluetoothStateException
내 코드 :
나는 BT 장치 매뉴얼 및 DiscoveryAgent.searchServices에 javax.bluetooth 설명서를 읽고 올바른 매개 변수를 사용하지만,에서 왔어요 경우는 아직도 조금 확실치
public void searchServices(RemoteDevice device){
UUID[] uuidSet = new UUID[1];
uuidSet[0]=new UUID("1101",false); //Serial Port
System.out.println("Searching for services on " + device.getBluetoothAddress());
try{
agent.searchServices(null,uuidSet, device,this);}
catch (BluetoothStateException e){
System.out.println("BluetoothStateException caught.");
}
}
속성 매개 변수를 null로 설정했습니다. 문서에서 기본 속성을 사용하여 서비스를 검색하지만, ServiceID (0x0003) 만 속성으로 사용하려고 시도했기 때문에 null로 설정했습니다.
이것은 내가 붙어있어 기능에 올바른 BT 장치를 전달하고 검색을 시작하지만 결코 결과를 알려주지 않으며, 내가 아는 모든 예외도없고 호출도 영원히 검색합니다.
public void servicesDiscovered(int arg0, ServiceRecord[] arg1)
또는
public void serviceSearchCompleted(int arg0, int arg1)
그래서 내 질문이있다 같아요 - 내가 뭔가 잘못하고 있습니까? 어떤 제안? - BT 장치에 연결하는 다른 방법은 무엇이며,이를 수행하기 위해 장치에 대해 알아야 할 사항은 무엇입니까?
다음 단계는 HXM 장치에 연결하기 위해 수행되어야한다 : 여기
내가 장치 설명서에서 관련 생각 몇 가지 정보입니다. 1) 내지 4 검색된 HXM 장치) 페어 저가 서비스 HXM 5 쌍) 범위 3 블루투스 장치를 검색)을 HXM (2)에 연결하기를 원하는 디바이스/컴퓨터의 블루투스 서비스를 활성화)를 연결 HxM 장치의 직렬 포트로
위의 다이어그램은 Bluetooth HxM이 일반적으로 Bluetooth 링크를 통해 모바일 장치와 통신하는 것을 보여줍니다. HxM은 한 번에 하나의 링크 만 지원하며 Bluetooth SPP (Serial Port Profile)를 사용하여 • 115,200 보드 • 8 데이터 비트 • 1 스톱 비트 • 아니요 어떤 제안이 매우
편집을 부탁드립니다
패리티
: searchServices를 호출 한 후 난 그냥 콘솔 입력 루프를 사용하여 코드를 테스트하고있어 것을 추가 할, 그래서 프로그램이 즉시 종료되지 않은, 그것은해야 비동기 작업을 오해하지 않는 한 완료 시간이 필요합니다.
BlueSoleil이 검색 할 때 내 장치에 하나의 서비스를 찾는다 고 추가하고 싶습니다. BlueSoleil을 통해 장치가 페어링되고, 연결되고, 페어링되지 않고 연결이 끊긴 상태에서 서비스를 검색했습니다. 또한 BlueSoleil과 Windows 8의 자체 BT 스택에서 코드를 테스트했습니다. – mikal