python 浅谈serial与stm32通信的编码问题
参考链接:
使用环境:
ubuntu18.04
python3.65
问题点:
使用pyserial与stm32通信,使用如下形式的编码进行write
(input_s + '\r\n').encode('utf-8')
但是在接受stm的信息的时候使用'utf-8'解码会出现乱码问题
在查了可用编码后,发现可能是中文无法解码的问题,使用'gbk'--统一汉语进行解码,可以解决乱码问题。
utf-8虽然是通用语言编码标准,但中文出现乱码可以使用有针对性的'gbk'进行解码。
除此之外,python官方也有一种解决办法:
bytearray.decode(encoding="utf-8", errors="strict")
返回从给定 bytes 解码出来的字符串。 默认编码为 'utf-8'。 可以给出 errors 来设置不同的错误处理方案。 errors 的默认值为 'strict',表示编码错误会引发 UnicodeError。 其他可用的值为 'ignore', 'replace' 以及任何其他通过 codecs.register_error() 注册的名称,请参阅错误处理方案 小节。 要查看可用的编码列表,请参阅 标准编码 小节。
我们可以看到把errors关键字设置为ignore也可以解决编码问题。
以上这篇python 浅谈serial与stm32通信的编码问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。
相关推荐
-
Python 实现Serial 与STM32J进行串口通讯
Python果然是一款非常简明的语言,做东西非常流畅,今天又尝试了一下用Serial做了一个控制台的串口通讯,我用的下位机是STM32F103,搞了一个多小时就成功了,可见Python的能力之强. 说明几点注意,一是Python在windows下的串口号可以用COM来标注,此时序号从1开始,如果自己单独指定序号,则是从0开始. 另外,如果下位机串口通讯设定的非常简单的话,在Python中只需要设定好串口号和波特率即可,其余的均设为默认值.一般来说在单片机或者是嵌入式系统中的串口通讯基本都不需要设
-
python 浅谈serial与stm32通信的编码问题
参考链接: decode错误处理方案 可选用的编码 使用环境: ubuntu18.04 python3.65 问题点: 使用pyserial与stm32通信,使用如下形式的编码进行write (input_s + '\r\n').encode('utf-8') 但是在接受stm的信息的时候使用'utf-8'解码会出现乱码问题 在查了可用编码后,发现可能是中文无法解码的问题,使用'gbk'--统一汉语进行解码,可以解决乱码问题. utf-8虽然是通用语言编码标准,但中文出现乱码可以使用有针对性的'
-
浅谈Java线程间通信之wait/notify
Java中的wait/notify/notifyAll可用来实现线程间通信,是Object类的方法,这三个方法都是native方法,是平台相关的,常用来实现生产者/消费者模式.先来我们来看下相关定义: wait() :调用该方法的线程进入WATTING状态,只有等待另外线程的通知或中断才会返回,调用wait()方法后,会释放对象的锁. wait(long):超时等待最多long毫秒,如果没有通知就超时返回. notify() :通知一个在对象上等待的线程,使其从wait()方法返回,而返回的前提
-
浅谈Python2获取中文文件名的编码问题
问题: Python2获取包含中文的文件名是如果不转码会出现乱码. 这里假设要测试的文件夹名为test,文件夹下有5个文件名包含中文的文件分别为: Python性能分析与优化.pdf Python数据分析与挖掘实战.pdf Python编程实战:运用设计模式.并发和程序库创建高质量程序.pdf 流畅的Python.pdf 编写高质量Python代码的59个有效方法.pdf 我们先不转码直接打印获取到的文件名,代码如下: import os for file in os.listdir('./te
-
浅谈Java开发中的安全编码问题
1 - 输入校验 编码原则:针对各种语言本身的保留字符,做到数据与代码相分离. 1.1 SQL 注入防范 严重性高,可能性低. (1) 参数校验,拦截非法参数(推荐白名单): public String sanitizeUser(String username) { return Pattern.matches("[A-Za-z0-9_]+", username) ? username : "unauthorized user"; } (2) 使用预编译: Stri
-
浅谈Python基础之I/O模型
一.I/O模型 IO在计算机中指Input/Output,也就是输入和输出.由于程序和运行时数据是在内存中驻留,由CPU这个超快的计算核心来执行,涉及到数据交换的地方,通常是磁盘.网络等,就需要IO接口. 同步(synchronous) IO和异步(asynchronous) IO,阻塞(blocking) IO和非阻塞(non-blocking)IO分别是什么,到底有什么区别? 这个问题其实不同的人给出的答案都可能不同,比如wiki,就认为asynchronous IO和non-blockin
-
浅谈Python 多进程默认不能共享全局变量的问题
主进程与子进程是并发执行的,进程之间默认是不能共享全局变量的(子进程不能改变主进程中全局变量的值).如果要共享全局变量需要用(multiprocessing.Value("d",10.0),数值)(multiprocessing.Array("i",[1,2,3,4,5]),数组)(multiprocessing.Manager().dict(),字典)(multiprocessing.Manager().list(range(5))).进程通信(进程之间传递数据)
-
浅谈PyQt5中异步刷新UI和Python多线程总结
目前任务需要做一个界面程序,PyQt是非常方便的选择,QT丰富的控件以及python方便的编程.近期遇到界面中执行一些后台任务时界面卡死的情况,解决了在这里记录下. PyQt PyQt简介 PyQt是Qt的python接口,PyQt的文档较少,但接口和函数可以完全参照Qt,继承了Qt中大量的控件以及信号机制,十分方便.以下简介一个基本的PyQt程序. - 需要导入的类主要来自三个包 - from PyQt5.QtWidgets import 常用的控件 - PyQt5.QtCore 核心功能类,
-
浅谈Python线程的同步互斥与死锁
线程间通信方法 1. 通信方法 线程间使用全局变量进行通信 2. 共享资源争夺 共享资源:多个进程或者线程都可以操作的资源称为共享资源.对共享资源的操作代码段称为临界区. 影响 : 对共享资源的无序操作可能会带来数据的混乱,或者操作错误.此时往往需要同步互斥机制协调操作顺序. 3. 同步互斥机制 同步 : 同步是一种协作关系,为完成操作,多进程或者线程间形成一种协调,按照必要的步骤有序执行操作.两个或两个以上的进程或线程在运行过程中协同步调,按预定的先后次序运行.比如 A 任务的
-
浅谈Python爬虫原理与数据抓取
通用爬虫和聚焦爬虫 根据使用场景,网络爬虫可分为通用爬虫和聚焦爬虫两种. 通用爬虫 通用网络爬虫 是 捜索引擎抓取系统(Baidu.Google.Yahoo等)的重要组成部分.主要目的是将互联网上的网页下载到本地,形成一个互联网内容的镜像备份. 通用搜索引擎(Search Engine)工作原理 通用网络爬虫从互联网中搜集网页,采集信息,这些网页信息用于为搜索引擎建立索引从而提供支持,它决定着整个引擎系统的内容是否丰富,信息是否即时,因此其性能的优劣直接影响着搜索引擎的效果. 第一步:抓取网页
-
浅谈Python协程
协程 协程,又称微线程,纤程.英文名Coroutine.一句话说明什么是线程:协程是一种用户态的轻量级线程. 协程拥有自己的寄存器上下文和栈.协程调度切换时,将寄存器上下文和栈保存到其他地方,在切回来的时候,恢复先前保存的寄存器上下文和栈.因此: 协程能保留上一次调用时的状态(即所有局部状态的一个特定组合),每次过程重入时,就相当于进入上一次调用的状态,换种说法:进入上一次离开时所处逻辑流的位置. 协程的好处: 无需线程上下文切换的开销 无需原子操作锁定及同步的开销 "原子操作(atomic o
随机推荐
- 详解支持Angular 2的表格控件
- BootStrap Table前台和后台分页对JSON格式的要求
- 当某IP 连接我机器的3389端口 报警的脚本
- java 中HashMap实现原理深入理解
- 计算机名称修改后Oracle不能正常启动问题分析及解决
- javascript中运用闭包和自执行函数解决大量的全局变量问题
- PHP容易忘记的知识点分享
- Python操作MongoDB数据库PyMongo库使用方法
- java实现简单的英文文本单词翻译器功能示例
- 深入Mysql字符集设置 图文版
- vue.js之vue-cli脚手架的搭建详解
- 多个js与css文件的合并方法详细说明
- linux shell自定义函数(定义、返回值、变量作用域)介绍
- JavaScript黑洞数字之运算路线查找算法(递归算法)实例
- javascript 同时在IE和FireFox获取KeyCode的代码
- Java UrlRewriter伪静态技术运用深入分析
- js获取域名的方法
- 注册表的备份
- C++基础入门教程(五):new和delete
- Android编程实现VideoView循环播放功能的方法