自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(229)
  • 资源 (1)
  • 收藏
  • 关注

原创 3D打印实战:打印&取消&暂停&续打&断料检测&断电保存&断电续打&打完关机

微动开关:有料时触动微动开关。

2024-10-07 22:44:46 1686

原创 3D打印实战:通过socket获取klipper模块的属性值

总结:建立socket -> 发json -> 根据method的值找到endpoint -> 遍历所有订阅的模块,调用get_status方法 -> 返回json。参见Moonraker项目,该项目是一个流行的工具,可以将HTTP请求转发到Klipper的API服务器Unix域插座。通过socket获取klipper模块的属性值。

2024-09-28 23:33:55 413

原创 3D打印实战:自定义模块并调用C语言

如果c_helper.so不存在,则会生成。所以要删掉c_helper.so生成新的。添加hello.c到c_helper.so。运行klipper重新生成so。

2024-09-28 23:29:59 227

原创 3D打印:修改klipper源码

在__init__.py文件中指定编译器,要编译的文件,生成的so。注意:cfg配置有的属性,在py文件中一定要调用,否则报错。

2024-09-17 21:39:52 1231

原创 3D打印:点灯

【代码】3D打印:点灯。

2024-09-17 21:38:35 157

原创 3D打印:gcode宏

SET_GCODE_VARIABLE 命令可以在宏调用之间保存状态。变量名不能包含任何大写字符。‵‵‵。

2024-09-17 21:36:41 688

原创 3D打印:gcode命令

M73”: “设置当前打印进程。“M205”: “高级设置,详见https://marlinfw.org/docs/gcode/M205.html”,“M82”: “耗材挤出模式,绝对挤出模式。“G18”: “平面设定,为XZ平面, 控制G2/G3(圆弧)、G73,G81-G89(封闭循环)”,“G19”: “平面设定,为YZ平面, 控制G2/G3(圆弧)、G73,G81-G89(封闭循环)”,“G29”: “(床调平(手动,3 点,双线性,线性,统一))测量网格中的 Z 高度,启用水平补偿”,

2024-09-17 21:35:22 3550

原创 3D打印:printer.cfg配置

输入PID_CALIBRATE heater=heater_bed target=60,待热床温度曲线波动5次之后,输入SAVE_CONFIG保存配置。输入PID_CALIBRATE heater=extruder target=220,待喷头温度曲线波动5次之后,输入SAVE_CONFIG保存配置。执行关机动作:调用 Moonraker API、使用 shell_cmd 调用系统关机命令两种方式。改dir_pin参数,即增加或删除!按钮防抖动和按下两次才执行。监听按钮连接的引脚状态。

2024-09-17 21:34:10 985

原创 3D打印:klipper简单分析

在extras里创建模块,在cfg里配置,自动加载在chelper里创建c文件,添加到列表,删掉so,再编译在cfg里自定义配置:获取属性,引脚等。

2024-09-17 21:26:42 1493

原创 3D打印:单片机模拟器

【代码】3D打印:单片机模拟器。

2024-09-17 21:24:42 536

原创 3D打印:klipper安装

fluidd和klipper通过socket和jsonn通信,klipper和下位机通过串口通信,不关心是什么单片机,通信协议一致就行。klipper作为上位机处理gcode,接收web的请求。单片机作为下位机,控制电机,传感器。fluidd作为web前端。

2024-09-17 21:22:46 652

原创 2024年Linux QT项目

使用QT实现的显示终端(抄麦当劳的取餐柜),后期考虑改成快递柜之类的终端。

2024-06-26 23:46:14 196

原创 2024年Android APP小项目

Android手机通过蓝牙连接LED氛围灯,控制LED氛围灯的亮度、颜色、闪烁等。后期考虑修改为温度贴、门锁、汽车胎压、蓝牙测试工具等产品的APP。

2024-06-26 23:26:44 248

原创 TCP和UDP总结

四次挥手:client发起请求,server发出收到(此时缓冲区可能有数据,先发完数据),server发出断开,client发出响应,2MSL最大段生存时间后关闭连接。TCP:面相连接,有三次握手建立连接,四次回收断开连接,有数据确认、超时丢失重传、拥塞机制等,以确保数据的准确、顺序。TCP/IP模型:应用层(HTTP、FTP)、传输层(TCP、UDP)、网络层(IP)、数据链路层(MAC地址)。OSI(开放式系统互联)模型:应用层、表示层、会话层(建立管理终止会话)、传输层、网络层、数据链路层。

2024-04-09 14:25:12 405

原创 Android总结(一)

C++调用java类:env->FindClass,env->GetMethodID,env->NewObject,CallVoidMethod。切换:getFrameManager().beginTransaction(), replace,commit,传参Bundle。使用cs架构,在Binder驱动空间创建缓冲,数据和内核缓冲区映射,接收进程的用户空间和数据缓冲区映射。跨进程通信:用户空间不共享,内核空间数据共享。重载:Java_包名_类名_方法__XX()继承BroadCastReceiver。

2024-04-09 12:01:01 316

原创 进程和线程总结

共享代码段、数据段、堆栈等,共享用户组、文件描述符、信号处理等,但有自己的进程ID、私有栈等。页表到物理内存:页表上有一串不连续的地址(间隔4K),找到指定的行,取出行里的值,这个地址对应物理内存的首地址,并且对应物理内存的4K大小。无名管道:用于父子兄弟等有血缘关系的进程,单向传输(读端写端),64K大小限制,当另一端关闭时,读会阻塞,写会管道破裂。一个进程占2^32=4G大小,3G为用户空间,1G为内核空间。2个进程是相互独立的地址空间,通信需要内核(进程A用户空间-》内核空间-》进程B用户空间)。

2024-04-09 11:03:34 251

原创 QT5总结

鼠标事件:QMouseEvent,mousePressEvent(QMouseEvent *e),mouseMoveEvent(QMouseEvent *e)控件:Window,Rectangle,Image,Text,MouoseArea,ListView,ListModel,ListElement。当调用emit时,调用信号函数,并且传递发送信号的对象指针,元对象指针,信号索引,参数列表到active函数。

2024-04-08 16:16:14 617

原创 ROS2总结

分别创建Xxx.msg、Xxx.service、Xxx.action文件(首字母一定要大写,文件的格式也不能错)声明source install/local_setup.sh后,才能在调用方找到自定义的msg。action:开始用service,中间使用topic反馈,结束使用service。修改setup.py,把配置节点entry_points(可修改重命名)生成build编译过程产生的文件、install可执行文件、log日志。分别创建msg、service、action目录。创建工作空间(目录)

2024-04-08 16:14:49 227

原创 Linux内核驱动

LCD:设备树:bitwidth(RGB565、RGB888)、背光(开启PWM、时钟)、修改水平像素/垂直像素等屏参;I2C:同步半双工,从器件地址,寄存器地址、方向,i2cdetect、i2cget、i2cget,一个总线一个adapter。实现file_operation:owner、open/release、read/write。触摸:中断/复位引脚;常用属性:compatible、address、reg、status。查看:cat /proc/devices、cat /dev/XXX。

2024-04-08 16:13:29 320

原创 C++总结

异步:promise、get_future()、future、wait()、get()、async、launch(async、reference)智能指针:共享指针share_ptr(引用计数),独占指针uniqued_ptr(移动语义)、weak_ptr(引用计数不改变)针对不同对象:局部变量、全局变量、函数、类成员属性、类成员方法、指针、数组。类:继承构造、final、override、default、delete。在内存的位置:静态区、常量区、堆区、栈区、不占内存(引用、声明)

2024-04-08 16:10:22 297

原创 Android 系统精简思路

Android 系统精简思路文章目录Android 系统精简思路Android框架层次层次(从上往下)移除删除(还没有删,待确认)不同层次的log另一种删除预装APK方法Android框架层次层次(从上往下)应用程序层(Application)应用程序框架层(Application Framework)运行时库层(Runtime)硬件抽象层(HAL)Linux内核层(Linux kernel)移除应用程序层:移除APP/可执行文件(已经删除谷歌和高通的一部分APP了)应用程序框架

2020-09-03 15:26:20 2590

原创 Android CAN

Android CANkerel默认编译成模块,没编译进内核│ Symbol: CAN [=m] │ │ Type : tristate │ │ Prompt: CAN bus subsystem support

2020-09-02 17:33:58 1791 1

原创 Android 驱动-点灯

Android 驱动-点灯通过设备树属性1. 设备树&leds_test_node{ compatible = "leds_test"; status = "disable"; // 添加属性 of_get_name_gpio(node, "gpios1", 0) gpios1 = <&gpl2 0 GPIO_ACTIVE_HIGH>; gpios2 = <&gpk1 1 GPIO_ACTIVE_HIGH>;}

2020-09-02 00:12:19 326

原创 Android kernel添加菜单选项

Android kernel添加菜单选项添加kernel模块1. 添加hello.c#include <linux/init.h>#include <linux/module.h>static int __init hello_init(void) /*模块加载函数,通过insmod命令加载模块时,被自动执行*/{ printk(KERN_INFO " Hello World enter\n"); return 0;}static void __e

2020-09-02 00:09:30 298

原创 Android SPI 使用说明

Android SPI 使用说明文章目录Android SPI 使用说明硬件1. SPI7设备树1. 设备树pinctrl2. 设备树使能硬件1. SPI7设备树1. 设备树pinctrl# kernel/msm-4.9/arch/arm64/boot/dts/qcom/msm8953-pinctrl.dtsispi7 { spi7_default: spi7_default { /* active state */ mux { /

2020-09-02 00:07:30 803

原创 Android UART 使用说明

Android UART 使用说明文章目录Android UART 使用说明硬件1. 设备树1. 设备树pinctrl2. 设备树使能3. 高速串口2. 驱动3. 设备树节点硬件1. 设备树1. 设备树pinctrl# kernel/msm-4.9/arch/arm64/boot/dts/qcom/msm8953-pinctrl.dtsipmx-uartconsole { uart_console_active: uart_console_active { mu

2020-09-02 00:06:04 1210

原创 Android添加Setting选项

Android添加Setting选项文章目录Android添加Setting选项控制类添加方法Activitypath布局文件属性加入Activity对话框监听开关备注控制类添加方法void start() {}void stop() {}Activity# packages/apps/Settings/AndroidManifest.xmlpathpackages/apps/Settings/res/drawable/ic_settings_ethernet_black_24

2020-09-02 00:04:05 916

原创 Android 预装APK

Android 预装APK文章目录Android 预装APK步骤1. 添加apk文件2. 添加so3. 添加到系统4. 编译APK直接放入编译生成的目录在Android.mk中进行复制软件权限普通软件默认授权,不弹出对话框预装软件默认授权备注步骤1. 添加apk文件在packages/apps/下以需要安装的APK名字创建文件夹,例如安装AndroidDemo将AndroidDemo.apk放到packages/app/AndroidDemo下在packages/apps/AndroidDem

2020-09-02 00:02:38 1767

原创 Android自定义配置

Android自定义配置文章目录Android自定义配置屏幕不休眠开机显示自定义静态LOGO系统中文显示隐藏状态栏电量开机不显示No SIM card 提示隐藏状态栏和三大按键1. 默认配置文件2. 加载配置文件隐藏搜索栏1. 在布局文件中删除2. 在launcher中去掉关闭系统休眠Launcher图标清空直接隐藏清空布局默认开启以太网添加全局变量Settings.Global字符串定义默认值数据库加载使用开启默认配置测试备注屏幕不休眠# 获取屏幕休眠时间adb shell settings ge

2020-09-01 21:53:36 575

原创 Android修改kernel和logcat的输出级别

Android修改kernel和logcat的输出级别文章目录Android修改kernel和logcat的输出级别kernel查看当前输出级别输出宏定义指定级别高通初始化服务java备注kernel查看当前输出级别cat /proc/sys/kernel/printk6 6 1 7输出# kernel/msm-4.9/kernel/printk/printk.cint console_printk[4] = { CONSOLE_LOG

2020-09-01 21:52:45 2941

原创 Android 开机加速优化

Android 开机加速优化文章目录Android 开机加速优化关闭BootLoader的企鹅关闭开机动画Android关闭锁屏删除预装APP查看预装APP删除编译生成的APK不编译APK1. 统一配置2. 修改单个APK的Android.mk谷歌APP高通APP关闭系统服务修改LOG打印级别并发加载class和resource等资源readahead机制预加载测试1. 关闭系统服务2. 显示3. 删除预装APP4. 其它关闭BootLoader的企鹅# kernel/msm-4.9/arch/arm

2020-09-01 21:51:56 8276

原创 Android 自启动脚本说明

Android 自启动脚本说明文章目录Android 自启动脚本说明开机启动脚本1. 开机启动脚本2. 添加文件3. 添加服务4. 添加服务权限备注开机启动脚本1. 开机启动脚本#!/vendor/bin/sh# LEDecho 105 > /sys/class/gpio/exportif [ -d "/sys/class/gpio/gpio105" ]; then echo out > /sys/class/gpio/gpio105/direction echo

2020-09-01 21:49:52 1017

原创 Android 设备节点权限说明

Android 设备节点权限说明文章目录Android 设备节点权限说明selinux 权限1. 临时关闭selinux(重启后失效)2. 源码selinux改成警告模式(无法关掉整个selinux)设备节点文件权限1. 临时加权限(重启后失效)2. 源码修改权限APP权限备注selinux 权限android使用selinux安全,需要关闭selinux才能打开设备节点1. 临时关闭selinux(重启后失效)# 关闭:setenforce 0# 打开:setenforce 1# 查看:ge

2020-09-01 21:48:44 1715

原创 Android 镜像

Android 镜像文章目录Android 镜像镜像说明调整分区大小1. 分区2. 块3. 根文件系统解压镜像备注镜像说明序号分区镜像是否必须编译说明备注1bootboot.img是make bootimagecmdline/内核/设备树2dtbodtbo.img是设备树叠加层3cachecache.img是缓存对应/cache,除了OTA更新外,一般没什么用4mdtpmdtp.img是5vbmet

2020-09-01 21:46:55 1117

原创 Android 烧录与修改分区

Android 烧录与修改分区文章目录Android 烧录与修改分区常用分区uboot烧录设置u-boot环境变量烧录uboot烧录linux进入fastbootdd复制分区查看文件系统大小查看内存大小挂载点源码定义分区大小分区定义文件fastboot分区挂载备注常用分区开机启动画面区:splash1内核区:boot,引导分区系统区:system,系统分区数据缓存区:cache,手机执行后存放缓存的分区用户数据区:userdata,手机执行后存在的数据分区uboot烧录设置u-boot环境

2020-09-01 21:46:32 2434

原创 Android fastboot 烧录说明

Android fastboot 烧录说明文章目录Android fastboot 烧录说明硬件安装 adb和fastboot1. Window2. Linux1. 安装2. 添加规则文件3. 运行fastboot命令需要root权限fastboot烧录脚本硬件平台Micro USB2.0type c 2.0type c 3.0window 10支持支持支持ubuntu 16.04支持支持安装 adb和fastboot1. WindowAndroid

2020-09-01 21:44:58 1363

原创 Android QFIL 烧录

Android QFIL 烧录文章目录Android QFIL 烧录生成镜像包安装python2.71. 安装python-2.7.6.amd64.msi2. 添加环境变量3. 验证prebuilt生成镜像1. 拷贝image2. 运行3. 修改4. 添加logo烧录系统安装QFILQFIL烧录系统1. 添加BootLoader2. 添加xml文件3. 接上USB3. 烧录4. 烧录成功5. 其它配置备注生成镜像包安装python2.71. 安装python-2.7.6.amd64.msi注意:使

2020-09-01 21:43:33 2036

原创 Android 编译

Android 编译说明文章目录Android 编译说明硬件系统环境1. 依赖库2. JDK8编译1. 目标2. 编译脚本备注硬件环境:ubuntu 16.04 64位CPU:2个CPU,2核内存:8Gswap:8G硬盘:300G(源码占45G,编译后总共200G左右)系统环境1. 依赖库sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev libc6-dev

2020-09-01 21:42:23 191

原创 git:导出文件差异

查看commit idgit log --pretty=oneline # 只看提交ID和提交信息,不看作者时间等(按时间倒序排列)注意:id太长一般复制前面7位,或者使用HEADHEAD表示当前提交HEAD^表示上一次提交HEAD^^表示上上次提查看2次commit的文件内容差异git diff 37c4441fa2ccd921b6589454e5fbce4688056a98 c3c3883a71fb1828ad14367b42b1f7188c9c27bb或者git diff HEAD

2020-08-28 16:27:02 1019

原创 关于并发与多线程处理与缓冲区

文章目录读与写读写多线程性能提升缓冲区代码读与写读read:只能监控一个句柄select:一次性监控多个句柄是否可读/可写/异常,超时退出。原理:所有句柄进入等待队列,只要有一个句柄的状态改变,立刻返回(进程从阻塞状态进入就绪),再遍历所有句柄,找到状态发生改变的句柄文件句柄有限:1024个文件句柄是最大值+1超时时间必须每次都初始化(否则,这个时间是剩余的时间)可以一次性不同类型的文件句柄,设备文件/socket/管道等等内部使用轮询来检查状态是否改变poll:同select

2020-08-28 16:23:16 1139

嵌入式思源黑体

思源黑体,TTC、TTF、OTF格式,QT不支持OTF

2017-07-14

空空如也

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

TA关注的人

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