2013-04-17 20 views
2

我使用pyserial打開一個python連接:爲什麼pyserial說我有12個參數時有11個?

self.fpga = serial.Serial(self.fpgaport, 115200, serial.EIGHTBITS, serial.PARITY_NONE, serial.STOPBITS_ONE, self.fpgapollinterval, False, False, None, False, None) 

這與pyserial文檔匹配這裏找到:

__init__(port=None, baudrate=9600, bytesize=EIGHTBITS, parity=PARITY_NONE, stopbits=STOPBITS_ONE, timeout=None, xonxoff=False, rtscts=False, writeTimeout=None, dsrdtr=False, interCharTimeout=None) 

然而,當我運行該腳本,我得到這個錯誤:

line 391, in run 

self.fpga = serial.Serial(self.fpgaport, 115200, serial.EIGHTBITS, serial.PARITY_NONE, serial.STOPBITS_ONE, self.fpgapollinterval, False, False, None, False, None) 

TypeError: __init__() takes at most 11 arguments (12 given) 

當我拿出最後一個參數(最後一個參數None)時,錯誤消失。

我還打印出所有變量名稱,以防一個超過1D。不是那樣。

我使用python 2.6.6,文檔是pyserial 2.6。我一直在努力找出如何找到我使用的是哪個版本的串口。

爲什麼python聲明我提供12個參數,當我只提供11?我必須在這裏錯過一些東西。

編輯:

如何才能知道我已經安裝了該串行版本?我正在運行的這段代碼可能是爲另一個版本的python編寫的(也是串行的)。我需要找出我想要的序列版本作爲參數。

回答

8

您作爲第一個參數隱式傳遞self


我知道這個答案並不解決你的問題,但是這就是爲什麼你的解釋告訴你,你逝去的12個參數時,你確實是只傳11米明確的人的原因。所以答案確實提供了,你的問題回答。如果您需要進一步的幫助,請提出一個更具體的新問題。

+1

你需要添加自己的第一個參數初始化聲明。 –

+0

我如何知道我安裝了哪個系列版本?我正在運行的這段代碼可能是爲另一個版本的python編寫的(也是串行的)。我需要找出我需要拿走哪個參數才能正確使用我的串口版本。 – stanri

+0

它通常寫在模塊的頂部,您必須自己查找文件並在編輯器中打開它以查看版本。 –

0

第十二個參數是self,它是總是傳遞給方法的對象的引用。

檢查serial.VERSION的版本,或做help(serial)

+0

剛剛意識到這並不真正回答這個問題,如果你使用serial.Serial出pyserial,因爲這應該採取11 +自我。你能顯示你的代碼嗎? –

+1

啊! 'help(serial)'給出'VERSION ='1.35''。難怪它不工作,這是pyserial版本2.6後面的方式。 – stanri

+0

Re:代碼,它是開源的。請參閱miner.py:https://github.com/progranism/Open-Source-FPGA-Bitcoin-Miner/tree/master/projects/VHDL_Xilinx_Port – stanri

相關問題