“Computers are useless.They can only give you answers.” —— Pablo Picasso
字节序
endian 起源
摘自维基百科
“endian”一词来源于十八世纪爱尔兰作家乔纳森·斯威夫特(Jonathan Swift)的小说《格列佛游记》(Gulliver’s Travels)。小说中,小人国为水煮蛋该从大的一端(Big-End)剥开还是小的一端(Little-End)剥开而争论,争论的双方分别被称为“大端派”和“小端派”。以下是1726年关于大小端之争历史的描述:
“我下面要告诉你的是,Lilliput 和 Blefuscu 这两大强国在过去36个月里一直在苦战。战争开始是由于以下的原因:我们大家都认为,吃鸡蛋前,原始的方法是打破鸡蛋较大的一端,可是当今皇帝的祖父小时候吃鸡蛋,一次按古法打鸡蛋时碰巧将一个手指弄破了。因此他的父亲,当时的皇帝,就下了一道敕令,命令全体臣民吃鸡蛋时打破鸡蛋较小的一端,违令者重罚。老百姓们对这项命令极其反感。历史告诉我们,由此曾经发生过6次叛乱,其中一个皇帝送了命,另一个丢了王位。这些叛乱 ...
python
未读
技术是描述某种尚未发挥作用的东西的词汇. —— Douglas Adams
前言
😄鸽王回归,鸽了好久没发文章,难得有空,制作点简单的小工具!
原理
制作工具前,我们先了解下获取已连接过的 WIFI 账号密码的原理。
win+R 打开我们的 cmd 命令行窗口,输入 netsh wlan show network,可以获取当前网络接口下可连接的所有 WIFI 名称,如果想更多的信息,则输入 netsh wlan show networks mode=bssid,来显示当前周边有效无线网络的相关信息(网卡地址、加密类型、信号强度、无线电类型、占用频道、基本速率等信息)。
但是这些信息还不包括我们需要的 WIFI 名称及密码,所以我们再进一步,输入 netsh wlan show profiles,显示当前本机保存的 profiles,随后再单独对某一个配置文件进行查询,如图片中的 nixgnauhcuy,输入 netsh wlan show profiles nixgnauhcuy key=clear,在安全设置中的关键内容,可以看到我已连接的 WIFI nixgnauhcu ...
位域概述
位域是为了将所需的存储量减少到最小而设计的,有些数据在存储时并不需要占用一个完整的字节,只需占用一个或多个 bit 位。基于这种考虑,将相同的存储位置划分为“位字段”,而不是每个位字段指定专用的位置。
摘自维基百科:
位段(或称“位域”,Bit field)为一种数据结构,可以把数据以位的形式紧凑的储存,并允许程序员对此结构的位进行操作。这种数据结构的好处:
可以使数据单元节省储存空间,当程序需要成千上万个数据单元时,这种方法就显得尤为重要。
位段可以很方便的访问一个整数值的部分内容从而可以简化程序源代码。
位域的运用
先来看个 Demo:
123456typedef struct demo{ unsigned char a:4; unsigned char b:3; unsigned char c:1;} demo_t;
在结构体中声明位域要使用 : 运算符,后边的数字用于限定结构体成员变量所占用的位数。
上边的例子将创建三个宽度为 4、3 和 1 位的无符号字符。位字段的作用基本上是屏蔽按位操作以访问其字段的值。它们实际上是具 ...
2022-04-12:更新 蓝牙开发之 IOS AMS,有兴趣的可以点击链接进入~
2022-04-08:更新接收推送效果
上图演示了,接收微信通知和 QQ 通知的展示,短信来电等我就不一一展示了。
什么是 ANCS
ANCS 介绍(Introduction)
ANCS 全称 Apple Notification Center Service(苹果通知中心服务),是提供给 BLE 设备的一种获取 IOS 设备通知的方法。ANCS围绕三个原则进行设计:简单,高效和可扩展性。
以下引用自 ANCS 规范
The purpose of the Apple Notification Center Service (ANCS) is to give Bluetooth accessories (that connect to iOS devices through a Bluetooth low-energy link) a simple and convenient way to access many kinds of notifications that are generated ...
什么是看门狗
看门狗是一种防止故障和崩溃的机制,其本质是一种电子计时器,开始计时器后,必须要定期重置计时以防止超时,当程序跑飞或者发生故障时,因为不能定期重置计时导致计时器超时,这时看门狗会重新启动芯片。
看门狗可以用软件或者硬件来实现。两者都是通过定时器实现,定时时间内没有喂狗,就会复位芯片。软件看门狗优点在于可以通过程序改变时间,并且可以随时禁用看门狗。缺点是如果在初始化看门狗前程序就已经跑飞或者禁用看门狗后程序跑飞,这样看门狗就没有起到系统恢复的作用。硬件看门狗则是一种更强大的解决方案,一旦开启,看门狗计数器就需要由程序定期发送信号重置计时,任何系统崩溃(无论是硬件还是软件)都会导致看门狗计数器超时,这时硬件看门狗会通过向 CPU 发送复位信号来将崩溃或故障的 CPU 重启。
在裸机系统(没有操作系统)上使用看门狗相对简单,初始化启动看门狗后,实现一个功能即可重置看门狗计数器。在任何系统崩溃的故障中,计数器都不会被重置,所以看门狗也会重置系统。
上面说了裸机系统,那么在多任务的系统中使用看门狗的有效方法是什么呢?
多任务系统中的看门狗实现必须能够保证操作系统和每个应用任务的正确执 ...
python
未读
一个好的程序员应该是那种过单行线都要往两边看的人。
前言
Hello,距上次更新居然过了一个多星期。😂可不能怪我懒,我家里工作的笔记本要拿去给家人用,所以最近一直在找替换机,最后在狗东买了联想的拯救者 R7000,工作原因还是笔记本方便,不然组装台台式机也是个不错的选择,下单后隔天傍晚就收到了速度好评👍,验完机后要把我过时的旧笔记本的资料迁移到新机上,平时上班也没空临近过年反而更忙了😩,只有晚上回去才有空折腾。又要装软件,搭建一些开发环境,所以一直没有时间更新。
再坚挺到 6 号我就放假了!~~多半更加没时间更新了。~~公司放假 14 天,😏不知道各位是不是早早就放假舒舒服服过年去了。
回到正题,因为换了电脑,所以需要重新安装一些开发环境,刚好整理一下一些开发环境的安装流程!
下载 python
首先,进入 python 官网,
找到 Downloads 选择要安装的平台,我的系统是 win10 的,所以选择 Windows 平台,点击进入下载页,这里我选择稳定版 python 3.8.7,然后根据自己操作系统的位数选择 32 位或 64 位来下载,这里我是 64 位的 ...
python
未读
Beautiful is better than ugly.
前言
继续上一篇使用 python 制作串口工具(一),完成要实现的串口工具代码逻辑!
实现
最终效果:
获取接入的 com 口
首先,我们先实现获取电脑当前所接入的串口,实现效果为:每次点击 Combo Box,就把当前电脑接入的串口号信息读取出来。所以我们需要对 Combo Box 这个控件进行重写,这里新建个 my_combobox.py,代码如下:
my_combobox.py
123456789101112131415161718192021222324252627282930313233import serialimport serial.tools.list_portsfrom PyQt5.QtWidgets import QComboBoxclass My_ComBoBox(QComboBox): def __init__(self, parent = None): super(My_ComBoBox,self).__init__(parent) # 重写showPopup函 ...
python
未读
Life is short, you need Python. —— Bruce Eckel
前言
工作中偶尔会用到 python 来制作一些小工具,所以针对这些小工具,做了些简化,移除了一些比较复杂的功能,拿来分享。
UI 界面
在实现具体逻辑之前,我们要先设计好串口工具的 UI 界面,这里我直接使用的 Qt Designer 来设计串口界面的布局。
最终效果布置好布局后是这样的:
实际预览效果:
实现
打开 Qt Designer,点击新建 Main Window 窗体,
进入项目界面后,我们需要往里面拖入我们需要的控件,先添加两个 QGroupBox 控件并且设置文本为串口接收设置和串口发送设置, 一个作为我们的接收区,一个作为我们的发送区。
上面操作完成后,我们先来布置我们的接收区,先添加 Label 控件,分别设置文本为串口选择、波特率、停止位、数据位、校验位的五个 Label 控件。
然后,我们要增加组合框,方便后面选择串口的参数,同样从左边拖出五个 Combo Box 控件,然后双击控件,这里我只拿波特率的组合框来描述,其他的例如停止位数据位还有校验位的操 ...
不要站着调试程序,那会使得你的耐心减半,你需要的是全神贯注。—— Dave Storer
前言
记录工作中学习到的知识,在这里做些笔记,方便自己后面经常温习。
正文
为什么要获取结构体成员变量的偏移
我在做嵌入式工作时,在已知要获取信息的 flash 地址时,需要取出相对应的信息元素,这个时候时常需要知道结构体相对于已知地址的偏移,方便快捷的从 flash 中取出信息元素,所以时常使用这个方式。
方法
我们先用普通的方法获取结构体偏移,代码如下:
1234567891011121314151617181920212223242526#include <stdio.h>typedef struct { int a; int b; int c;}x_t;void test(void){ x_t p; printf("p_addr=%d\r\n", (int)&p); printf("p.a_addr=%d\r\n", (int)&p.a); p ...
代码写的越急,程序跑得越慢。—— Roy Carlson
前言
Nor Flash 和 Nand Flash 在各种嵌入式系统中都扮演着不可或缺的角色,所以在这里整理下。
历史
以下摘自维基百科
闪存(无论是 NOR 型或 NAND 型)是舛冈富士雄博士 1980 年申请了一个叫做 simultaneously erasable EEPROM 的专利。然而,东芝公司的论资排辈却让这项划时代的发明石沉大海,直到4年之后。“我终于被提拔了,可以不用批准就去工厂,让工人们帮忙做出样品了”,富士雄说。 据东芝表示闪存之所以命名为 “Flash” 是由舛冈博士的同事有泉正二建议,因为这种存储器的抹除流程让他想起了相机的闪光灯。舛冈博士在 1984 年的加州旧金山 IEEE 国际电子组件会议 (International Electron Devices Meeting, IEDM) 上发表了这项发明。Intel 看到了这项发明的巨大潜力,并于 1988 年推出第一款商业性的 NOR Flash 芯片。
NOR Flash 需要很长的时间进行抹写,但是它提供完整的寻址与资料总线,并允许随机 ...