2017-02-09 67 views
0

目前我正試圖瞭解控制軟件如何通過串行端口與調制解調器/ DCE進行通信。我在Python中使用PySerial來達到這個目的。我設法被動地收聽這兩者的通信,並且確實有一個軟件在執行幾個單獨動作時發送的字節串列表(例如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線之前,我開始我的實際點'聽'程序):這真的是最好的方式嗎?或者是否有一些細節和智慧,如def function()來定義我想發送的命令?

回答

0

from commandfile import Testcommand1()不起作用。

from commandfile import Testcommand1將。

你也可以導入它們都在做

from commandfile import * 
+0

啊!我懂了!看起來更好,謝謝。順便說一下,是否有一些(類似的)方式可以打印每個可用功能的列表?基本上,在決定通過input()調用哪一個函數之前,可以看到所有函數的列表。 – Tobitobitobi

+0

@Tobitobitobi:你在問另外一個問題。基本答案是肯定的,你可以確定一個模塊的屬性,比如'commandfile'包含了哪些屬性(以及哪些屬性可能是可調用的,因爲它們是可調用的)。人們通常使用某種命名慣例來幫助找到他們想要的東西。 – martineau