2014-04-30 6 views
1

블루투스 연결을 사용하여 웨어러블 장치를 IDE에 연결하려고합니다. 전에는 Windows OS에서 작동하도록 만들었지 만 Linux Mint로는 제대로 작동하지 않으려 고 노력하고 있습니다. 제대로 작동하도록 만들면 상황이 더욱 악화되어 스스로를 명확하게 설명하려고 노력할 것입니다. 가능한 한.블루투스 RFCOMM 연결 리눅스

초에

첫 번째 문제는, 나는 rfcomm0 포트에 처리에서 연결할 수 있었지만 그것은 단지 내가 255 컨텐츠 바이트 보냈다. 예를 들어, myPort.write (0x03)와 같은 명령을 보내서 웨어러블 장치의 스트리밍 샘플을 가져온 경우, 그 장치는 나에게 255 바이트를 보냈습니다. 같은 프로그램이지만 창에서 실행 중입니다. 장치에 요청한 모든 데이터가 있으므로 rfcomm0 포트에 문제가 있어야합니다. 제은/etc/블루투스이 닮은 : 06 : 66 : 42 : 10 : 44, I는 연결할 수 있었다 관리자로 처리를 실행하는 장치가 이미 RFCOMM 바인드 0 00 일, 페어링 된

rfcomm0 { 
    # Automatically bind the device at startup 
    bind yes; 

    # Bluetooth address of the device 
    device 00:06:66:42:10:44; 

    # RFCOMM channel for the connection 
    channel 1; 

    # Description of the connection 
    comment "Example Bluetooth device"; 
} 

포트 (내가 말했듯이 올바른 데이터를받지 못함). 나는 정말로 시리얼 포트에서 새로운 것이지만 내 추측은 아마 채널 번호 1이 맞지 않을 것입니다. 어떤 채널을 사용해야하는지 어떻게 알 수 있습니까?

SECOND PROBLEM

를 해결하려고 I는 RFCOMM 해제 rfcomm0 사용 (RFCOMM 바인드 다시 0 0시 6분 결합 후 채널 0 (다른 하나를 테스트하기 위해) 및 설정 rfcomm0 파일을 변경 : 66 : 42 : 10 : 44 0, 확인은 다른 채널에 연결하게) 내가 연결을 시도 할 때이 오류가 계속 처리를 실행 : 실제로 존재하는이 포트에 대한

Error opening serial port /dev/rfcomm0: Port not found 

파일을. 나는/dev/rfcomm0에 파일의 허가 마스크를 crw-rw-rw- 1 root dialout 216, 0 4 월 30 일 17:04/dev/rfcomm0으로 설정했다.

rfcomm0: 00:06:66:42:10:44 channel 0 clean 

그래서 ... 어떤 도움 : 나는 명령 RFCOMM을 사용하는 경우

는 나에게이 있습니다?

안부

편집

I는 채널 0에 RFCOMM 연결하면 두 번째 문제가 발생합니다. 그래서 :

-Channel 0 -> Port not found 
-Channel 1 -> Bytes with 255. 
-Channel X -> Nothing. 

그냥 Windows에서 동일한 코드가 잘 작동 기억합니다.

2

확인 편집, 착용 할 수있는 디바이스가 나는 방법 DRAW (메시지를 보낼 때 정보 바이트를 보내 주 ... 내가 뭔가를 얻고 것) buuuut 이런 종류의 내가해야하기 때문에 짜증 그것을 설정 방법에서해라. (그리기 방법에서 StartStreaming에 메시지를 보내는 것은 의미가 없다. 항상이 메시지를 보낸다.)

편집 3

이 ... 시간이 문제가 될 것으로 보인다 내가 설정 기능에서이 작업을 수행하는 경우 :

for(int i = 0; i < 50; i++){ 
    delay(200); 
    getSampleRate(); 
    } 

난 그냥 4 ~ 5 배 답변 패키지를 얻을 ... 나는 정말로 무슨 일이 일어나고 있는지 전혀 모른다.

void setup() 
{ 
    size(windowW, windowH); 
    smooth(); 

    // List all the available serial ports: 
    println(Serial.list()); 

    try { 
    myPort = new Serial(this, Serial.list()[0], 115200); 

    } catch (Exception e) { 

     println(e.getMessage()); 
     connectionError = true; 
    } 

    delay(2000); 

    /* 
    for(int i = 0; i < 50000; i++){ 
    delay(200); 
    getSampleRate(); 
    } 
    */ 
} 

void draw(){ 

    background(255); 

} 

// Called whenever there is something available to read 
void serialEvent(Serial port) { 

    int bytesAvailable = myPort.available(); 
    for(int i = 0; i < bytesAvailable; i++){ 
    println("Byte:", port.read()); 
    } 
} 

최종 편집

음, 많은 테스트를 연구 한 후에 나는 문제가 단지 리눅스에서 블루투스를 사용하여 포트 연결에 대한 생각 :

이 전체 코드입니다. 나는 Windows와 MAC에서 동일한 코드를 시도했는데 모든 것이 잘 돌아 간다. ...

답변

1

/etc/bluetooth와 바인딩 할 때 이전과 비슷한 것으로 나타났다.

나는 왜 그런 일이 일어날 지 모르지만 이것이 내가 일하는 방법이다.

나는/etc/블루투스를 비워 뒀다.

코드에서 모든 연결을 수행했습니다.

이를 사용해야합니다의 USB 블루투스를 연결 한 후 다음 USB 처음에 연결할 때마다하지 연결됩니다 때 위는 필요

bzero(temp, 256); 
sprintf(temp, "sudo hciconfig hci0 reset"); 
system((char*)temp); 

을 수행 할 수 있습니다. EMI로 인해 USB가 "플러그를 뽑고 다시 연결"하게되는 경우이 경우 다시 위의 사항을 실행해야합니다.

bzero(temp, 256); 
sprintf(temp, "sudo rfcomm release /dev/rfcomm1"); 
system((char*)temp); 
:

for(timeout = 0;; timeout++){ 
    access_status = access("/dev/rfcomm1", F_OK); 
    if(access_status != -1) break; /* file exist */ 
    if(timeout >= 10) { 
     printf("Failed to connect."); 
     return; 
    } 
    sleep(1); 
} 

가 I이 사용되는 연결을 종료하는 방법 : 접속이 이루어진 경우, 그때 점검이 사용

bzero(temp, 256); 
sprinttf(temp, "sudo rfcomm -r connect 00:06:66:42:10:44 1"); 
system((char*)temp); 

:

이 장치에 연결

sudo가 설정되어 있어야하므로 rfcomm 및 hcicon을 실행하는 데 암호가 필요하지 않습니다. 무화과.

관련 문제