python里 serial.write()输出到另一端时是啥格式的 比如说我用ser

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python里 serial.write()输出到另一端时是啥格式的 比如说我用ser相关的知识,希望对你有一定的参考价值。

python里 serial.write()输出到另一端时是什么格式的 比如说我用serial.write("130") 另一端收到的是什么样的

pyserial默认的写入格式是字符串,并不是16进制的。接收到的也是字符串,除非你在接收端设置了默认接受hex格式,就会显示hex。我用过蓝牙串口和Arduino开发板的串口,收到的都是字符串。 参考技术A 好像是16进制,"31 33 30",用开发板自己写个程序验证下。 参考技术B 乱码

原创python中文编码问题:控制窗口能输出中文,到文本文件里乱码

遇到一个问题:控制窗口能正常输出中文,>到文本文件里却是乱码。最后解决了,总结一下Python中文编码的坑。

技术分享技术分享

开始感觉非常奇怪,想第一行为什么是正常的?之后注意到文本文件为ANSI编码,第一行在代码里面是字符串的形式输出来的,而且代码的文本格式也为ANSI。

后面不正常的数据是在列表用utf-8编码输出来的。开始想把第一行用utf-8输出来,把代码改为s.decode(‘gbk‘).encode(‘utf-8‘) ,发现结果还是不行。因为直接输入的字符串是按照代码文件的编码来处理的。

之后把列表中的数据用 str(i).decode(‘utf-8‘).encode(‘gbk‘)处理,结果就正确了。

技术分享

————————————————————————————————————————————————————————————————————————

此外遇到个错误:SyntaxError: (unicode error) ‘utf8‘ codec can‘t decode byte 0xc0 in position 0: invalid start byte

问题原因:脚本文件所用的编码是ANSI,而不是utf-8的编码,所以,u"中文",无法识别,而 去notepad+中,格式->转为utf-8编码,后,再保存文件,再去运行脚本,就可以支持u"中文"了。

当然,对应的unicode(“中文”)这样的做法,起始是最安全的,其不会受到你当前python脚本文件所用编码的影响。

 

以上是关于python里 serial.write()输出到另一端时是啥格式的 比如说我用ser的主要内容,如果未能解决你的问题,请参考以下文章

Arduino 的 Serial.write 和 Serial.print 的区别在哪里

板机通信

在arduino中,serial.print和serial.printIn有啥区别

进阶之路(基础篇) - 006 串口的使用

Arduino ESP32 BLE蓝牙串口通讯实验

Arduino 无法正确读取 Serial