我正在使用以下配置在串行端口上写数据,并尝试从中读取数据。实际上,我正在向连接到COM7的硬件板发送命令,并且硬件还将数据发送到该com端口。因此,我想读取该数据,但使用的是HEx或字节格式。见下文..
串行配置:'ComPort':'7','BaudRate':'115200','Parity':'O','DataBit':'8','StopBit':'1','FlowCtrl':'0','DelayPerChar ':'0','DelayPerLine':'0'
我从硬件接收的数据如下所示:b'?G \ xa1C!\ xd2 \ x94 \ n \ x82 \ xa2 \ xc1 \ xc9ee \ xb3C \ xe1'
并且应该以可读格式显示的实际数据是:我从Tera术语终端获得的$ GB00402eef。
让我知道哪种编码和解码方法将帮助我获取可读格式的数据。
您已使用解码了字符串
varName.decode()
字符串方法。 UTF-8足以满足您的要求。
最后,我可以以可读的格式从接收缓冲区中读取数据作为字符串。
问题在于串行的奇偶校验配置。
您的计算机程序(发送方)和硬件(接收方)应连接到相同的奇偶校验。如果它们的奇偶校验不匹配,那么您可以从接收缓冲区中以垃圾或十六进制格式获取数据。
例如:如果硬件连接到奇偶校验无,则您的串行配置也应具有奇偶校验“无”。如果您使用奇偶校验“奇数”,则奇偶校验不匹配,并且不会以正确的格式接收数据。