首页
关于
README
Search
1
如何配置终端现代化Neovim
635 阅读
2
mdk3工具使用
483 阅读
3
Windows11pro 下载体验
451 阅读
4
关于C语言
409 阅读
5
关于Docker容器--0×01
383 阅读
默认分类
网络技术
渗透测试
编程语言
C语言
Python
Linux
搞机技巧
Termux
golang
数学
Search
标签搜索
printf
mach
sin cos tan
Toanle
累计撰写
36
篇文章
累计收到
1
条评论
首页
栏目
默认分类
网络技术
渗透测试
编程语言
C语言
Python
Linux
搞机技巧
Termux
golang
数学
页面
关于
README
搜索到
6
篇与
默认分类
的结果
2023-06-19
在Linux上使用I2c
什么是I2c? 在“Inter-Integrated Circuit” 中,“Inter-” 表示“在……之间,相互”的意思;“Integrated Circuit” 简称“IC”,表示“集成电路”的意思。 “Inter-Integrated Circuit”,直接翻译过来就是内部集成电路(DeepL翻译为互联电路,微软翻译为内部集成电路,百度翻译为内置集成电路)。德力威尔王术平认为,应该把“Inter-Integrated Circuit”翻译为集成电路互连或者芯片互连,更符合国人习惯,更为贴切。在中国正式的书面场合,全称写作Inter-Integrated Circuit,简写Inter-IC或者I2C(数字“2”书写为上标,,英文读作“I squared C”,中文读作“I平方C”)。在非正式场合或者数字“2”无法书写为上标时,有人就书写为“IIC”或者“I2C”,把“IIC”读作“I-I-C”,把“I2C”读作“I-two-C”或“I二C”。这些书写方式或叫法,其实没有对错,只是不同习惯而已,就像普通话和地方话一样。但是,我们在严谨的正式场合,还是要统一标准,规范书写为“I2C”(数字“2”书写为上标),规范读作“I平方C”。在本文中,德力威尔王术平对相关术语的中文解释做出如下约定:I2C:读作“I平方C”(尽量不读作“I方C”,避免和I3C混淆)。I2C:集成电路互连。I2C Bus:I2C总线或集成电路互连总线。I2C Specification:I2C规范或集成电路互连规范。I2C Communication Interface:I2C通信接口或集成电路互连通信接口。I2C Communication Protocol:I2C通信协议或集成电路互连通信协议。I2C:在无法书写上标数字“2”时,可书写为“IIC”或“I2C”。计算机中Bus术语的定义在计算体系结构中, 总线(Bus)是计算机内部组件之间或计算机之间传送信息的公共通信干线,它是由导线组成的传输路径。总线(Bus)是一种电路,它是cpu、RAM、ROM、输入、输出等设备传递信息的公用通道,充当数据在计算机内传输的高速公路按照计算机所传输的信息种类,计算机的总线可以划分为数据总线、地址总线和控制总线,分别用来传输数据信息、地址信息和控制信号。首先,我们需要安装工具包。sudo apt install i2c-toolsi2c-tools是一个用于 Linux 与 软件/硬件 I2C 总线通信的实用工具集,其中包括了查看和修改 I2C 总线设备信息的工具。以下是一些常见的使用示例:列出I2C总线上的设备:sudo i2cdetect -y 1这将会显示以16进制格式列出I2C总线地址范围内所有已经探测到的设备。其中,第一个参数-y表示以非交互模式运行,第二个参数1表示使用1号I2C总线(对于一些系统可能是2号I2C总线)。这个命令可以帮助我们快速看到哪些设备设备与I2C总线通信连接,以及它们的I2C地址。读写设备寄存器:sudo i2cget -y 1 0x48 0x00这个命令表示从I2C地址为0x48的设备中读取寄存器地址为0x00的寄存器的值。如果想要写入一个新的值,我们可以用i2cset命令,例 如:sudo i2cset -y 1 0x48 0x00 0x10这个命令表示往I2C地址为0x48的设备中写入寄存器地址为0x00的寄存器的值为0x10。使用i2cdump命令读取设备的寄存器:sudo i2cdump -y 1 0x48如果我们想要快速查看一个设备的所有寄存器的值,我们可以使用i2cdump命令。这个命令表示从I2C地址为0x48的设备中读取所有的寄存器的值(通常有16个)。编写自定义的I2C工具:除了常用的i2cget和i2cset命令之外,我们还可以使用i2c-tools提供的APIs创建自定义的I2C工具。例如,下面是一个简单的C程序,通 过I2C通信从 EEPROM (I2C地址为0x57) 中读取两个字节的数据:#include <fcntl.h> #include <unistd.h> #include <linux/i2c-dev.h> // for I2C_SLAVE macro #include <stdio.h> #include <stdlib.h> int main(int argc, char** argv){ int fd; if ((fd = open("/dev/i2c-1", O_RDWR)) < 0){ // open I2C bus perror("open"); exit(1); } if (ioctl(fd, I2C_SLAVE, 0x57) < 0){ // select EEPROM device perror("ioctl"); exit(1); } char buffer[2]; int ret; if ((ret = read(fd, buffer, 2)) != 2){ // read 2 bytes from memory address 0x00 perror("read"); exit(1); } printf("Read: %#02x %#02x\n", buffer[0], buffer[1]); close(fd); return 0; }以上就是i2c-tools常用的几个使用示例,我们可以根据自己的需求修改。package main import ( "fmt" "log" "time" "golang.org/x/exp/io/i2c" ) func main() { // 打开I2C总线 bus, err := i2c.Open(&i2c.Devfs{Dev: "/dev/i2c-1"}, 0x57) if err != nil { log.Fatal(err) } defer bus.Close() // 模拟I2C设备地址为0x00,读取2字节数据 buffer := make([]byte, 2) if err := bus.ReadRegBytes(0x00, buffer); err != nil { log.Fatal(err) } fmt.Printf("Read: %#02x %#02x\n", buffer[0], buffer[1]) time.Sleep(time.Second) }这个程序使用了golang.org/x/exp/io/i2c包来打开I2C总线并创建I2C设备。我们可以通过调整0x57参数来改变设备的I2C地址。代码中的ReadRegBytes()方法可以使我们直接从指定设备的指定寄存器中读取数据。这个程序会读取从0x00寄存器中读取2字节的数据并在控制台 中输出。最后,代码中的time.Sleep()函数用于防止Go程序在数据读取完成后立刻退出。
2023年06月19日
86 阅读
0 评论
0 点赞
2023-02-12
Linux在命令行下拍照和录像
需要准备如下软件安装:1.sudo apt install fswebcam2.sudo apt install ffmpegffmpegffmpeg -t 20 -s 1920x1080 -r 25 -b:v 1500K -c:v libx264 -i /dev/video0 out.avi设定参数:-t 10 录制10秒:-s 1920x1080 设定分辨率-r 30 设定帧率-b:v 设定视频比特率-b:a 设定视频比特率-c:v libx264 设定视频编码器【等效 -vcodec libx264】-f video4linux2是指定框架-i 摄像头的设备节点ffmpeg -f video4linux2 -s 1280x720 -i /dev/vide--no-bannero0 test.mp4ffmpeg -codecs 可以显示ffmpeg所支持编码格式ffmpeg -f alsa -ac 2 -ar 44100 -i default out.wav参数介绍:-i 指定声卡设备名称。这里default表示选择默认声卡。out.wav 捕获的音频数据保存的文件名称-f 是指定音频驱动类型。alsa是linux下音频驱动框架。oss是另外一种音频框架。-ar <freq> 设置音频采样率,以HZ为单位-ac <channels> 设置音频通道数(单声道、双声道)(2)# ffmpeg -f alsa -ac 1 -ar 44100 -i default -t 30 out.wav参数介绍:-t 30 表示录制30秒就自动停止(3)# ffmpeg -f alsa -ac 1 -ar 16000 -i hw:0 -t 10 out.wav参数介绍:这里的hw:0 也表示选择默认的声卡设备录音。 arecord -L (列出声卡设备数量) 使用arecord -L命令列出了声卡名字之后,就可以选择指定声卡录制声音,其中front:CARD=,DEV=0 ,就是声卡的名字。# ffmpeg --help音频选项:-aframes number 设置要输出的音频帧数 -aq quality 设置音频质量(特定于编解码器) -ar rate 设置音频采样率(以Hz为单位) -ac channel 设置音频通道数 -an 禁用音频 -acodec codec 强制音频编解码器复制到流 -vol volume 更改音频音量(256=正常) -af filter_graph 设置音频过滤器 fswebcamfswebcam -d /dev/video0 -S 10 --no-banner -r 1920x1080./test.jpg设定参数:-r 设定分辨率-S 有的时候用fswebcam拍照的时候会出现黑屏,-S 10 可以改善这种现象(默认为0)--no-banner 不显示其他无用信息
2023年02月12日
88 阅读
0 评论
0 点赞
2021-06-17
Windows11pro 下载体验
目前网络上已经流出Windows 11的系统界面截图及视频,这些信息都来自一个泄露的Windows 11 Build 21996.1 Dev版ISO镜像,也就是预载版,下面来看看Win11系统界面有哪些变动吧。 任务栏位置变动 首先是桌面,变化最大的是任务栏,不知什么原因,微软将默认的“开始菜单”按钮以及任务栏上的软件快捷方式移到了任务单栏中间,导致无法快速地将鼠标移动到左下角来开启开始菜单。不过不用过于担心,微软“非常贴心”地让你可以通过鼠标点击“开始”按钮并将其自由拖放,或者通过右键点击任务栏并选择“任务栏设置”,它将带您到“设置”>“个性化”>“任务栏”窗口,您可以更改“任务栏对齐”设置来固定任务栏的位置。 简单的窗口管理 也许是受到Win10X的启发,Win11的窗口智能调整有了很大的改进。你可以将鼠标移到窗口的最大化图标处,会出现一个窗口菜单选项,选择其中一种灰色方块布局,即可为窗口选择屏幕布局和位置。对于具体体验如何大家自行体验吧!!!镜像系统下载链接:https://pan.baidu.com/s/1f0UBkEBe0L-DA1RuT3sCPQ 提取码:ToanWindows11壁纸下载链接链接: https://pan.baidu.com/s/1-Ne5W3Id-iCJkyBFLkM4VQ 密码: tuu4另外我还提供了一个windows激活工具: HEU_KMS 具体激活原理自行百度吧。链接: https://pan.baidu.com/s/1eQCZ0QdyQhATfr0V164M0w 密码: ns62大家请勿用于商业用途。。。
2021年06月17日
451 阅读
0 评论
0 点赞
2021-05-24
关于 gcc makefile 使用说明
make工作过程: 0*001 当然使用前你得确保你已经安装了make插件这里我以debian系统为例:sudo apt install makemake 在当前目录寻找“Makefile”或“makefile”文件。如果找到,它会找文件中的第一个目标文件(target),如上例它找到“app”这个目标文件,把这个文件作为最终的目标文件。 如果 app 文件不存在,或是 app 所依赖的后面的 .o 文件的文件修改时间要比 app 这个文件新,那么make命令就会执行后面所定义的命令来生成 app 这个文件。如果app所依赖的.o文件也不存在,那么make命令会在当前文件中寻找目标为.o文件的依赖关系。如果找到,则再根据那一个规则生成 .o 文件,根据.o文件依赖的.c文件和.h文件,执行规则生成.o文件。然后make再用 .o 文件生成执行文件 app。make 会一层一层地去找文件的依赖关系,直到最终编译出第一个目标文件。在找寻的过程中,如果出现错误,如最后被依赖的文件找不到,那么 make 就会直接退出并报错。make 只关注文件的依赖性,例如在找到了依赖关系之后,冒号后面的文件如果不存在就停止工作。所以通过上述分析,像clean 这种没有被第一个目标文件直接或间接关联,那么它后面所定义的命令将不会被自动执行。不过,可以显式指定make执行clean,即make clean,在上面的例子中是用来清除所有的目标文件和可执行文件app,以便重新编译。如果这个工程已被编译过,那么当修改了其中一个源文件,如hello.c,根据我们的依赖性,目标文件 hello.o 会被重新编译,即依赖关系后面的命令,即命令gcc -c hello.c会被执行。此时hello.o文件就是最新的了。hello.o的文件修改时间比 app文件新,所以app会被重新连接。只要修改了与第一个目标文件存在直接或间接依赖关系的文件,都会发生重新编译和重新链接(链接目标文件生成可执行文件)。CC=gcc all: mail.c $(CC) -o mail mail.c .PHONY:clean clean: rm -rf *.o 这里的CC=gcc表示定义编译器使用gcc编译器函数all 便是执行make时运行的命令一般把它放在第一位clean 便是清理编译产生的可执行文件当然你还可以添加自己元素例如:make install
2021年05月24日
106 阅读
0 评论
0 点赞
2021-03-24
Linux系统管理员应该知道的journalctl知识
在Systemd出现之前,Linux系统及各应用的日志都是分别管理的,Systemd开始统一管理了所有Unit的启动日志,这样带来的好处就是可以只用一个 journalctl命令,查看所有内核和应用的日志。基础用法1.1 查看所有日志(默认显示本次启动的所有日志)[root@devops-101 ~]# journalctl查看本次启动的所有日志也可以使用[root@devops-101 ~]# journalctl -b1.2 查看内核日志[root@devops-101 ~]# journalctl -k1.3 查看指定时间的日志通过--since和--until选项,可以过滤任意时间限制,显示指定条件之前、之后或之间的日志。[root@devops-101 ~]# journalctl --since="2018-09-21 10:21:00"查询一个时间段范围内的日志。[root@devops-101 ~]# journalctl --since="2018-09-21 10:21:00" --until="2018-09-21 10:22:00"1.4 根据不同的主题进行过滤筛选根据服务筛选[root@devops-101 ~]# journalctl -u kubelet.service[root@devops-101 ~]# journalctl -u kubelet根据进程ID查询如果进程使用了systemd托管日志,则可以通过以下命令查找进程对应的日志。[root@devops-101 ~]# journalctl _PID=1Systemd journal 有很多可以用来过滤的字段,可以通过 man systemd.journal-fields 查看所有可以用来过滤的字段。对于用来筛选的字段,可以使用-F参数来查看所有可以用来过滤的值,例如journalctl -F _PID。按优先级操作系统提供了从0 (emerg) 到 7 (debug) 一共7个级别的日志,可以配合-p参数分别查看对应级别的日志。[root@devops-101 ~]# journalctl -p 5 -u kubelet7个级别的含义为0: emerg1: alert2: crit3: err4: warning5: notice6: info7: debug1.5 调整显示输出默认情况,journal输出进入分页模式,用户可以在终端上调整显示的内容,如果要不需要分页,需要加上--no-pager参数。以Json格式输出[root@devops-101 ~]# journalctl -p 5 --no-pager -o json通过-o参数,可以设置为json格式输出,这对于其他接收json格式的日志分析工具非常友好。[root@devops-101 ~]# journalctl -p 5 --no-pager -o json-pretty使用json-pretty则对于管理员查看日志非常易读。支持的各种格式如下:cat: 只显示信息字段本身。export: 适合传输或备份的二进制格式。json: 标准JSON,每行一个条目。json-pretty: JSON格式,适合人类阅读习惯。json-sse: JSON格式,经过打包以兼容server-sent事件。short: 默认syslog类输出格式。short-iso: 默认格式,强调显示ISO 8601挂钟时间戳。short-monotonic: 默认格式,提供普通时间戳。short-precise: 默认格式,提供微秒级精度。verbose: 显示该条目的全部可用journal字段,包括通常被内部隐藏的字段。1.6 活动日志跟踪journalctl也支持类似tail的功能,如通过-n参数指定显示最近的多少行,默认为10行,通过-f参数持续监控日志。维护2.1 查看日志占用的磁盘空间[root@devops-101 ~]# journalctl --disk-usageArchived and active journals take up 8.0M on disk.2.2 设置日志占用的空间root@devops-101 ~]# journalctl --vacuum-size=500MVacuuming done, freed 0B of archived journals on disk.2.3 设置日志保存的时间[root@devops-101 ~]# journalctl --vacuum-time=1monthVacuuming done, freed 0B of archived journals on disk.配置上面的一些维护动作,也可以通过配置参数设置,配置文件位于/etc/systemd/journald.conf。Storage=persistentCompress=yesSeal=yesSplitMode=uidSyncIntervalSec=5mRateLimitInterval=30sRateLimitBurst=1000SystemMaxUse=SystemKeepFree=SystemMaxFileSize=RuntimeMaxUse=RuntimeKeepFree=RuntimeMaxFileSize=MaxRetentionSec=MaxFileSec=1monthForwardToSyslog=yesForwardToKMsg=noForwardToConsole=noForwardToWall=yesTTYPath=/dev/consoleMaxLevelStore=debugMaxLevelSyslog=debugMaxLevelKMsg=noticeMaxLevelConsole=infoMaxLevelWall=emerg
2021年03月24日
92 阅读
2 评论
0 点赞
1
2