自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(28)
  • 收藏
  • 关注

原创 C51实现串口1环形FIFO无阻塞数据发送和接收 并解析自定义协议

串口的发送和接收数据,采用查询法, 会阻塞代码的运行, 效率比较低, 采用环形FIFO来缓冲发送和接收的数据, 再配合中断自动发送和接收, 效率会提升极大, 能把波特率带宽跑满。

2023-12-25 11:15:11 542

原创 C51实现定时器0高效率获取开机的微秒数及实现多任务执行无阻塞延时

这里我用的芯片的是stc32g, 主频为24M, 设置定时器初始为 TH0, TL0的值为0, 最大计时为 32768 us, 计时器每计时一次所用的时间为0.5us, 再次添加一个溢出中断函数来记录溢出了多少次。, 可以获取开机到现在的微秒数, 不能1us中断一次吧, 这样效率太低, 直接获取定时器0的 TH0 和 TL0的值及溢出次数来计时就比较好。c51计算乘除法比较慢, 为计算效率高采用位操作简化为, 此时需要满足条件为主频为24M, 定时器初始为0。则此时获取开机到现在的运行时间计算为,

2023-12-19 10:59:32 481

原创 vue管理系统列表行按钮过多, 封装更多组件

管理系统table列表操作列, 随着按钮的数量越来越多会不断加宽操作列, 感觉很不好, 对此我封装了这个自动把多余的按钮放到更多菜单下。menu组件我这是ant的, 可以自行替换为其他框架的。

2023-09-22 11:21:48 725

原创 vue2中将使用Vue.extend生成的组件挂载到根实例下

vue2中将使用Vue.extend生成的组件直接挂载到指定节点下, 会发现没有$router及$store等全局实例中的属性, 我们可以使用 parrent属性来指定已创建的实例之父实例,在两者之间建立父子关系。这样在一些打开弹窗,侧边栏时会方便的多。

2023-05-29 09:29:53 409

原创 js密码生成器小工具

用html写的密码生成器小工具

2022-12-04 17:19:55 2777

原创 原生Android 以面向对象的方式操作canvas

Android 自定义view 用canvas去画图形, 都是以面向过程的方式去一笔一笔的画, 而且画的图形也不能支持添加事件, 而html, js在这方面有大量的封装好的canvas框架, 很奇怪的是android上我也没有搜到类似的封装框架, 我只是个web前端开发者, 可能是我对android不了解没有搜索到, 我就仿照html,js这一套实现了这个Android上的canvas小框架。框架参照html div标签的一些特性实现的。

2022-11-25 19:45:00 886

原创 apicloud和android webview下的串口蓝牙通信插件

这是我在apicloud平台开发的模块cxgBluetooth模块简介:蓝牙串口通信的基本支持。作为客户端支持同时连接多个不同的蓝牙设备。作为客户端支持同时连接同一个设备的不同UUID的服务。作为服务端支持同时开启多个不同UUID服务。允许同时作为客户端和服务端。支持手机与手机之间的通信,支持手机与ESP32、经典蓝牙模块等下位机之间的通信。所有发送读取数据均支持返回HEX数据。空闲超过1秒自动发送一个心跳包,能够监听蓝牙外设主动断开。支持多页面应用,页面刷新状态保存,设备不掉线。

2022-01-19 19:27:33 3788 2

原创 vscode搭建opencv4.5.5+opencv_contrib4.5.5开发环境

我就没见过这么坑的安装环境,各种问题,折腾了无数次, 终于运行起来了一开始还以为在windows上编译必须要用vs2015来编译,其他的帖子都介绍要用到visual studio来编译,一个visual studio就好几个G,我也不会用,其实直接用CMake编译就行了不带opencv_contrib, 基础的opencv编译过程看这个帖子,流程以这个为主VScode搭建Opencv(C++开发环境)_河旬的博客-CSDN博客_vscode配置opencv环境我的环境vscode最

2022-01-19 19:18:02 7078

原创 锂电池串联放电并联充电自动转换电路

直接通过5v充电器给串联锂电池组充电可以大大提高充电器的利用率, 毕竟现在手机充电器都有, 再去买个专用的锂电池平衡充电器又感觉没啥必要,一般给串联锂电池组充电的方案就是通过升压模块将5v升压后再充电,感觉有弊端:1. 一般没有平衡充电功能,造成过冲,可能有损电池2.升压型充电发热量巨大,连热熔胶都能融化,而且充电电流也不大, 充电太慢了.我就琢磨着实现一个锂电池组放电时候是串联放电的, 而充电时是并联充电的模块, 经过改进实现了这个小模块, 用了一阶段, 感觉还可以,没啥大问题.这是两节电池的

2022-01-17 19:35:06 11232 5

原创 arduino实现一个自定义通信协议解析库

在做遥控小车时, 手柄会发送一串二进制数据到小车上, 免不了进行自定义协议的解析, 有时仅仅发送三个字节解析起来却比较麻烦, 而且可靠性也不行。为了不需要每次都进行晦涩的复杂的协议解析,这个库就此诞生了。该库支持arduino uno, stm32, esp32为了实现简单协议定义为:(帧头)+实际数据+数据长度(一个字节)+(帧尾)该库的作用是实现从一串杂乱无章的字节数组中找出符合自定义通信协议包裹的 ”实际数据“部分取出来。demo:#include <Arduino.h>#i.

2021-02-26 16:21:42 2386 7

原创 arduino实现一个缓动动画库CxgAnimate

在javascript里有一些动画库,在c和单片机领域内没见过谁做个呼吸灯效果能抽象出,这个过程其实是一个动画。受js动画库animejs启发https://www.animejs.cn/documentation/#gridStaggering, 开发了这个缓动动画库。缓动动画曲线参考自https://www.xuanfengge.com/easeing/easeing/一切缓慢改变的动画过程,如呼吸灯渐变,舵机缓慢移动,oled屏幕字符移动等都可以使用动画的思想去实现。该库仅提供开拓思路的作用。动画

2021-01-29 20:47:19 528

原创 arduino实现类似javascript的事件总线EventBus

我也不知道我写的这个库在arduino编程中有什么用,显得多此一举。不过事件总线模式在javascript中还是非常有用的。demo:#include <Arduino.h>#include "cxg_EventBus.h"//支持arduino uno, stm32, esp32CxgEventBus eventBus;void setup() { Serial.begin(115200); eventBus.on( "test1", [](vo.

2021-01-25 22:53:26 199 1

原创 arduino封装了一个无线串口模块LC12S的操作库

前一段时间接触到一个比较好用的2.4G无线串口通信模块LC12S,在淘宝上仅四五块钱,收发一体,比较好用.我照着技术文档封装了这个设置操作的库demo代码:#include <Arduino.h>//依赖我的JSTime库#include "cxg_JSTime.h"#include "cxg_lc12s.h"//该库支持esp32, stm32, arduino uno等//注意该模块仅支持3.3v,5v肯定会烧毁, 用在arduino un...

2021-01-23 18:16:04 998 1

原创 arduino实现一个按键检测库

参照OneButton库, 我实现了一个自己的按键检测库, 实现了按键的按下,抬起,长按,双击功能, 代码简洁明了。目前只在esp32上测试过,在stm32, arduino uno上应该也没问题. demo代码:#include <Arduino.h>#include "cxg_Btn.h"static int btn1_pin = 39;static CxgBtn btn1(btn1_pin, false);void setup() { Serial.begi.

2021-01-22 20:03:45 2279 1

原创 arduino实现一个简单的NEC红外遥控解码库

最近闲着写了一个arduino上的红外遥控解析代码库,该库代码清晰易懂,调试方便,在stm32f103c8t6, esp32, arduino uno上测试通过。cxg_IRremote.h/*NEC红外遥控编码 *不使用额外的定时来进行时间测量, 仅使用1个支持外部中断的即可。 *原理, 利用上升沿中断记录两次上升沿时间间隔来判断 *引导码, 重复码, 数字1和数字0 */#ifndef CXG_IRremote_H#define CXG_IRremote_H#include..

2021-01-16 15:34:06 1720 2

原创 arduino实现一个无阻塞延时库JSTime

受javascript的 setTimeout 和 setInterval启发 实现的延时定时器先上一段使用代码看看如何使用:#include "cxg_JSTime.h"#include <Arduino.h>static JSTime jsTime;void setup() { Serial.begin(115200); //每隔1s执行一次 jsTime.setInterval( []() { Serial.print("set

2020-10-24 22:54:14 2762 2

原创 PlatformIO编译arduino提示gbk编码错误

用vscode上的PlatformIO开发arduino,最近总是显示报错,UnicodeDecodeError: 'gbk' codec can't decode byte 0xaf in position 706: illegal multibyte sequence经过一番验证,是代码中写的中文注释引起的问题,但是死活找不出是哪个注释写的不对引起的。虽然我的文件编码是utf-8,但是python在读取时采用的是gbk编码读取的,于是就导致了这个注释也能影响编译的诡异bug。于是点.

2020-09-30 11:54:12 775

原创 程序代码判空操作的等价性原理

null的本源不是空,而是对应对象的最重要的属性没有意义而已。所以我提出来了判空操作的等价性原理。假设a.b是一个对象,我们要取对象b下面的属性c,如果此时b对象是null的话,会引发空指针异常,我们在代码中既然能够写出a.b.c这样的代码来,说明b是存在的怎么会是null呢,只是此时的b是存在于我们的意识中的,它不是什么都没有。我们假定一切对象都不是null,那么我们直接写a.b.c不会有任何问题。假设a.b.d是最能体现该对象存在的一个属性,比如说是id,比如说一个人的name是空,那么

2020-05-26 10:11:04 429

原创 分享一个自行开发的加强版swagger-ui,提供一个全新的api文档生成思路

我前段时间开发的加强版swagger-ui。这或许为swagger应该是一个什么样子,提供了一个全新的思路。文档缓存,即使服务器没开,仍然可以看文档。 文档注释增强,采用js注释写法,对前端人员比较友好。 文档输入输出框,采用CodeMirror轻量级文本编辑器代替原版的textarea输入框,支持编辑器语法高亮,代码格式化,代码折叠… 自动捕获前端的代码实现,连接口数据预处理逻辑都能显示,支持枚举值提示等。 接口字段排序,请求返回的数据也能显示注释,自动执行前端数据预处理逻辑,自动转换枚.

2020-05-15 09:47:50 646

原创 任意层级的流程图展示js插件

最近展示审批流需要展示并行审批的功能,于是开发了一个可以展示任意层级的流程图。后台是activity开发的。需要提供如下的数据结构:{ //最顶层必须是一个串行任务 "taskType": 0, //0是 串行任务 2是并行任务 "subTasks": [{ "taskType": 0, "subTasks": null, //任务子级 "state": 10, //"10": "已执行","20": "当前执行","30": "未执行" "tas.

2020-05-14 17:19:46 3494

原创 web前端开发-自己整理及开发的一些常用工具函数

/** * 自己封装的一些常用的工具 * @author chengxg * @since 2019-1-11 */export function isType(val) { return Object.prototype.toString.call(val).slice(8, -1);}export function isObject(val) { return isType(val) === 'Object';}export function isArray(val) {.

2020-05-12 11:36:07 390

原创 原生js实现事件总线

/** * 发布-订阅模式 * 自定义的事件总线 * 方法: * on: 绑定一个事件 * once: 绑定一个一次性事件 * off: 移除一个事件 * emit: 触发一个事件 * use: 添加一个中间件 * * @author chengxg * @since 2018-12-29 * @constructor */export function Even...

2019-06-17 18:04:18 1998

原创 web前端避免无意义的数据判空及优雅的混入属性

在web前端开发中,有这么几种情况,后台返回的数据并不完整。后台只给了一个状态值, 我们前端在显示时, 需要显示状态的名。 后端在开发时, 自己在数据库中造了一些测试数据,没有关联正确,导致返回的数据有缺失。 正常业务的不同阶段,有一些数据字段与业务状态有关,导致接口中的一些字段缺失了。当接口嵌套层级过多及接口字段过多时,前端在页面展示时,对接口数据的判空令人很头痛。之前一直这样混入...

2019-06-17 17:52:02 1107

原创 在vscode中开发arduino编译巨慢解决办法

每次在vscode中, 编译Arduino花费的时间巨长,等的好烦,仔细一看每次在Arduino 输出控制台上会出现一个警告[Warning] Output path is not specified. Unable to reuse previously compiled files. Upload could be slow. See README.只需在.vscode ->...

2019-05-27 09:20:19 16670 9

原创 基于webpack4.0 搭建vue多模块系统

基于webpack4.0 搭建vue多模块系统。当一个系统包含多个模块时,总不能每个模块开一个vue项目吧,做不到资源共用,通过改造webpack配置来聚合多个模块,达到资源共用的效果。在config/index.js中配置相关的模块名,即可引入子模块,还可以指定打包的模块。目录结构如图,modules文件夹下存放各个模块。子模块文件夹如图打完包之后的文件...

2019-03-14 22:04:54 2213

原创 js版梅森旋转生成随机数

用js实现, 梅森旋转生成随机数, 来代替Math.random();该文章参考自https://blog.csdn.net/Touch_Dream/article/details/68948708&lt;!DOCTYPE html&gt;&lt;html&gt; &lt;head&gt; &lt;meta charset="UTF-8"&gt; &lt;title&gt...

2018-07-20 23:31:40 835

原创 基于html5+的nativejs实现android蓝牙串口通讯

代码实现摸索了一下,自己写了一个蓝牙串口连接接收数据的小示例。还是希望有大神告知如何开启多线程来接收数据。如果要测试此代码需要自行引入vue.js。

2018-07-20 22:50:48 34203 114

原创 工兵扛军旗游戏新玩法

最近手痒痒,用vue.js开发了一款“工兵扛军旗”练练手,真正的工兵扛军旗,棋子可以摞起来。游戏采用html5开发的多人在线联网对战游戏,客户端运行在浏览器上,支持windows,Android,,IOS等平台。简介:此玩法为翻棋玩法, 地雷被 工兵挖上不会消失,反而被 工兵所用; 军旗被 工兵扛上游戏不会结束, 军旗变成了 工兵的杀人工具; 炸弹会被 排长俘获,变成自己阵营的棋...

2018-07-20 07:55:52 7587

空空如也

空空如也

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

TA关注的人

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