2016-09-20 6 views
0

Я работаю над проектом Bluetooth с участием одного Arduino (с Seeed bluetooth shield v2.0) и одного ноутбука ubuntu. В принципе, я хочу обмен сообщениями между Arduino и ноутбуком. Я спал с экраном ноутбука Arduino с ноутбуком. Затем я использую код ниже (на ноутбуке) для тестирования. Ардуино установлен как раб. И ноутбук отправляет тестовое сообщение.Отключено Bluetooth-соединение

#include <stdio.h> 
#include <unistd.h> 
#include <sys/socket.h> 
#include <bluetooth/bluetooth.h> 
#include <bluetooth/rfcomm.h> 

int main(int argc, char **argv){ 
    struct sockaddr_rc addr = {0}; 
    int s, status; 
    char buf[1024] = {0}; 
    char dest[18] = "00:0E:EA:CF:1E:62"; 

    for (size_t i = 1; i <= 30; i++) { 
    addr.rc_channel = i; 
    str2ba(dest, &addr.rc_bdaddr); 
    // connect to server 
    s = socket(AF_BLUETOOTH, SOCK_STREAM, BTPROTO_RFCOMM); 
    status = connect(s, (struct sockaddr *)&addr, sizeof(addr)); 

    if(status == 0) { 
     status = send(s, "Hello!", 6, 0); 
     status = recv(s, buf, sizeof(buf), 0); 
     if(status > 0) 
     printf("received %s\n", buf); 

     break; 
    } 
    } 

    if(status < 0) 
    perror("send error"); 

    close(s); 
    return 0; 
} 

Ниже приведен тестовый код на уровне Arduino.

#include <SoftwareSerial.h> //Software Serial Port 
#define RxD 7 
#define TxD 6 

SoftwareSerial bt(RxD,TxD); 
char buf[100]; 
size_t idx; 

void setup() { 
    Serial.begin(9600); 
    bt.begin(9600); 
    pinMode(RxD, INPUT); 
    pinMode(TxD, OUTPUT); 
    setupBlueToothConnection(); 
} 

void loop() { 
    Serial.println("Waiting ..."); 
    idx = 0; 
    memset(buf, sizeof(buf), 0); 
    while(bt.available()){ 
    buf[idx] = bt.read(); 
    idx++; 
    } 

while(idx >= 0){ 
    bt.write(buf[idx]); 
    idx--; 
    } 

    delay(1000); 
} 

void setupBlueToothConnection() { 
    bt.print("AT"); 
    delay(400); 

    bt.print("AT+DEFAULT"); // Restore all setup value to factory setup 
    delay(2000); 

    bt.print("AT+LADD?"); // Restore all setup value to factory setup 
    delay(2000); 

    bt.print("AT+NAMEProver"); // set the bluetooth name as "SeeedBTSlave" 
    delay(400); 

    bt.print("AT+PIN0000"); // set the pair code to connect 
    delay(400); 

    bt.print("AT+ROLE?"); 
    delay(400); 

    bt.print("AT+AUTH0"); 
    delay(400);  

    bt.flush(); 
} 

Получать сообщение об ошибке: «send error: Connection failed». В чем проблема? Может ли кто-нибудь помочь мне в этом? Благодаря!

Обновление: Возможно, проблема связана с номером порта. Но я проверил спецификацию для Seeed Bluetooth shield v2.0 и не нашел никакой подсказки относительно установки номера порта.

+0

Либо вашего сервера нет, либо нет маршрута к нему. Здесь не хватает информации о всей вашей системе, и это, скорее всего, проблема с сетью. – xaxxon

ответ

0

Основная проблема с Bluetooth на Arduino, за исключением кода, заключается в том, что Arduino подключен к ПК через USB-кабель и пытается использовать Bluetooth, насколько я знаю, большинство экранов подключаются напрямую к аппаратным RX и TX Arduino которые являются теми же портами, которые используются для связи через USB на ПК.

Итак, ваш Arduino подключен через USB-порт к ПК?

+0

После загрузки эскиза в Arduino я отсоединяю Arduino от ПК и использую розетку для питания. Но у меня все еще такая же проблема. Я теряюсь. – Sissi