繁体   English   中英

将字节解码为ASCII字符串

[英]Decode bytes to ascii string

我以pyserial的形式从外部设备接收字节:

b'S\\rSN 00\\rSC 00\\rFC 00\\rRI 00\\rMF 00006643\\rTS 0000BA39\\rTB 00000000\\rCB FFFFFFFF\\rCL 002\\rI> '

这是通过代码(代码段)完成的:

while ser.in_waiting > 0:
    output = ser.read(ser.in_waiting)
    print(output)

所以我希望将其打印为以下形式的文本:

S
SN 00
SC 00
FC 00
RI 00
MF 00006643
TS 0000BA39
TB 00000000
CB FFFFFFFF
CL 002
I>

但是当我尝试使用print(output.decode())print(output.decode('ascii'))对其进行解码时,我只得到所有(84)个字符的一部分:

I> 002FFFFF

怎么了? 如何获得所有解码的文本?

回车符'\\r'移动到该行的开头而没有下一行,因此这些行将被覆盖。 只需用换行符替换回车:

print(output.decode().replace('\r', '\n'))

我假设您使用的是Unix / Linux-不知道Windows上是否有所不同。

您的字符串具有嵌入式回车符,终端将其解释为将光标移回当前行开头的指令,从而导致后续文本覆盖先前的文本。

您将在最后一行看到I> ,在前一行看到002 ,再从前一行看到FFFFF (较短的序列不会完全覆盖当前行)。

解决方案(我在这里不再重复 ; wjandrea已经发布了)是用正确的换行符替换回车符。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM