错误 - 采用 1 个位置参数但给出了 2 个
Error - Takes 1 positional argument but 2 were given
当我 运行 我写了一些 Python 代码时,我收到一条错误消息说 'Traceback (most recent call last): File "C:\Users\SUL-I\fatest2.py", line 42, in leftsensor = fa.ReadLine(0) File "C:\Users\SUL-I\FA.py", line 180, in ReadLine self._flush(self) TypeError: _flush() takes 1 positional argument but 2 were given'。
代码如下:
#brings in external references
import FA
import time
#defines some constants
black = 0
white = 200
correction = 10
w = 0
#controls the first robot, remember to update the com port number
fa = FA.Create()
comport = 7
fa.ComOpen(comport)
time.sleep(5)
fa.PlayNote(294,800)
fa.PlayNote(330,800)
fa.PlayNote(262,800)
fa.LEDWrite(24)
time.sleep(0.25)
fa.LEDWrite(60)
time.sleep(0.25)
fa.LEDWrite(36)
time.sleep(0.25)
fa.LEDWrite(102)
time.sleep(0.25)
fa.LEDWrite(66)
time.sleep(0.25)
fa.LEDWrite(195)
time.sleep(0.25)
fa.LEDWrite(129)
time.sleep(0.25)
fa.LEDWrite(195)
time.sleep(0.25)
fa.LEDWrite(66)
time.sleep(0.25)
fa.LEDWrite(102)
time.sleep(0.25)
fa.LEDWrite(36)
time.sleep(0.25)
fa.LEDWrite(60)
leftsensor = fa.ReadLine(0)
rightsensor = fa.ReadLine(1)
while w < 100:
if leftsensor >= white:
fa.SetMotors(20,10)
elif rightsensor >= white:
fa.SetMotors(10,20)
else:
fa.Forwards(10)
w = w+1
ComClose(comport)
这里是FA模块中的ReadLine:
def ReadLine(self, index):
"""Read the line sensor value
Args:
index: Line sensor to query (0 to 1)
Returns:
int: Value of Line sensor (0 to 4095)
"""
self._flush(self)
s = 'ReadLine {0}\n'.format(int(index))
self.__ser.write(s.encode())
r = self._readval("ReadLine", 1, 1)
return(r);
readval 的定义:
def _readval(self, cmd, loop_max):
r = -1
loop = 0
while (loop < loop_max):
try:
r = int(self.__ser.readline().rstrip())
if (self.__verbose != 0):
msg = '{0}: {1}'.format(cmd, r)
print(msg)
loop = loop_max + 1 #break out of loop
except ValueError:
if (self.__verbose != 0):
msg = '{0}: No return({1})'.format(cmd,loop)
print(msg)
loop = loop + 1
return(r);
解决了涉及 _flush_
的错误后,您的第二个错误出于类似原因而发生。
比较_readval
的定义:
def _readval(self, cmd, loop_max):
您的来电:
r = self._readval("ReadLine", 1, 1)
"Readline"
赋给了cmd
,第一个1
赋给了loop_max
。没有参数可以分配给第二个 1
,因此您会看到观察到的错误。
当我 运行 我写了一些 Python 代码时,我收到一条错误消息说 'Traceback (most recent call last): File "C:\Users\SUL-I\fatest2.py", line 42, in leftsensor = fa.ReadLine(0) File "C:\Users\SUL-I\FA.py", line 180, in ReadLine self._flush(self) TypeError: _flush() takes 1 positional argument but 2 were given'。
代码如下:
#brings in external references
import FA
import time
#defines some constants
black = 0
white = 200
correction = 10
w = 0
#controls the first robot, remember to update the com port number
fa = FA.Create()
comport = 7
fa.ComOpen(comport)
time.sleep(5)
fa.PlayNote(294,800)
fa.PlayNote(330,800)
fa.PlayNote(262,800)
fa.LEDWrite(24)
time.sleep(0.25)
fa.LEDWrite(60)
time.sleep(0.25)
fa.LEDWrite(36)
time.sleep(0.25)
fa.LEDWrite(102)
time.sleep(0.25)
fa.LEDWrite(66)
time.sleep(0.25)
fa.LEDWrite(195)
time.sleep(0.25)
fa.LEDWrite(129)
time.sleep(0.25)
fa.LEDWrite(195)
time.sleep(0.25)
fa.LEDWrite(66)
time.sleep(0.25)
fa.LEDWrite(102)
time.sleep(0.25)
fa.LEDWrite(36)
time.sleep(0.25)
fa.LEDWrite(60)
leftsensor = fa.ReadLine(0)
rightsensor = fa.ReadLine(1)
while w < 100:
if leftsensor >= white:
fa.SetMotors(20,10)
elif rightsensor >= white:
fa.SetMotors(10,20)
else:
fa.Forwards(10)
w = w+1
ComClose(comport)
这里是FA模块中的ReadLine:
def ReadLine(self, index):
"""Read the line sensor value
Args:
index: Line sensor to query (0 to 1)
Returns:
int: Value of Line sensor (0 to 4095)
"""
self._flush(self)
s = 'ReadLine {0}\n'.format(int(index))
self.__ser.write(s.encode())
r = self._readval("ReadLine", 1, 1)
return(r);
readval 的定义:
def _readval(self, cmd, loop_max):
r = -1
loop = 0
while (loop < loop_max):
try:
r = int(self.__ser.readline().rstrip())
if (self.__verbose != 0):
msg = '{0}: {1}'.format(cmd, r)
print(msg)
loop = loop_max + 1 #break out of loop
except ValueError:
if (self.__verbose != 0):
msg = '{0}: No return({1})'.format(cmd,loop)
print(msg)
loop = loop + 1
return(r);
解决了涉及 _flush_
的错误后,您的第二个错误出于类似原因而发生。
比较_readval
的定义:
def _readval(self, cmd, loop_max):
您的来电:
r = self._readval("ReadLine", 1, 1)
"Readline"
赋给了cmd
,第一个1
赋给了loop_max
。没有参数可以分配给第二个 1
,因此您会看到观察到的错误。