linux串口读写程序 #include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>#include <termios.h>#include <unistd.h>#include <stdio.h>#include <string.h>#include <stdio.h>#include <stdlib.h>#include <stri..
常用库-字符串数字解析 /* Parses and returns number from string */gstaticint32_t ParseNumber(const char* ptr, uint8_t* cnt) { uint8_t minus = 0, i = 0; int32_t sum = 0; if (*ptr == '-') { /* Check for minus character */ .
c++ 禁止拷贝构造函数 class noncopyable{ private: noncopyable(const noncopyable&) = delete; void operator=(const noncopyable&) = delete; protected: noncopyable() = default; ~noncopyable() = default;};
摄像头jpeg拍照通用控制程序 /* * V4L2 video capture example * * This program can be used and distributed without restrictions. * * This program is provided with the V4L2 API * see https://linuxtv.org/docs.php for more information */#include <stdio.h>#include &.
modbus 学习笔记 一、GFP 掩码GFP_ATOMIC:用来从中断处理和进程上下文之外的其他代码中分配内存。从不睡眠。可以用在具有原子性的地方,分配函数。 GFP_KERNEL:内核内存的正常分配。可能睡眠。在具有原子性的地方,不能用。 GFP_USER:用来为用户空间页来分配内存; 它可能睡眠。在具有原子性的地方,不能用。 GFP_NOIO、GFP_NOFS:这个标志功能如同 GFP_KERNEL, 但是它们增加限制到内核能做的来满足请求. 一个 GFP_NOFS 分配不允许进行任何文件系统调用, 而 GFP_
modbus 学习笔记 一、GFP 掩码GFP_ATOMIC:用来从中断处理和进程上下文之外的其他代码中分配内存。从不睡眠。可以用在具有原子性的地方,分配函数。 GFP_KERNEL:内核内存的正常分配。可能睡眠。在具有原子性的地方,不能用。 GFP_USER:用来为用户空间页来分配内存; 它可能睡眠。在具有原子性的地方,不能用。 GFP_NOIO、GFP_NOFS:这个标志功能如同 GFP_KERNEL, 但是它们增加限制到内核能做的来满足请求. 一个 GFP_NOFS 分配不允许进行任何文件系统调用, 而 GFP_
linux 共享网络给其它设备 https://medium.com/@TarunChinmai/sharing-internet-connection-from-a-linux-machine-over-ethernet-a5cbbd775a4f
TCP粘包,拆包及解决方法 粘包拆包问题是处于网络比较底层的问题,在数据链路层、网络层以及传输层都有可能发生。我们日常的网络应用开发大都在传输层进行,由于UDP有消息保护边界,不会发生粘包拆包问题,因此粘包拆包问题只发生在TCP协议中。什么是粘包、拆包?假设客户端向服务端连续发送了两个数据包,用packet1和packet2来表示,那么服务端收到的数据可以分为三种,现列举如下:第一种情况,接收端正常收到两个数据包,即没有发生拆包和粘包的现象,此种情况不在本文的讨论范围内。第二种情况,接收端只收到一个数据包,..
BLE蓝牙笔记----连接参数更新 1、主机连接参数更新1.1、LL_CONNECTION_UPDATE_REQ连接参数第一次是主机发送的 CONNECT_REQ 中传递的。 而这个命令的使用只限主机使用,也就是说主机根据需要随时都可以进行参数更新。从机接收到这个命令后要么使用参数,要么断开连接。LL_CONNECTION_UPDATE_REQ包格式Instant :在连接更新参数时,并不是请求发送过去,这些参数就立刻生效,是在约定的时刻进行更新。BLE 的同步是通过一个连接事件计数器控制的。而这个数据包中的 Instan.
BLE蓝牙笔记----数据包解析 目录1、包格式2、广播包2.1、PDU Type2.2、MAC地址3、数据包3.1、LLID3.1.1、LL Data PDU3.1.2、LL Control PDU3.2、NESN/SN3.3、MD1、包格式2、广播包2.1、PDU Type具体定义如下。可以看出扫描PDU和发起连接PDU都属于广播包2.2、MAC地址TxAdd/RxAdd,各占1bit,表示随后的Device Address字段代表的蓝牙MAC地...
BLE蓝牙笔记----广播连接过程 目录1、广播1.1、广播间隔1.2、三个信道切换时间间隔1.3、广播事件2、扫描与应答3、建立连接3.1、锚点3.2、重要的时间参数3.3、连接状态--主机3.2、连接状态--从机4、广播软件设计流程图1、广播在广播事件中, 每一个广播事件都会在 3 个广播信道中进行数据传输, 而且每一个事件都是以最小的信道编号开始传输;也就是说当广播事件来了,这个 PDU 是依次从广播通道 37、 38、 39 中进行传输。并不是一起同时在三个信道一起广播;设...
pytorch 安装 1、安装教程https://www.cnblogs.com/zhouzhiyao/p/11784055.html2、安装速度慢教程https://www.cnblogs.com/GoubuLi/p/13533519.html
tensorflow 安装失败 1、目前anaconda 一般是python3.8 或者 python.7 或者python2.7 的环境,然而tensorflow 的环境是python3.6.xx 环境,因此需要给tensorflow创建python环境执行如下命令:conda create --name tensorflow python=3.6 //注意3.6后面尽量不加别的后缀注意:查看自己当前环境的python版本,一般是conda自带的,如果自己还安装了其他版本,避免干扰尽量卸载掉,上面的命令并不是去使用..
数字图像处理-直方图均衡化 一、直方图均衡化目的直方图过于集中,偏向左边太暗,偏向右边太亮,偏向中间太模糊;因此如要想让图像对比度更高,更容易看清楚一些细节,则需要直方图均衡化处理二、直方图均衡化重要公式其中 S 为 r 的映射灰度值,为概率密度函数经过推导:推导过程见数字图像处理冈萨雷斯书籍公式通俗解释:把数量少的挨在一起的灰度级叠加起来,像素数量多的灰度级不需要叠加自成一柱;这样就可以把少的变成多的,多的不变。这就实现了均衡化...
linux 内核地址空间 一、内核镜像在3GB~(3GB+896MB)这段直接/线性映射区域,包含了内核初始化页表swapper_pg_dir,内核镜像等。内核也是由一个elf文件(比如vmlinux)加载启动的,加载后也有text段,data段,bss段等。二、内存分配kmalloc和vmalloc在虚拟内存空间的normal memory区域,内核使用kmalloc()来分配内存,kmalloc()返回的也是虚拟地址,但是分到的内存在物理地址上是连续的(因为是直接映射,在虚拟地址上自然也是连续的...
linux进程空间地址划分 一、数据段存放程序中已初始化且初值不为0的全局变量和静态局部变量。数据段属于静态内存分配(静态存储区),可读可写。二、BSS段包括:未初始化的全局变量和静态局部变量 初始值为0的全局变量和静态局部变量(依赖于编译器实现) 未定义且初值不为0的符号(该初值即common block的大小)三、堆堆用于存放进程运行时动态分配的内存段,可动态扩张或缩减。 堆中内容是匿名的,不能按名字直接访问,只能通过指针间接访问。当进程调用malloc(C)/new(C++)等函数分配内...