自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

我的专栏

软件技术交流

  • 博客(141)
  • 资源 (2)
  • 收藏
  • 关注

原创 python学习笔记-关键字

FalsePython中的关键字是一组被编程语言保留用于特定目的的单词。这些关键字具有特殊含义,不能被用作变量名或标识符。

2024-02-28 22:00:00 354

原创 python学习笔记-内置类型

Python内置类型是Python编程语言中自带的基本数据类型,它们用于存储和处理数据。其中包括数字、序列、映射、类、实例和异常等主要类型。在这些内置类型中,有一些是可变的,它们具有修改自身内容的能力,比如添加、移除或重排成员。这些操作通常会直接在原对象上执行,并不会返回特定的项,而是返回 None。# 创建一个列表my_list = [1, 2, 3, 4]# 添加元素my_list.append(5)print(my_list) # 输出: [1, 2, 3, 4, 5]# 移

2024-02-28 18:29:42 832

原创 python学习笔记-内置异常

Python 中的异常(Exception)是指在程序执行过程中遇到的错误或异常情况。当程序出现异常时,解释器会停止当前代码的执行,并试图找到匹配的异常处理器来处理异常。如果没有找到合适的异常处理器,程序就会终止并打印出异常信息。在程序编写过程中,通常会遵循80/20原则,即将80%的精力花费在解决20%的问题上。其中,重要的20%包括处理各种可能出现的错误或异常。假如想要编写一个完善且具有高容错性的程序,但不使用异常处理机制,那么程序中将会充斥着大量的if语句,用于处理各种可能的意外情况。

2024-02-27 22:41:06 812

原创 python 学习笔记-python小甜点

Beautiful is better than ugly.美观胜于丑陋。Explicit is better than implicit.显式胜于隐式。Simple is better than complex.简单胜于复杂。Complex is better than complicated.复杂胜于晦涩。Flat is better than nested.扁平胜于嵌套。Sparse is better than dense.稀疏胜于密集。

2024-02-26 22:45:00 885

原创 python学习笔记 - 标准库函数

为了方便程序员快速编写Python脚本程序,Python提供了很多好用的功能模块,它们内置于Python系统,也称为内置函数(Built-in Functions,BlF),Python 内置函数是 Python 解释器提供的一组函数,无需额外导入模块即可直接使用。这些函数提供了丰富的功能,涵盖了各种常见的任务和操作,我们可以使用print(dir(__builtins__))输出所有的内置类型,框中为内置函数,可以使用help函数打印函数的帮助信息:print()input()format()

2024-02-26 22:00:00 1534

原创 python学习笔记 - 标准库常量

TruePython 中有一些内置的常量,它们是一些特殊的值,通常不会改变。True。

2024-02-26 22:00:00 260

原创 cadence 仿真实战

File==>New==>Project 命名选好路径,选择Enable PSPice。Place ==> PSpice Compoent 添加电阻 电源和地复制就可以了。1、打开软件Captrue CIS 17.4。接下来可以选择基于现有的基础,先体验一下。穿件一个时域模型,时间设置为100ms。这样就创建了一个基本工程如下图所示。增加一个电流探针,注意放到元器件上。产品我们使用PSPice A/D。之后就Run PSPice。增加一些简单的电路元件。

2024-01-20 09:59:30 61

原创 Cadence 设计实践笔记-小哥allegro 2层板笔记

规范建立文件夹本章节主要跟着B站PCB入门首选视频-小哥Cadence Allegro 2层板视频,结合自己的实践一步步完成一个完整的PCB板的设计。规范建立文件夹建立八个文件夹我使用的Cadence 17.4 有些差异原理图绘制原图绘制首先要熟悉原理图工作原理工作原理下面是这个项目的原理图重点关注电源新建原理图库打开Cadence 软件创建项目新建工程 File ==========》Project我这里选择了Enable PSPice 试试能不能仿真,新建项目如下。

2023-10-14 21:13:37 224

原创 CAN通信-应用

驱动加载完成,使用ifconfig -a 可以看到两个节点我们需要第一件事是把节点up起来ifconfig 可以看到can0 can1两个节点。

2023-10-12 01:00:00 401

原创 CAN 通信-底层

本文主要以rockchip的rk3568平台基础,介绍can 控制器、硬件电路和底层驱动。

2023-10-11 22:00:00 901

原创 Can 通信-协议

CAN 是 Controller Area Network 的缩写(以下称为 CAN),是 ISO国际标准化的串行通信协议。在当前的汽车产业中,出于对安全性、舒适性、方便性、低公害、低成本的要求,各种各样的电子控制系统 被开发了出来。由于这些系统之间通信所用的数据类型及对可靠性的要求不尽相同,由多条总线构成的情况很多,线束的数量也随之增加。为适应“减少线束的数量”、“通过多个 LAN,进行大量数据的高速通信”的需 要,1986 年德国电气商博世公司开发出面向汽车的 CAN 通信协议。

2023-10-10 23:00:00 1586

原创 Cadence PCB 焊盘和封装

封装指的是在电子元件制造中将电子元件(例如集成电路芯片、电子元器件等)进行物理保护和连接的过程。封装通常涉及将电子元件封装到外部保护壳或包装中,以确保其正常运作、连接到电路板并保护它们免受环境因素的影响。:封装可以保护电子元件免受机械损坏、尘埃、湿气、化学物质和其他潜在的危害。这有助于提高元件的可靠性和寿命。:封装还提供了连接电子元件到电路板的接口。这些连接通常包括引脚、焊点或其他连接器,使元件能够与电路板上的其他元件进行通信和协同工作。

2023-09-30 20:46:04 216

原创 Ubuntu性能分析-ftrace 底层驱动

1、框架介绍ftrace内核驱动可以分为几部分:ftrace framework,RingBuffer,debugfs,Tracepoint,各种Tracer。ftrace框架是整个ftrace功能的纽带,包括对内和的修改,Tracer的注册,RingBuffer的控制等等。RingBuffer是静态动态ftrace的载体。debugfs则提供了用户空间对ftrace设置接口。Tracepoint是静态trace,他需要提前编译进内核;可以定制打印内容,自由添加;并且内核对主要subsy

2023-09-30 11:04:52 325 1

原创 ubuntu 软件包管理之二制作升级包

Deb 包(Debian 软件包)是一种用于在 Debian 及其衍生发行版(例如 Ubuntu)中分发和安装软件的标准包装格式。它们构成了 Debian Linux 发行版中的软件包管理系统的核心组成部分,旨在简化软件的分发、安装、更新和卸载流程。:我们将介绍 Deb 包的基本概念,包括其结构、元数据和工作原理。您将了解如何识别、查找和理解 Deb 包,以及它们在系统中的重要性。:我们将详细讨论如何创建自定义的 Deb 软件包。

2023-09-28 20:30:00 807

原创 ubuntu 软件包管理之三--unattended-upgrades

一旦我们将工控机部署到现场或完成服务器的安装,由于操作系统内核或某些软件存在漏洞,系统在使用过程中难免会受到来自互联网的潜在攻击威胁。为了及时修复这些漏洞,我们需要采取措施来保障系统的安全性。最初,我们可能采用手动方式进行更新,使用命令和进行系统软件的更新。尽管这种方法对于服务器可能还相对可行,但对于大规模的工控机部署,这显然不太适用。手动更新需要大量的工作量,而且操作系统的官方源也不一定适合我们特定的系统需求。为了应对这个挑战,我们介绍了一种无需人工干预的升级方式,即使用工具。:我们首先安装和配置。

2023-09-26 22:30:00 650

原创 ubuntu 软件包管理之一

在 Ubuntu 操作系统中,软件包管理扮演着至关重要的角色,为用户提供了安装、更新和卸载各类应用程序、工具和库的关键工具。本文将引导您探索从软件包基础知识的了解,到制作自己的软件包,再到维护和共享软件包的全过程。无论您是普通用户还是开发者,了解如何处理软件包都是非常有用的技能。通过这篇文章,您将能够掌握在 Ubuntu 中处理软件包的技能,不仅能够安装您需要的软件,还能够将您自己的软件包共享给其他用户,为 Ubuntu 社区贡献您的技能和软件。

2023-09-25 22:45:00 325

原创 画电路板通用知识

快捷键快捷键快捷键功能放大缩小PCB知识扫盲PCB的物理结构PCB 主要由覆铜箔层压板(Copper Clad Laminates,CCL)、半固化片(PP片)、铜箔(Copper Foil)、阻焊层(又称阻焊膜)(Solder Mask)组成。同时,为了保护表面裸露在外的铜箔,保证焊接效果,还需要对 PCB 进行表面处理,有时还要配以字符进行标识。PCB 四层板结构示意图如图。

2023-09-22 20:41:46 113

原创 Cadence 设计快速入门

偶然的机会看到Cadence官方给的一篇入门文章,感觉相当不错,跟着一步一步做了一下,受益匪浅,在这里记录一下这个过程。这篇文章主要包含一个风扇控制模块的原理图设计、pcb和仿真。主要涉及如下工具PSpice AD。

2023-09-09 08:35:24 187

原创 Cadence PSPice实战应用

PSPice(Printed Circuit Board Spice)是一种电子电路仿真工具,用于模拟和分析电路行为。它是由Cadence Design Systems开发的,用于帮助工程师和电子设计师评估电子电路的性能、功能和稳定性。:PSPice允许工程师创建电子电路的计算模型,并通过仿真来模拟电路的行为。这有助于预测电路在实际应用中的性能,而无需制作物理原型。:PSPice可以用于模拟各种类型的电路,包括模拟电路、数字电路、混合信号电路和射频电路等。

2023-09-04 23:09:24 488

原创 Ubuntu inotify

inotify是一个用于监视文件系统事件的机制。它允许你监视文件或目录的变化,如文件的创建、修改、删除、移动等,以及目录的访问权限变化。

2023-08-22 11:02:19 742

原创 Cadence 仿真

PSpice是一个模拟程序,用于模拟电路的行为。您可以使用PSpice在制造实际电路板或集成电路之前对设计进行测试和优化。PSpice支持能够模拟仅模拟电路、混合信号电路和仅数字电路的分析。要在PSpice中对设计进行模拟:1、确保您拥有PSpice许可证。2、使用可以进行仿真的部件创建设计。在为仿真创建设计时,您需要使用PSpice可以仿真的部件。这些部件在PSpice部件库中可用。您还可以将PSpice模型与Capture部件相关联,以便能够对这些部件进行仿真。

2023-08-20 15:34:44 941

原创 VSCode 使用总结-练习练习再练习

在 Visual Studio Code (VSCode) 中,有许多常用的快捷键可以提高编程效率。多光标功能允许您在文本中同时创建多个光标,以便在多个位置进行同时编辑。这对于同时编辑多行文本或在多个位置插入相同的内容非常有用。

2023-08-18 11:20:09 6604

原创 电路基础之电容

工作原理电容器(Capacitor)是由两个导体电极之间夹着一个电介质而组成的元件。这两个电极可以是金属板、箔片、涂层等,而电介质则是放置在电极之间的绝缘材料。:电容器的电极是两个导体,它们用来连接电流并允许电荷在它们之间积累。电极可以由金属制成,如铝、钽、铜等。:电介质是电容器电极之间的绝缘材料,用来阻止电极之间的电流流动。电介质可以是陶瓷、塑料、纸质、玻璃等不导电材料。不同种类的电介质具有不同的性质,如介电常数和耐电压。:电容器的电极通常通过引线连接到电路中的其他元件。

2023-08-13 19:24:12 208

原创 电路基础笔记(更新中)

导体。

2023-08-12 13:21:22 228

原创 cmake (更新中)

概述概述关于 CMakeCMake 是一个可扩展的开源系统,以一种与操作系统和编译器无关的方式来管理构建过程。与许多跨平台系统不同,CMake 被设计为与本机构建环境配合使用。在每个源代码目录中放置简单的配置文件(称为 CMakeLists.txt 文件),用于生成标准的构建文件(例如,在Unix上是 makefiles,在Windows MSVC上是项目/工作区文件),然后按照通常的方式使用这些文件。CMake 可以生成本机构建环境,用于编译源代码、创建库、生成封装器以及以任意组合构建可执行文件。

2023-08-11 10:01:09 127

原创 3D打印开源硬件MKS Monster8 V2.0 原理图赏析--更新中

MKS MONSTER8 主板是创客基地为满足市场需求而推出的主板,可用于Voron 2.4机器安装,支Marlin 固件和Klipper固件,支持U盘打印(暂时只有Marlin固件支持),支持TMC驱动UART模式,它包含了3D打印机所需要的主要部件和接口,通过MCU集中控制,是一款功能强大的主板。下面详细分析一下。

2023-07-31 07:22:20 3217

原创 Klipper 源码分析-gcode

G-code(也称为生成代码)是一种常用于控制3D打印机的计算机指令语言。它告诉打印机如何移动、加热喷头、堆叠材料以及执行其他操作。G-code是一种文本文件,其中包含一系列指令,用于描述打印机的运动和操作。每个G-code指令都以字母"G"开头,后面跟着一个数字和/或参数。例如,G0和G1指令用于控制打印机的移动,G28用于将打印机移动到原点位置,M104用于设置喷头温度等等。3D打印软件通常会将用户创建的3D模型转换为打印机能够理解的G-code文件。

2023-07-13 19:52:54 1027

原创 numpy

NumPy(Numerical Python)是Python科学计算的核心库之一,用于处理大型、多维数组和矩阵,以及执行数值计算任务。它是Python生态系统中最重要的数据科学工具之一,并广泛用于科学、工程、数据分析和机器学习等领域。:NumPy最重要的特性是ndarray对象,它是一个高效、灵活的多维数组容器。ndarray提供了快速的数值运算和广播功能,能够高效地存储和操作大量数据。:NumPy的广播功能使得不同形状的数组之间的运算变得简单和高效。

2023-07-11 23:00:00 153

原创 matplotlib

Matplotlib是一个用于绘制数据可视化图形的Python库,提供了广泛的绘图功能,包括线条图、散点图、柱状图、等高线图、3D图形等。它是Python中最常用和最受欢迎的数据可视化库之一。下面是一些Matplotlib的主要特点和功能:灵活性:Matplotlib提供了丰富的选项和参数,可以对图形的各个方面进行精细调整。你可以设置图形的样式、颜色、线型、标签、标题等,以满足特定的需求。

2023-07-11 22:30:00 924

原创 高等数学与Python

高等数学作为一门研究数学的基础和高级概念的学科,在大学数学课程中占据着重要的地位。它不仅是数学学科发展历程的承载者,也为其他科学领域的建模和分析提供了理论基础。在职业经历中信号处理要用数学中的微积分和线性代数,深度学习中要用到高等数学中的线代、微积分,概率统计、数值优化等,3D打印运动学中也要用到线性代数和微积分等。可以说做工程高等数学无处不在,是大多数工程的父类。然而,很多人在学习高等数学时遇到困难,主要原因是对其中的核心概念理解不够透彻,以及学习方法的问题。

2023-07-09 22:13:20 503

原创 Klipper 源码分析-Chelper

klippy/chelper/目录包含一些C代码辅助程序,这些程序被Klipper使用。使用CFFI,您可以通过定义C函数的接口和包装C数据结构来与C代码进行交互。然后,CFFI会生成一个包装器模块,使得在Python中可以直接调用这些C函数和操作C数据。CFFI是一个用于在Python中调用C代码的工具库。它提供了一种简单的方式来创建C扩展模块,以便在Python中直接调用C函数和访问C数据结构。这段代码主要编译加载c_helper.so,返回调用句柄,供应用层调用。,接受两个整数参数并返回一个整数。

2023-07-07 22:40:03 673

原创 Klipper 源码分析-serialhdl.py

我们看到控制台消息经过处理后主要是通过serialhdl 模块发送给打印机,serialhdl 模块主要负责和下位机通信,该模块提供了多种连接方式,包括CAN总线连接、管道连接、UART连接和文件连接。它实现了接口读取、发送命令、处理消息等功能。此外,serialhdl模块还提供了一个C接口,用于高效处理一些中间业务。通过学习该模块,我们能够更好地了解C和Python之间的交互。回顾一下上一章console中的KeyboardReader,他在。发送命令的时候使用self.ser.send。

2023-07-05 19:13:58 485

原创 Klipper 源码解析-console

这个类比较简单,写的也比较简洁,分析他,主要可以引出下面的serialhdl,从这边分析比主线程简单些,功能都类似。接下来是connect函数,在__init__中已经看到 他作为回调函数已经注册到reactor,在main中r.run()会回调connect,下面是他的代码。接着,方法对经过求值处理后的行进行去除首尾空格操作,并判断是否非空。如果非空,将行按空格分割为多个部分,其中第一个部分是命令。方法的功能是对输入进行解析和翻译。截取到注释符号前,并判断截取后的行是否为空,如果为空,则继续处理下一行。

2023-07-04 21:34:52 659

原创 Klipper 源码解析-queuelogger

这些类和函数提供了一种实现异步日志记录的方式,可以将日志记录从主线程中分离出来,以提高性能和响应能力。是一个用于后台日志记录的工具。它用于将日志消息存储在一个队列中,以便在后台进行处理和记录。,用于在后台线程中从队列中获取日志消息并进行日志记录。它创建了一个队列和一个后台线程,在。添加到根 logger 的处理程序中,并设置根 logger 的日志级别。它接收日志文件名和调试级别作为参数,并创建了一个。,用于将日志消息通过队列转发到后台线程中。方法中循环获取队列中的消息并进行处理。

2023-07-03 21:24:16 311

原创 klipper 源码解析 - configfile.py

Klipper是一个开源的3D打印机固件,使用配置文件来定义和配置打印机的设置。stepper_ystepper_zextruderheater_bedfanmcuprinter该配置文件用于与名为"simulavr"的程序进行测试,并提供了用于模拟AVR atmega644p的引脚映射和其他参数设置。里面[...]是个sectionsection下面是option。

2023-06-30 21:31:44 542

原创 Klipper源码分析-reactor.py

reactor 是 Klippy 中的一个模块,它负责管理事件的注册、调度和处理。它充当了事件驱动的核心引擎,驱动整个 Klippy 系统的运行。在 Klippy 中,reactor提供了一个统一的接口,使各个模块能够注册自己的回调函数以响应特定的事件。它使用事件循环的方式,不断地检查事件的状态并触发相应的回调函数。不过在学习reactor模块之前需要先学习一下python的select。

2023-06-30 20:17:31 599 6

原创 klipper源码分析--概括

klipper 项目源码的大致结构

2023-06-29 18:49:09 1189

原创 Klipper源码分析-klippy.py

主函数分析

2023-06-29 18:47:09 1073

原创 在Debian上安装配置Klipper

klipper 安装配置,以及虚拟打印机的使用

2023-06-28 11:07:15 1501

原创 netlink

Netlink套接字是用以实现内核进程和用户进程通信的一种特殊的进程间通信(IPC),从linux 2.2开始引入内核,当时名为AF_NETLINK,旨在提供一种更灵活的内核和用户空间的通信方法,用以替换笨拙的IOCTL.IOCTL 方式通信,需要定义IOCTL号,而且只能从用户空间到内核空间空间单向通信,相比之下netlink具有一下有点。netlink可以用于用户进程通信,不过一般推荐使用,如果进程之间使用socket通信,一般是 Unix域socket。

2023-04-21 21:04:15 1069 1

工作中常用的设计模式总结

本人项目上经常用到的设计模式 1、工厂模式 2、观察者模式 3、状态模式 4、缓冲区模式 后续持续增加

2020-01-05

语音识别.zip

语音识别资料,kaldi 和 htk ,htk比较适合入门学习 ,而kaldi比较适合做项目,目前被很多大公司为基础开发,从语言角度讲,HTK是基于面向过程的方式用C语言开发的,Kaldi是C++基于面向对象开发的。HTK的C代码的优点是简单高效,缺点包括一切面向过程的缺点,以及需要使用自己定制的内存管理模块、数据结构等等。Kaldi代码本应包括C++面向对象的各种优点,不过可能因为很多作者不熟悉面向对象,以及没有办法采用严格开发管理的方式,其实不少代码(比如nnet1的Nnet class)具有了坏的面向对象的很多缺点……比如有时候过度包装,有时候相反的把面向对象写成了面向过程……反而更难扩展

2019-08-10

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除