1、串口不定长接收

示例采用将线程封装成类的方法,这样可以少一些全局变量;

一帧的长度和time.sleep(0.1)中延时是正相关的;

可以通过调用self.set_stop_flag()将线程停止,这种方法的好处是可以在同一个或另一个函数停止其它的多个线程,只需要别的线程也使用while self.get_stop_flag() == 0:

class serial_thread(threading.Thread):def __init__(self, myseial):threading.Thread.__init__(self)self.stop_thread_flag = 0self.serial = myseialdef run(self):print('rx_thread creat')while self.get_stop_flag() == 0:n = self.serial.inWaiting()if n:time.sleep(0.1)n = self.serial.inWaiting()data = self.serial.read(n)data = data.decode('utf-8')if data != '':print('rx data is:', data)print(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()))def set_stop_flag(self):self.stop_thread_flag = 1def get_stop_flag(self):return self.stop_thread_flag  使用方法:
serial_com = serial.Serial('COMXX', 115200)
test_thread = serial_thread(serial_com)
test_thread.start()
time.sleep(100)
test_thread.set_stop_flag()

2、打印当前电脑串口号

import serial.tools.list_portsdef print_used_com( ):port_list = list(serial.tools.list_ports.comports())if len(port_list) <= 0:print("This Serial Port Can not Find!!")else:print("当前电脑串口有:")for i in list(port_list):print(i)

3、判断要操作的串口是否存在

存在返回0,不存在返回1,传入格式是字符串

def judge_com(com_name):if com_name.find("COM") >= 0:port_list = list(serial.tools.list_ports.comports())if len(port_list) <= 0:print("This Serial Port Can not Find!!")else:for i in list(port_list):if com_name == i[0]:return 0print(com_name, '串口号不存在')return 1例:judge_com('COM6')

4、带设备前缀和时间戳的形式保存数据到文件

可以不覆盖文件之前的内容及根据设备不同进行区分存储

import timedef save_data_txt(data, device):git_time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())info_str = " "info_str += deviceinfo_str += ' 'info_str += git_timeinfo_str += ' 'info_str += dataif device == 'test_device':with open('test-device.txt', 'a') as lead:lead.write(info_str)elif device == 'pc_device':with open('pc_device.txt', 'a') as lead:lead.write(info_str)

5、时间秒倒计时

import time
import sysstartTime = time.time()while Ture:time.sleep(1.8)totalTime = round(time.time() - startTime, 2)print(f'totle time is {totalTime } s\r\n')if totalTime >= 7800:  #超时sys.exit()

6、对脚本命令传入的参数进行识别

import sysif __name__ == '__main__':if len(sys.argv) == 6:print(f'{sys.argv[1]}; {sys.argv[2]};{sys.argv[3]};{sys.argv[4]}; {sys.argv[5]}')

和嵌入式相关的一些python程序相关推荐

  1. 安卓怎么下载python-教你在安卓手机上安装python程序

    编程就是告诉计算机要做什么,计算机只是一些没有生命的机器,它们可不知道自己要做什么,一切都得你来告诉它.对于计算机是这样,对于安卓手机也是这样.本文将教授大家在如何在安卓手机上安装Python程序,有 ...

  2. python程序员工作时间_Python程序员是怎么找工作的?怎么最快时间找到自己想要的工作?...

    前言 从智联招聘爬取相关信息后,我们关心的是如何对内容进行分析,获取用用的信息. 本次以上篇文章"5分钟掌握智联招聘网站爬取并保存到MongoDB数据库"中爬取的数据为基础,分析关 ...

  3. python程序在嵌入式linux系统运行。。

    最近在写运行在嵌入式linux系统下的python程序.中间遇到很多坑,接下来我就一一说一下. 从windows编写python脚本,然后将文件复制到嵌入式linux下,运行时报错: 通过vi编辑器查 ...

  4. 2019工作榜单|Python程序员吸金榜,AI排第一,这个我服!

    Python程序员很多,有后端开发,有运维测试,有数据分析,有数据挖掘,有人工智能相关的算法岗,到底什么岗位是最有前景,而且最有钱途呢? 先来看一个2019工作榜单 作为全球知名的招聘网站Indeed ...

  5. 嵌入式相关开源项目、库、资料------持续更新中

    学习初期最难找的就是找学习资料了,本贴精心汇总了一些嵌入式相关资源,包括但不限于编程语言.单片机.开源项目.物联网.操作系统.Linux.计算机等资源,并且在不断地更新中,致力于打造全网最全的嵌入式资 ...

  6. linux系统下Qt应用程序重启,嵌入式Linux重启QT应用程序的简单办法(基于QT4.8 qws)...

    嵌入式Linux重启QT应用程序的简单办法(基于QT4.8 qws) 应用软件一般都有这样的业务需求: 当有新版本的APP,则程序就需要执行更新,更新完毕后(所谓的更新大多就是以覆盖的方式),不需要关 ...

  7. Python 程序结构及代码规范

    每一个可执行的 python 程序中都会有各种各样的文件类型.文件中也有基本的代码结构和代码规范 1.文件类型 在 python 中,常用的文件类型有 3 种:分别是源代码文件.字节代码文件和优化代码 ...

  8. Python程序员Debug利器,和Print说再见 | 技术头条

    整理 | Rachel 责编 | Jane 出品 | Python大本营(id:pythonnews) [导语]程序员每日都在和 debug 相伴.新手程序员需要学习的 debug 手段复杂多样,设置 ...

  9. 独家 | 6种让Python程序变慢的坏习惯

    作者: Christopher Tao 翻译:王可汗 校对:王雨桐本文约1800字,建议阅读5分钟 本文总结了Python代码中经常被忽略的影响代码的运行速度常见问题. 随着Python的流行,用户数 ...

最新文章

  1. 这次终于彻底理解了傅里叶变换
  2. 网站建设特定操作流程了解一下不吃亏
  3. Python 技术篇-使用pygame库实现音乐播放实例演示,带漂亮小界面!
  4. 启用物料账后,有两种物料价格确定方式
  5. Dubbo -- 系统学习 笔记 -- 示例 -- 服务分组
  6. 《FPGA入门教程》看书随笔——RTL设计
  7. Sentinel介绍和Windows下安装Sentinel-dashboard
  8. 如何获取用户当前详细的地理位置
  9. STM32 使用 printf 发送数据配置方法 -- 串口 UART, JTAG SWO, JLINK RTT
  10. eclipse安装M2Eclipse插件
  11. 模板消息php40008,企业微信发送模板消息 40008 Warning: wrong json format. ?
  12. 中兴ZTE:五年工作感想
  13. 天问: 世界到底由什么组成?
  14. tesserocr的安装
  15. 膨胀卷积(空洞卷积)
  16. n个不同元素进栈,求出栈元素不同排列的个数
  17. Element el-icon 图标组件详解
  18. Linux sys文件系统
  19. fastapi获取访客真实ip
  20. 理解Java并发编程:volatile关键字解析

热门文章

  1. 使用Visual Studio Code (VS Code)写C51代码(配置指南)
  2. Java国际化——ResourceBundle基本使用
  3. php网页右下方广告窗口,javascript实现右下角广告框效果
  4. Android5.0以上去除状态栏半透明遮罩
  5. 日期:年月日的写法 / 倒计时写法 /获得date总的毫秒数方式date.valueOf()/date.getTime()/+new Date()/Date.now()/及多种写法案例
  6. 安装JDK7和Tomcat8.5后,Tomcat服务启动不了
  7. matlab 2010b是有cvx,求帮忙,2012b的matlab怎么安装CVX?
  8. Html5酷播云视频播放器同层播放(代码实例)
  9. Python 用pyinstaller打包python程序,生成的exe文件过大问题
  10. 在路径没问题的情况下,组件报错Component is not found