#arduino #bluetooth #kivy
#arduino #bluetooth #kivy
Вопрос:
Это скорее базовый вопрос ООП, чем вопрос Kivy. У меня есть приложение с 4 кнопками. Когда я нажимаю один, я хочу инициализировать соединение Bluetooth с моего ноутбука на arduino uno, а также запланировать функцию, которая отправляет информацию Bluetooth каждую секунду.
Я использую следующий код:
class HomeScreen(Screen):
def OnConnect(self):
print('Start')
port = "COM7"
#connect to bluetooth
bluetooth = serial.Serial(port, 9600)
print("Connected to HC-06")
bluetooth.flushInput()
#schedule a function that sends tester present to arduino
Clock.schedule_interval(self.SendData, 1)
def SendData(self,*args):
bluetooth.write(b"Boop")
Очевидно, что «bluetooth» не отображается за пределами fct «OnConnect». Я хочу, чтобы Bluetooth был виден как для OnConnect, так и для sendData, но я хочу подключаться к arudino только при вызове OnConnect. Любая помощь приветствуется.
Комментарии:
1. Это не код Arduino.
Ответ №1:
Я просмотрел документацию по адресу:
https://kivy.org/doc/stable/api-kivy.clock.html
В нем говорится:
Если вы хотите запланировать вызов функции с аргументами по умолчанию, вы можете использовать модуль functools.partial python:
Поэтому я думаю, что что-то подобное должно сработать:
#schedule a function that sends tester present to arduino
Clock.schedule_interval(partial(self.SendData, bluetooth), 1)
def SendData(self, bt):
bt.write(b"Boop")