Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python2.7中的pyserial.readline()_Python_Python 2.7_Pyserial - Fatal编程技术网

python2.7中的pyserial.readline()

python2.7中的pyserial.readline(),python,python-2.7,pyserial,Python,Python 2.7,Pyserial,我正在使用Python2.7.2和PySerial2.6。 当与字符不是eol的设备通话时,使用pyserial.readline的最佳方式是什么?报告指出,pyserial.readline在python 2.6+中不再采用“eol=”参数,但建议使用io.TextIOWrapper,如下所示: ser=serial.serial_用于_url'loop://',超时=1 sio=io.TextIOWrapperio.BufferedRWPairser,ser 然而,python特别警告不要使

我正在使用Python2.7.2和PySerial2.6。 当与字符不是eol的设备通话时,使用pyserial.readline的最佳方式是什么?报告指出,pyserial.readline在python 2.6+中不再采用“eol=”参数,但建议使用io.TextIOWrapper,如下所示: ser=serial.serial_用于_url'loop://',超时=1 sio=io.TextIOWrapperio.BufferedRWPairser,ser

然而,python特别警告不要使用这种方法,称BufferedRWPair不会尝试同步对其底层原始流的访问。你不应该把它作为读者和作者的同一个对象传递;改用BufferedRandom

有人能指出pyserial.readline使用“eol”以外的eol的工作示例吗

谢谢,
Tom

read有一个用户可设置的最大大小,用于读取位中的数据,如果您的数据字符串是可预测的长度,您可以简单地将其设置为捕获固定长度的字符串。它在执行中有点像“肯塔基偏差”,但只要数据字符串大小一致,它就不会出错

除此之外,您真正的选择是捕获数据流并将其写入另一个文件,然后手动/编程地拆分条目


例如,可以将数据流写入.csv文件,并将分隔符变量调整为EoL字符

假设s是一个开放的serial.serial对象,换行符为\r\n。 然后,它将读取到行尾,并将“\r”之前的所有内容作为字符串返回

def read_value(encoded_command):
    s.write(encoded_command)
    temp = ''
    response = ''
    while '\r' not in response:
        response = s.read().decode()
        temp = temp + response
    return temp
顺便说一句,我实现了您上面提到的io.TextIOWrapper建议,它1速度慢得多,2有些方法可以关闭端口。

您可以自己使用read和split行。