为什么pyserial说我有11个参数?

时间:2013-04-17 12:34:51

标签: python pyserial

我使用pyserial打开python连接:

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编写的(也是串行编写的)。我需要找出我想要的串行版本作为参数。

2 个答案:

答案 0 :(得分:8)

您隐式传递self作为第一个参数。


我知道这个答案不会解决你的问题,但这就是为什么你的翻译告诉你当你确实只传递了11个明确的参数时你传递了12个参数的原因。所以答案确实提供了一个回答来解决你的问题。如果您需要有关计划的进一步帮助,请提出一个更具体的新问题。

答案 1 :(得分:0)

第十二个参数是self,它是对总是传递给方法的对象的引用。

检查serial.VERSION的版本,或执行help(serial)