2016-10-16 3 views
0

J'ai des problèmes pour recevoir des données d'arduino et du module Bluetooth HC-05. J'ai essayé de recevoir des données avec PySerial et Pybluez, mais aucune n'a fonctionné pour moi. J'apprécie que quelqu'un puisse revoir ce que je fais de mal. J'ai trouvé cela dans StackOverflow, mais cela n'a pas fonctionné. Bluetooth communication between Arduino and PyBluezRéception de données depuis un module arduino et HC-05 en utilisant pyserial ou pybluez

Ceci est mon code arduino:

#include <SoftwareSerial.h> 

    #define RxD 10 
    #define TxD 11 

    SoftwareSerial BTSerial(RxD, TxD); 

    void setup() 
    { 
    BTSerial.flush(); 
    delay(500); 

    BTSerial.begin(9600); 
    BTSerial.println("The controller has successfuly connected to the PC"); 

    Serial.begin(9600); 
    delay(100); 
    } 

    void loop() 
    { 
    BTSerial.write("{Dato1: 545}"); 
    } 

C'est ainsi que je l'ai testé avec pyserial:

import serial 

device_handler = serial.Serial('COM6', 9600, timeout=1) 
count = 0 
while (count < 5): 
    print device_handler.readline() 
    count += 1 

device_handler.close() 

Et c'est comme ça que j'ai essayé avec pybluez, comme expliqué dans ce lien: https://people.csail.mit.edu/albert/bluez-intro/x232.html

import bluetooth 
import sys 
bd_addr = "20:15:03:19:27:02" 

port = 1 
sock = bluetooth.BluetoothSocket(bluetooth.RFCOMM) 
sock.connect((bd_addr, port)) 
print 'Connected' 
sock.settimeout(1.0) 

count = 0; 
while (count < 10): 
    data = sock.recv(12) 
    print 'received: %s'%data 

    count += 1 


sock.close() 

N l'une des deux formes a fonctionné pour moi. Pyserial ne lance pas d'erreur et effectue les cinq lectures. Apparemment, il ne reçoit rien. D'autre part, cette exception pybluez lance:

IOError: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond. 

Thaks pour votre aide et désolé pour mon anglais si mal.

Répondre

0

Dans votre code pybluez vous avez cette ligne de code

sock.settimeout(1.0) 

Ceci est la ligne qui est la cause de votre erreur, car l'Arduino ne répond pas à votre connexion Bluetooth dans ce 1 (seconde?) Période. Pour résoudre ce problème, supprimez cette ligne de code ou calculez le délai d'attente plus longtemps.