#python #arduino
#python #arduino
Вопрос:
У меня есть следующий код:
import time
import serial
import pyautogui
serial.Serial()
ser = serial.Serial("/dev/cu.usbmodem141201", 9600)
while True:
time.sleep(1)
position = int(pyautogui.position().x / (1440 / 180))
value = "X" str(position) "Y60"
print(value)
print(pyautogui.position().x)
#print(pyautogui.position().x / (1440 / 180));
ser.write(str(value).encode())
x = ser.readline()
print(x)
Я пытаюсь захватить координаты x на моем экране и отправить его через serial на мой arduino, однако он не работает. он просто печатает координаты и никогда не попадает в ser.readline(). Я попытался изменить запись на ввод, и это работает.
если я сделаю
value = input("enter: ")
ser.write(value.encode())
Это сработает, когда я вручную введу значения. Но когда я пытаюсь передать x cordinate автоматически, это не работает.
Комментарии:
1. Вероятно, arduino никогда ничего не помещает в последовательную строку, поэтому для
ser.readline()
чтения нет строки. Вы уверены, что arduino отправляет что-то обратно?2. да, у меня там есть writeln, потому что он работает, когда я ввожу число вручную, как только я извлекаю строку чтения, она работает автоматически. Я подумал, что, возможно, чтение строки занимает слишком много времени, но даже тогда она все равно должна работать… Я не знаю, в чем проблема с прочитанной строкой is..@L.Grozinger
3. можете ли вы также прикрепить код чтения arduino? Я предполагаю, что ваш arduino ничего не записывает обратно…
Ответ №1:
похоже, проблема была с readline. это заставляло его застревать … кто-нибудь знает, почему? как только я удалил его, он работает
Ответ №2:
serial.readline()
необходимо прочитать до » n», который добавляется всякий раз, когда вы отправляете команды вручную, нажимая enter. Попробуйте пометить это своим serial.write()
, когда вы передаете координату.
Комментарии:
1. попробовал это значение = «X» str (position) «Y60″ » n» и все равно не сработало