2

私はpython接続を開くためにpyserialを使用しています:

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用です。使用しているシリアルのバージョンを見つける方法を見つけるのに苦労しています。

11 個しか指定していないのに、Python が 12 個の引数を指定していると主張するのはなぜですか? ここで何かが欠けているに違いありません。

編集:

インストールしたシリアル バージョンを確認するにはどうすればよいですか? 私が実行しているこのコードは、おそらく別のバージョンの Python (およびシリアル) 用に記述されています。私が持っているシリアルバージョンが引数として何を望んでいるのかを知る必要があります。

4

2 に答える 2

8

self最初の引数として暗黙的に渡しています。


この答えがあなたの問題を解決しないことは知っていますが、それが、実際には11個の明示的な引数しか渡していないのに、12個の引数を渡しているとインタープリターが伝える理由です。したがって、答えはまさにそれ、あなたの質問に対する答えを提供します。プログラムについてさらに支援が必要な場合は、新しい、より具体的な質問をしてください。

于 2013-04-17T12:36:50.813 に答える
0

12 番目の引数はself、常にメソッドに渡されるオブジェクトへの参照です。

バージョンを確認serial.VERSIONするか、help(serial)

于 2013-04-17T12:38:45.377 に答える