错误接受1个位置参数,但给出了2个

2024-04-29 01:27:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我收到一条错误消息,上面写着“Traceback(最近一次调用last):文件“C:\Users\SUL-I\fatest2.py”,在leftsensor=fa.ReadLine(0)文件“C:\Users\SUL-I\fa.py”,在ReadLine self中的第180行。“flush(self)TypeError:”“flush()接受1个位置参数,但在运行我编写的一些Python代码时给出了2个位置参数。”

代码如下:

#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);

Tags: thetoselfloopreadlinetimemsgsleep
1条回答
网友
1楼 · 发布于 2024-04-29 01:27:54

解决了涉及_flush_的错误后,您的第二个错误出于类似的原因出现

比较_readval的定义:

def _readval(self, cmd, loop_max):

欢迎致电:

r = self._readval("ReadLine", 1, 1)

"Readline"分配给cmd,第一个1分配给loop_max。第二个1没有要分配的参数,因此您得到了观察到的错误

相关问题 更多 >