Как заставить работать Bluetooth-соединение с python при загрузке для Raspberry Pi? - PullRequest
0 голосов
/ 25 марта 2020

Я опубликовал еще один вопрос для того же проекта через несколько дней go, хотя у него была другая предпосылка, потому что я не до конца понял проблему на тот момент. Это должна быть ссылка: Моя (рабочая) программа raspberry pi не работает правильно, когда я запускаю ее при загрузке

для TLDR: я работаю над проектом, чтобы получить Лодка на go в направлении местоположения GPS, так что я управляю серводвигателями, чтобы управлять им через путевую точку в коде и GPS / Акселерометр, чтобы получить местоположения и углы и все эти забавные вещи.

Когда я загружаю свой пи на монитор и запускаю код, который мне нужен, чтобы моя программа работала и включала связь через Bluetooth, программа работает правильно. Однако мне нужно, чтобы программа работала при загрузке без ввода команд вручную. Для этого я написал сценарий cron для запуска этих команд с тегом @reboot. Когда я перезагружаюсь сейчас, программа для управления лодкой появляется и работает. если я перепутаю акселерометр, чтобы изменить направление движения лодки, сервоприводы реагируют так, как должны. Я также могу подключить свой телефон к пи через Bluetooth. Проблема в том, что когда я отправляю данные через это соединение Bluetooth для изменения путевой точки, серводвигатели не отвечают, то есть я предполагаю, что программа не получает данные, которые я отправляю.

Как я уже сказал, программа работает правильно, если я выполняю все команды вручную. Есть ли специальный процесс, который мне нужен для go, чтобы программа python принимала данные связи bluetooth от программы, запущенной при загрузке? Последние пару дней я пробовал разные вещи и не имею дальнейших идей.

Вот некоторые фрагменты, очевидно, не все. Если вы хотите или нуждаетесь в большем, дайте мне знать, и я могу дать это, но это, скорее всего, проблема.

Из моей программы BlutoothComms:

import serial

class BluetoothComms:
  def __init__(self):
    self.ser = serial.Serial('/dev/rfcomm0', 9600, timeout = 1)
    self.ser.flushInput()

  def read(self):
    lineIn = self.ser.readline()
    return lineIn

и загрузочный скрипт:

#!/bin/sh
sudo pigpiod

sudo rfcomm watch hci0 &

python3 /home/pi/Desktop/PythonBoat/BoatBrain.py &

Спасибо!

...