код Python, который, кажется, не работает и говорит: «имя« myDataone »не определено» - PullRequest
0 голосов
/ 05 мая 2019

Мой код должен использовать ультразвуковой датчик на Arduino, и я отправляю данные на python, чтобы использовать pygame для создания виртуальной среды, и у кода есть проблема

import pygame
import serial

pygame.init()
arduinoSerialData = serial.Serial('/dev/cu.usbserial-1410', 9600)
screen = pygame.display.set_mode((400, 300))
done = False
is_blue = True
x = 0
y = 115

clock = pygame.time.Clock()

##if (arduinoSerialData.inWaiting()>0):
##  myData = arduinoSerialData.readline()

while not done:
  for event in pygame.event.get():
    if event.type == pygame.QUIT:
      done = True
    if event.type == pygame.KEYDOWN and event.key == pygame.K_SPACE:
      is_blue = not is_blue

  pressed = pygame.key.get_pressed()
  ##if pressed[pygame.K_UP]: y -= 0.1
  ##if pressed[pygame.K_DOWN]: y += 0.1
  ##if pressed[pygame.K_LEFT]: x -= 0.1
  ##if pressed[pygame.K_RIGHT]: x += 0.1
  if (arduinoSerialData.inWaiting()>0):
    myDataone = arduinoSerialData.readline()  
  x = myDataone

  screen.fill((0, 0, 0))
  if is_blue: color = (0, 128, 255)
  else: color = (255, 100, 0)
  pygame.draw.rect(screen, color, pygame.Rect(x, y, 60, 60))

  pygame.display.flip()
  clock.tick(60)

Там написано, что «имя» myDataone «не определено», когда это, пожалуйста, помогите.

1 Ответ

1 голос
/ 05 мая 2019

Вам нужно будет определить случай, когда arduinoSerialData.inWaiting() <= 0.

if arduinoSerialData.inWaiting() > 0:
    myDataone = arduinoSerialData.readline()
else:
    myDataone = ???

x = myDataone

Но, судя по вашему коду, я думаю, вы хотите подождать, пока в ожидании появятся данные?

from time import sleep

...

while arduinoSerialData.inWaiting() <= 0:
    sleep(0.2) # set this to something reasonable

myDataone = arduinoSerialData.readline()

x = myDataone

Лучшее решение можно найти здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...