Пытаюсь отправить координаты мыши в arduino, но зависает в python

#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» и все равно не сработало