Написах този кратък скрипт (от който премахнах някои незначителни подробности за размера) и получавам много проста грешка, но не разбирам защо! Аз съм много нов в Python, така че може би някой може да обясни проблема и защо не работи?
Грешката изглежда пада, когато искам да отпечатам пълния потребителски сериен низ за запис обратно в конзолата, изглежда не разпознава аргументите, които изпратих на функцията.
Може би съм разбрал нещо много просто. Трябва да е просто за всеки, дори и с най-малкото разбиране на Python
наздраве
Кодът:
#! /usr/bin/env python
# IMPORTS APPEAR HERE ***
ser = serial.Serial(
port='/dev/ttyUSB0',
baudrate=115200,
parity='N',
stopbits=1,
bytesize=8
)
# Sets motor number
motor_no = "2"
# Lets create our main GUI class
class ArialApp(object):
# Default init stuff
def __init__(self):
# Create a builder object and create the objects from the .glade file
self.builder = gtk.Builder()
self.builder.add_from_file("../res/main.glade")
self.builder.connect_signals(self)
# Open the serial connection to the encoder and keep it open
ser.open()
# Custom function for sending commands down the serial. Needed to wrap defaults
# arround the custom 'serial.write' command.
self.send_command('A')
# Code removed for space.....
# Custom method for sending commands down serial with default ammendments
def send_command(self, nanotech):
# Send the command with the #, then motor number which should be global, then the command
# sent the the method followed by a return
ser.write("#" + motor_no + nanotech + '\r\n')
# Print to the console the full command sent down the pipe
# [[[ ERROR GOES HERE ]]]
print "#" + motor_no + nanotech + '\r\n'
# Just to show its in here...
if __name__ == "__main__":
app = ArialApp()
gtk.main()
Грешката:
File "main.py", line 62, in ArialApp
print "#" + motor_no + commands + '\r\n'
NameError: name 'commands' is not defined
И накрая, само за да хвърля малко контекст върху ситуацията:
Пиша малко GUI приложение в Glade и Python / PyGTK за управление на стъпков двигател по сериен път с помощта на модула PySerial. Въпреки това, бих искал да опаковам собствената си функция "write", така че да мога да добавя стойности по подразбиране към "send" по кабела. Например, номерът на двигателя и винаги добавянето се връща в края на инструкциите. Други неща, като четене на отговора веднага в същата функция, също биха били полезни за измерване на отговорите, така че опаковането му в персонализирана функция изглеждаше като разумно нещо.
Всеки съвет или помощ относно горното ще бъде оценен.
Любезно ви благодаря.
Анди
АКТУАЛИЗАЦИЯ: Имам адреси към първоначалния проблем с невключването на „self“ и успях да накарам Stack да приеме разделите, които обикновено използвам, така че е по-чист за гледане. Също така исках да отбележа, че единственият код, който премахнах, беше проста настройка на променлива. Проблемът обаче продължава!
commands
не е дефинирана във вашияsend_command
метод. Не съм сигурен обаче защо се случва това. Ще го разгледам по-дълбоко. Опитахте ли да използвате различно име за аргумента? може би го сменете сfoo
и вижте дали все още работи. - person Justin L.   schedule 30.06.2010nanotech
илиmotor_no
? - person Daniel Roseman   schedule 30.06.2010