随笔分类 -  个人文章

1 2 3 4 5 ··· 18 下一页
摘要:自动生成字段值,咱们首先想到的是主键列(带 IDENTITY 的主键)。EF Core 默认的主键配置也是启用 Identity 自增长的,而且可以自动标识主键。前提是代表主键的实体属性名要符合以下规则: 1、名字叫 ID、id、或 Id,就是不分大小写; 2、名字由实体类名 + Id 构成。比如, 阅读全文
posted @ 2024-08-04 23:27 东邪独孤 阅读(1406) 评论(2) 推荐(5) 编辑
摘要:接了一个小杂毛项目,大概情形是这样的:ZWT先生开的店是卖拆片机的,Z先生不仅卖机器,还贴心地提供一项服务:可以根据顾客需要修改两个电机的转向和转速(机器厂家有给SDK的,但Z自己不会写程序)。厂家有配套一个调节器,调整参数时连接到拆片机的串口上,然后旋转按钮可以调速,拨码开关可以设定电机正转还是反 阅读全文
posted @ 2024-06-29 17:45 东邪独孤 阅读(675) 评论(0) 推荐(7) 编辑
摘要:这一期的话题有点深奥,不过按照老周一向的作风,尽量讲一些人鬼都能懂的知识。 咱们先来整个小活开开胃,这个小活其实老周在 N 年前写过水文的,常阅读老周水文的伙伴可能还记得。通常,咱们按照正常思路构建的应用程序,第一个启动的线程为主线程,而且还是 UI 线程(当然,WPF 默认会创建辅助线程。这都是运 阅读全文
posted @ 2024-06-06 17:46 东邪独孤 阅读(1563) 评论(6) 推荐(9) 编辑
摘要:用 Wifi 来传输音频数据,会比蓝牙更好。使用蓝牙方式,不管你用什么协议,都会对数据重新编码,说人话就是有损音质,虽然不至于全损。而使用 Wifi 就可以将 PCM 数据直接传输,无需再编码和压缩。在 ESP32 开发板上可以通过 I2S(IIS)向功放芯片发出音频数据。 关于 i2s 的时序,老 阅读全文
posted @ 2024-05-26 16:27 东邪独孤 阅读(4717) 评论(3) 推荐(17) 编辑
摘要:在开始主题之前,先介绍一个刷固件工具。这个工具在 idf 中是集成的,不过,乐鑫也单独发布了这个工具—— esptool。下载链接:Releases · espressif/esptool · GitHub。这货是用 Python 写的,只是封装成了 exe,方便直接运行罢了。 在使用时,需要 -p 阅读全文
posted @ 2024-04-28 22:23 东邪独孤 阅读(1806) 评论(2) 推荐(6) 编辑
摘要:在上一篇中,老周用 .NET Nano Framework 给大伙伴们演示了 WS2812 灯带的控制,包括用 SPI 和 红外RMT 的方式。利用 RMT 是一个很机灵的方案,不过,可能很多大伙伴对 ESP32 的 RMT 不是很熟悉。除了乐鑫自己的文档,没几个人写过相关的水文,可见这里头空白的水 阅读全文
posted @ 2024-04-20 23:09 东邪独孤 阅读(2234) 评论(4) 推荐(10) 编辑
摘要:上一篇中,老周简单肤浅地介绍了 XInput API 的使用,并模拟了鼠标移动,左、右键单击和滚轮。本篇,咱们用 .NET 代码来完成相同的效果。 说起来也是倒霉,博文写了一半,电脑忽然断电了。不知道什么原因,可能是 UPS 电源出故障。重新开机进来一看,博文没有自动保存到草稿箱。我记得以前是有自动 阅读全文
posted @ 2024-03-02 23:07 东邪独孤 阅读(680) 评论(0) 推荐(3) 编辑
摘要:老周一般很少玩游戏,在某宝上买了一堆散件,计划在过年期间自己做个机械臂耍耍。头脑中划过一道紫蓝色的闪电,想起用游戏手柄来控制机械臂。机械臂是由树莓派(大草莓)负责控制,然后客户端通过 Socket UDP 来发送信号。优先考虑在 PC 和手机上测试,就顺便折腾一下 XInput API。当然,读取手 阅读全文
posted @ 2024-02-19 16:28 东邪独孤 阅读(1644) 评论(1) 推荐(2) 编辑
摘要:由于两个月的奋战,导致很久没更新了。就是上回老周说的那个产线和机械手搬货的项目,好不容易等到工厂放假了,我就偷偷乐了。当然也过年了,老周先给大伙伴们拜年了,P话不多讲,就祝大家身体健康、生活愉快。其实生活和健康是密不可分的,想活得好,就得健康。包括身体健康、思想健康、心理健康、精神健康。不能以为我无 阅读全文
posted @ 2024-02-11 12:29 东邪独孤 阅读(4376) 评论(4) 推荐(15) 编辑
摘要:一个多月前接手了一个产线机器人项目,上位机以读写寄存器的方式控制机器人,服务器就是用 ASP.NET Core 写的 Web API。由于前一位开发者写的代码质量问题,导致上位机需要16秒才能启动。经过我近一个月的改造,除了保留业务逻辑代码,其他的基本重写。如今上位机的启动时间在网络状态良好的条件下 阅读全文
posted @ 2024-01-01 13:01 东邪独孤 阅读(2830) 评论(7) 推荐(14) 编辑
摘要:老周是一个不喜欢做界面的码农,所以很多时候能用控制台交互就用控制台交互,既方便又占资源少。有大伙伴可能会说,控制台全靠打字,不好交互。那不一定的,像一些选项类的交互,可以用键盘按键(如方向键),可比用鼠标快得多。当然了,要是要触控的话,是不太好用,只能做UI了。 关于控制台交互,大伙伴们也许见得最多 阅读全文
posted @ 2023-12-17 21:17 东邪独孤 阅读(3528) 评论(12) 推荐(51) 编辑
摘要:前面老周给大伙伴们演示了过滤器的运行流程,大伙只需要知道下面知识点即可: 1、过滤器分为授权过滤、资源访问过滤、操作方法(Action)过滤、结果过滤、异常过滤、终结点过滤。上一次咱们没有说异常过滤和终结点过滤,不过老周后面会说的。对这些过滤器,你有印象就行了。 2、所有过滤器接口都有同步版本和异步 阅读全文
posted @ 2023-12-02 22:32 东邪独孤 阅读(592) 评论(0) 推荐(2) 编辑
摘要:MVC 的过滤器(Filters)也翻译为“筛选器”。但是老周更喜欢翻译为“过滤器”,意思上更好理解。 既然都叫过滤器了,就是在MVC的操作方法调用前后进行特殊处理的类型。比如: a、此调用是否已授权? b、在模型绑定之前要不要修改数据源?(可能含有儿童不宜的数据) c、在调用MVC方法前要不要改一 阅读全文
posted @ 2023-11-26 11:40 东邪独孤 阅读(1786) 评论(0) 推荐(9) 编辑
摘要:在多线程编程中,如果每个线程的运行不是完全独立的。那么,一个线程执行到某个时刻需要知道其他线程发生了什么。嗯,这就是所谓线程同步。同步事件对象(XXXEvent)有两种行为: 1、等待。线程在此时会暂停运行,等待其他线程发出信号才继续(等你约); 2、发出信号。当前线程发出信号,其他正在等待线程收到 阅读全文
posted @ 2023-11-11 21:15 东邪独孤 阅读(1861) 评论(2) 推荐(12) 编辑
摘要:前面一些文章,老周简单介绍了在Qt 中使用列表模型的方法。很明显,使用 Item Model 在许多时候还是挺麻烦的——要先建模型,再放数据,最后才构建视图。为了简化这些骚操作,Qt 提供了几个便捷类。今天咱们逐个看看。 一、QListWidget 这厮对应的 List View,用来显示简单的列表 阅读全文
posted @ 2023-10-29 18:50 东邪独孤 阅读(1079) 评论(0) 推荐(0) 编辑
摘要:经过版本更新,Mini API 的功能逐步完善,早期支持得不太好的 mini API 现在许多特性都可以用了,比如灰常重要的依赖注入。 咱们先来个相当简单的注入测试。来,定义一个服务类,为了偷懒,老周这里就不使用 接口 + 实现类 的方式了。 public class MyService : IDi 阅读全文
posted @ 2023-10-04 18:47 东邪独孤 阅读(1980) 评论(4) 推荐(12) 编辑
摘要:前一篇水文中,老周演示了 QAbstractItemModel 抽象类的继承方法。其实,在 Qt 的库里面,QAbstractItemModel 类也派生了两个基类,能让开发者继承起来【稍稍】轻松一些。 这两个类是 QAbstractListModel 和 QAbstractTableModel。 阅读全文
posted @ 2023-09-17 23:07 东邪独孤 阅读(397) 评论(0) 推荐(0) 编辑
摘要:列表模型(Item Model),老周没有翻译为“项目模型”,因为 Project 和 Item 都可以翻译为“项目”,容易出现歧义。干脆叫列表模型。这个模型也确实是为数据列表准备的,它以 MVC 的概念为基础,在原始数据和用户界面视图之间搭建桥梁,使两者可以传递数据(提取、修改)。 Qt 里面使用 阅读全文
posted @ 2023-09-09 18:08 东邪独孤 阅读(773) 评论(0) 推荐(0) 编辑
摘要:工具提示即 Tool Tip,当用户把鼠标移动到某个UI对象上并悬停片刻,就会出现一个“短小精悍”的窗口,显示一些说明性文本。一般就是功能描述,让用户知道这个XX是干啥用的。 在 Qt 中使用工具提示最方便的做法是直接用 QWidget 类的成员方法:setToolTip。从 QWidget 类派生 阅读全文
posted @ 2023-08-26 11:02 东邪独孤 阅读(823) 评论(0) 推荐(0) 编辑
摘要:在开始主题前,先看一个 C++ 例子: #include <iostream> struct Data { int a; int b; }; // 注意这里 struct Data *s; void doSome() { Data k; k.a = 100; k.b = 300; // 注意这里,会 阅读全文
posted @ 2023-08-07 10:34 东邪独孤 阅读(1382) 评论(0) 推荐(0) 编辑

1 2 3 4 5 ··· 18 下一页