2017-02-09 15 views
0

В настоящее время я пытаюсь понять, как управляющее программное обеспечение взаимодействует с модемом/DCE через последовательный порт. Для этой цели я использую PySerial в Python. Мне удалось пассивно прослушивать связь двух и иметь список байтовых строк (например, b'\x1d\x10\xff'), которое отправляет программное обеспечение при выполнении нескольких отдельных действий.Импорт и вызов списка различных команд как функций

Чтобы полностью понять командную структуру и ответов, я хочу использовать подход в проб и ошибок и имитировать управляющее программное обеспечение с моим собственным ПК, расширяя мой «слушать only'-скрипт, посылая команды и слушать потом для ответа. Прямо сейчас я определил эти команды как функции, например:

def Testcommand1(): 
    if serial.isOpen() == True: 
     serial.write(b'\x1d\x10\xff') 
     print('Testcommand1 to do some specific stuff sent, awaiting response.') 
    else: 
     print('ERROR: Serial port is closed') 

В конце концов, у меня будет 20-30 различных команд. Я планирую определить их в другом файле и вызвать их оттуда. Как я понимаю, для того, чтобы называть их мне нужно импортировать каждую функцию по отдельности, как

from commandfile import Testcommand1() 
from commandfile import Testcommand2() 
from commandfile import Testcommand3() 
... 

Это та точка, где я начинаю сомневаться, мой подход (потому что у меня будет 20-30 строк, прежде чем начать мое фактическое 'listen'-program): это действительно лучший способ? Или есть что-то тонкое и умнее, как def function(), чтобы определить мои команды, которые я хочу отправить?

ответ

0

from commandfile import Testcommand1() не будет работать.

from commandfile import Testcommand1 будет.

Вы также можете импортировать все делать

from commandfile import * 
+0

Ах! Я вижу! Выглядит лучше, спасибо. Есть, кстати, некоторый (аналогичный) способ распечатать список каждой доступной функции? В основном, чтобы просмотреть список всех функций, прежде чем решать, какой из них вызывать через 'input()' или что-то – Tobitobitobi

+0

@Tobitobitobi: Вы задаете другой вопрос. Основной ответ: да, вы можете определить, какие атрибуты содержит модуль, например 'commandfile' (и который, скорее всего, будет функционировать, потому что они вызываемы). Люди часто используют своеобразное соглашение об именах, чтобы помочь найти те, которые они хотят. – martineau

 Смежные вопросы

  • Нет связанных вопросов^_^