python代码似乎不起作用,并显示';名称';myDataone';未定义';

python代码似乎不起作用,并显示';名称';myDataone';未定义';,python,python-3.x,pygame,Python,Python 3.x,Pygame,我的代码需要在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 =

我的代码需要在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”时,它会说“name'myDataone'未定义”。请帮助。

您需要定义
arduinoSerialData.inWaiting()为什么要尝试使用从未收到的数据?如果
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