Я написал этот короткий скрипт (из которого я убрал некоторые незначительные детали для размера), и я получаю очень простую ошибку, но я не понимаю, почему! Я очень новичок в 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
Наконец, просто чтобы пролить некоторый контекст на ситуацию:
Я пишу небольшое приложение с графическим интерфейсом в Glade и Python/PyGTK для управления шаговым двигателем через последовательный порт с помощью модуля PySerial. Однако я хотел бы упаковать свою собственную функцию «записи», чтобы я мог добавлять значения по умолчанию к «отправить» по кабелю. Например, номер двигателя и всегда добавление возврата в конце инструкции. Другие вещи, такие как прямое чтение ответа в той же функции, также были бы полезны для оценки ответов, поэтому было бы разумно заключить его в пользовательскую функцию.
Буду признателен за любые советы или помощь по вышеизложенному.
Спасибо-любезно.
Энди
ОБНОВЛЕНИЕ: у меня есть решение исходной проблемы, связанной с тем, что я не включил «я», и мне удалось заставить Стек принимать вкладки, которые я обычно использую, поэтому его чище для просмотра. Также хотел отметить, что единственный код, который я удалил, был простой установкой переменной. Однако проблема осталась!
commands
не определена в вашем методеsend_command
. Я не уверен, почему это происходит. Я посмотрю глубже. Вы пробовали использовать другое имя для аргумента? возможно, замените его наfoo
и посмотрите, работает ли он. - person Justin L.   schedule 30.06.2010nanotech
илиmotor_no
? - person Daniel Roseman   schedule 30.06.2010