- 博客(34)
- 收藏
- 关注
原创 【LINUX】“dmesg: read kernel buffer failed: Operation not permitted“ 错误
出现 "dmesg: read kernel buffer failed: Operation not permitted" 错误通常是因为当前用户没有权限读取内核日志缓冲区
2024-09-04 17:15:46
2080
2
原创 Anaconda安装、opencv环境配置、jupyter notebook使用虚拟环境
如果你的电脑上只有建了一个用户,all users和just me 的作用是一样的。然后点击next,当让你选择安装安装路径的时候,一定不要选择默认安装位置,因为默认位置是C盘,以后要在anaconda里面创建环境的时候会很占内存,最好在其他盘中创建一个文件夹来放anaconda。安装完成以后,按下开始键(win键)在左边就会出现anaconda3这个文件夹,可以发现anaconda已经安装好了。和图中一样将图中的√勾上,虽然出现红色的警告,但是要勾上,将anaconda添加到环境变量中去。
2023-01-16 19:54:35
1880
原创 【树莓派】raspberry pi控制超声波测距
简介: 超声波传感器模块上面通常有两个超声波元器件,一个用于发射,一个用于接收。硬件:电路板上有4个引脚:VCC(正级)Trig(触发)Echo(回应)GND(接地-负极)主要参数: 在超声波模块的触发脚位输入10微秒以上的高电位,即可发射超声波,发射超声波之后,与接收到传回的超声波之前,“响应”脚位呈现高电位。因此,程序可以从“响应”脚位的高位脉冲持续时间,换算出被测物的距离。触发信号(Trig):我们从图中可以看出这个引脚有一个持续10微秒的高电平,从而激发T发波模块内部发出的信
2022-12-06 20:38:18
3910
原创 【树莓派】了解wiringPi库、控制继电器
wiringPi是一个很棒的树莓派IO控制库,使用C语言开发,提供了丰富的接口:GPIO控制,中断,多线程等。在树莓派命令行输入 可以查看是否安装wiringPi 库,会显示库的相关信息,有版本号就是安装好了。在编译时需要链接上wiringPi库:查看树莓派的引脚标号,输入命令即可查看:树莓派3b的引脚图: 继电器主要用于控制电路。 继电器是一种电控制器件,是当输入量的变化达到规定要求时,在电气输出电路中使被控量发生预定的阶跃变化的一种电器。继电器具有控制系统和被控制系统,通常应用于自动化
2022-12-06 18:54:27
1810
原创 【Linux|树莓派】分文件编程以及静态库动态库
简单来说树莓派的分文件编程就是将一个项目的代码放在不同的文件里面,然后在主函数添加一个头文件,这样会使#控制字体颜色主程序变得简单。在编译的时候要将主函数和功能函数一起编译:注意: 和 的区别: 前者表示引用标准库的头文件,编译时会从系统配置的库环境中去寻找,后者一般为用户自定义的头文件,比如分文件编程中自己定义的头文件,编译系统会从当前文件夹去寻找,如果找不到,则到系统的库文件中去寻找。Linux中C/C++默认库环境:,可使用 查看。使用GNU的工具我们如何在Linux下创建自己的程序
2022-12-06 16:34:43
464
原创 【树莓派】刷机、基础配置及多种方式登录
(1)将SD卡插入读卡器,然后插入笔记本电脑(2)格式化SD卡(注意不要格式化错)(3)将下载好的系统镜像烧录进TF卡中在映像文件中选中下载好的文件,在设备中选中TF卡对应的盘符(注意不要选错),点击写入按钮,等待写入完成将对应针脚连接到树莓的TXD和RXD上(GPIO14和15),参考:Raspberry Pi Pinout默认情况,树莓派的串口和蓝牙连接。想办法断开蓝牙连接,把串口用来数据通信。1、打开SD卡根目录的"config.txt"文件,将以下内容添加在最后并且保存。这样就停止了蓝
2022-11-30 22:48:47
1850
原创 【Linux】简易ftp文件传输项目(云盘)
前言:这是对linux系统编程学习的总结,具体操作过程在代码里有注释。二、Server三、Client四、项目结果服务器运行,可以有多个客户端接入,如下:Server:Client:最后谢谢阅读,笔者乃小白,如有错误之处还请指正。
2022-11-30 19:04:50
489
原创 【Linux】系统编程之网络编程(socket)
设置能处理的最大连接数,listen并未开始接受连线,只是设置了socket的listen模式,listen函数只用于服务器端,服务器进程不知道要与谁进行连接,因此,它不会主动的要求与某个进程连接,只是一直监听是否有其他客户进程与之连接,然后响应该连接请求,并对它做出处理,一个服务进程可以同时处理多个客户进程的连接,主要就连个功能:将一个未连接的套接字转换为一个被动套接字(监听),规定内核为相应套接字排队的最大连接数。这些服务完全是可以由一个IP地址来实现的,那么,主机是怎么样区分不同的网络服务的呢?
2022-11-24 17:02:10
661
原创 【Linux】系统编程之线程(多线程初探)
典型的UNIX/Linux进程可以看成只有一个控制线程:一个进程在同一时刻只做一件事情。有了多个控制线程后,在程序设计时可以把进程设计成在同一时刻做不止一件事,每个线程各自处理独立的任务。进程是程序执行时的一个实例,是担当分配系统资源(CPU时间、内存等)的基本单位。在面向线程设计的系统中,进程本身不是基本运行单位,而是线程的容器。程序本身只是指令、数据及其组织形式的描述,进程才是程序(那些指令和数据)的真正运行实例。线程是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。
2022-11-20 17:38:23
633
原创 【Linux】系统编程之进程间通信IPC(管道、FIFO、消息队列、共享存储、信号、信号量)
管道,通常指无名管道 ,是 UNIX 系统IPC最古老的形式。 1、它是(即数据只能在一个方向上流动),具有固定的读端和写端。 2、它只能用于具有亲缘关系的进程之间的通信(也是父子进程或者兄弟进程之间)。 3、它可以看成是一种特殊的文件,对于它的读写也可以使用普通的read、write 等函数。但是它不是普通的文件,并不属于其他任何文件系统,并且只存在于内存中。函数原型:参数介绍:返回值:当一个管道被创建时,它会伴随着创建两个文件描述符,fd[0]为读而打开,fd[1]为写而打开;如图:想关闭管道只要
2022-11-14 23:07:18
2012
原创 【Linux】系统编程之进程
程序是静态的概念,;磁盘中生成pro文件,叫做程序。进程是程序的一次运行活动,通俗点意思是程序跑起来了,系统中就多了一个进程。每个进程都有一个非负整数表示的唯一ID,叫做pid,类似身份证pid=0:称为交换进程(swapper)作用—进程调度pid=1:init进程作用—系统初始化编程调用getpid();函数获取自身的进程标识符;getppid();获取父进程的进程标识符介绍两个字母符号:僵尸进程:Z+正常进程:即有父进程等待的进程,S+返回值:若成功,返回进程ID。
2022-11-08 23:05:28
1292
原创 【Linux】系统编程之文件(标准I/O库)
由此可以看出,内存“缓冲区”的大小,影响着实际操作外存的次数,内存“缓冲区”越大,则操作外存的次数就少,执行速度就快、效率高。缓冲文件系统是借助文件结构体指针来对文件进行管理,通过文件指针来对文件进行访问,既可以读写字符、字符串、格式化数据,也可以读写二进制数据。非缓冲文件系统依赖于操作系统,通过操作系统的功能对文件进行读写,是系统级的输入输出,它不设文件结构体指针,只能读写二进制文件,但效率高、速度快,由于ANSI标准不再包括非缓冲文件系统,因此建议大家最好不要选择它。表现为,如果顺序访问文件,
2022-10-28 22:35:09
543
原创 【Linux】系统编程之文件(小应用--实现cp复制命令等)
. . }参数介绍:(1)argcargc为整型,用来统计程序运行时发送给main函数的命令行参数的个数,也是数组中字符串的数量。(2)argv1、char **argv 分析:首先argv是一个指针变量,argv的指向(*argv)是char *,也就是argv指向的也是一个指针;*argv的指向(**argv)是char[类比char *p,p的指向(*p)是char]。
2022-10-27 22:16:24
2200
2
原创 【Linux】系统编程之文件(常用API)
(3)O_APPEND:每次写入文件时都加到文件的尾端,即写入文件时,如果加上O_APPEND的话,write会根据文件里的原有内容将新内容接到旧内容尾巴去,如果没加O_APPEND,则会根据新内容的长度覆盖旧内容的对应的长度,覆盖不是删除,如果内容短,则会保留上一次的未被覆盖的内容。1、对于内核而言,所有打开文件都由文件描述符引用。(4)O_TRUNC:以这个属性去打开文件时,如果这个文件本来是有内容的,而且只为只读或只写成功打开后,则将其长度截断为0,也就是将原文件的旧内容全部删掉,写入新的内容。
2022-10-27 18:34:47
2201
原创 【Linux】基于Ncurse图形库的贪吃蛇(C语言)
ncurses(new curses)是一个程序库,它提供了API,可以允许程序员编写独立于终端的基于文本的用户界面。在ubuntu低版本中运行不容易乱码,在高版本中gcc时,删去原先a.out多编译几次,并等待一段时间,也不会出现乱码。//判断地图上的点是否是蛇身节点。vi /usr/include/curses.h 可查看ncurse的宏定义。运行效果链接:https://v.douyin.com/6ooTQgt/如果传过来的i和j与行和列相等,则通过gamePic()打印输出。如何使用ncurse?
2022-10-05 19:53:17
3919
6
原创 输入两个正整数m和n,求其最大公约数和最小公倍数。
分析:最大公因数,也称最大公约数、最大公因子,指两个或多个整数共有约数中最大的一个。1、穷举法(使用 for 和 if)运行结果:2、相减法(使用 while 和 if)设有两整数a和b:① 若a>b,则a=a-b② 若a...
2022-08-28 21:33:06
22002
1
原创 请编程序将“China“译成密码,密码规律是:用原来的字母后面第4个字母代替原来的字母
密码转换的关键在于相应字符的ascii加4进行赋值修改原来的字符即可,修改完成后即为相应的密码,在使用putchar和printf进行相应输出即可。
2022-08-28 10:52:14
14278
原创 斐波那契数列
斐波那契数列斐波那契数列指的是这样一个数列0,1, 1, 2, 3, 5, 8, 13, 21, 34,…这个数列从第3项开始,每一项都等于前两项之和。输出指定数量的斐波那契数列:#include "stdio.h"int main(){ int i,n,x1=0,x2=1,next; printf("输入打印项数:"); scanf("%d",&n); puts("斐波那契数列:"); for(i=1;i<=n;i++){ printf("%d, ",x1
2021-01-22 17:22:49
494
原创 输出九九乘法口诀表
输出九九乘法口诀表分析:嵌套 for 循环#include "stdio.h"int main(){ int i,j; for(i=1;i<=9;i++){ for(j=1;j<=i;j++){ printf("%dX%d=%d\t",j,i,i*j); } putchar('\n'); } return 0; }运行结果如下:
2021-01-22 16:29:53
1258
原创 计算自然数的和
计算自然数的和要求:输入一个自然数,计算0到此自然数的和自然数是指表示物体个数的数,即由0开始,0,1,2,3,4,……一个接一个,组成一个无穷的集体,即指非负整数。for循环:#include "stdio.h"int main(){ int n,i,sum=0; printf("输入加到自然数数值:"); scanf("%d",&n); for(i=0;i<=n;i++){ sum=sum+i; } printf("sum=%d\n",sum);
2021-01-22 16:19:29
865
原创 判断字母
判断字母#include <stdio.h>int main(){ char c; printf("输入一个字符: "); scanf("%c",&c); if( (c>='a' && c<='z') || (c>='A' && c<='Z')){ printf("%c是字母",c); }else{ printf("%c不是字母",c);
2021-01-22 15:59:49
391
原创 判断正数、负数、零
判断正数、负数、零要求:输入一个数字,判断该数字是正数还是负数或是零#include "stdio.h"int main(){ double num; printf("输入一个数:"); scanf("%lf",&num); if(num>=0.0){ if(num==0.0){ printf("%lf是0\n",num); }else{ printf("%lf是正数\n",num); } }else{ printf("%lf是负数\n",n
2021-01-22 15:56:10
1974
原创 判断闰年
判断闰年要求:输入年份,判断该年份是否为闰年。分析:四年一闰,百年不闰,四百年再闰。#include "stdio.h"int main(){ int year; printf("输入年份:"); scanf("%d",&year); if((year%4==0&&year%100!=0)||year%400==0){ printf("%d是闰年\n",year); }else{ printf("%d不是闰年\n",year); } retu
2021-01-22 15:16:41
302
原创 求一元二次方程
标题求一元二次方程:ax^2+bx+c=0 的根。输入三个实数a,b,c的值,且a不等于0。知识点:根号函数sqrt()要加上头文件#include <math.h>#include <stdio.h>#include <math.h> int main(){ float a,b,c,x1,x2,d; printf("输入方程的三个系数:"); scanf("%f %f %f",&a,&b,
2021-01-22 14:59:12
370
原创 判断元音、辅音
判断元音、辅音要求:判断输入的字母是元音,还是辅音。分析:英语有26个字母,元音只包括 a、e、i、o、u 这五个字母,其余的都为辅音。y是半元音、半辅音字母,但在英语中都把他当作辅音。#include "stdio.h"int main(){ char c; int daxieyuanyin,xiaoxieyuanyin;//大写元音,小写元音 printf("输入一个字母:"); scanf("%c",&c); daxieyuanyin=(c=='A'||c=='
2021-01-22 12:49:07
1533
原创 循环区间范围内的奇偶数
循环区间范围内的奇偶数putchar(’\n’);//换行%2d 是C语言中printf()函数的输出格式说明符这里具体解释指:使输出的int型的数值以2位的固定位宽输出,如果不足2位,则在前面补空格#include <stdio.h>int main(){ int i; printf("1-10的偶数为:\n"); for(i=1;i<=10;i++){ if(i%2==0) printf("%2d\n",i); }
2021-01-21 17:02:40
316
原创 判断奇偶数
判断奇偶数// 判断这个数除以 2 的余数为0,就是偶数;否则奇数#include "stdio.h"int main(){ int num; printf("请输入一位整数:"); scanf("%d",&num); if(num%2==0){ printf("%d是偶数",num); } else{ printf("%d是奇数",num); } return 0;}运算结果如下:...
2021-01-21 16:36:52
4604
2
原创 交换两个数的值
交换两个数的值用temp作为中间交换量#include "stdio.h"int main(){ double a,b,temp; printf("请输入两个数a b:"); scanf("%ld %ld",&a,&b); temp=a; a=b; b=temp; printf("a=%d\n",a); printf("b=%d\n",b); return 0; }运算结果如下:...
2021-01-21 16:15:55
154
原创 计算字节大小
计算字节大小sizeof()计算字节大小%ld 长整型的占位符#include "stdio.h"int main(){ int a; float b; double c; char d; long e; printf("size of int: %ld\n",sizeof(a)); printf("size of float: %ld\n",sizeof(b)); printf("size of double: %ld\n",sizeof(c)); printf("siz
2021-01-21 15:43:57
1627
原创 比较三个数中最大最小
数值比较要求:比较三个数中最大最小知识点:if-else程序仅提供最大数(最小数同理)#include "stdio.h"int main(){ int a,b,c; int max,min; printf("输入a b c:"); scanf("%d %d %d",&a,&b,&c); if(a>b&&a>c){ max=a; }else if(b>c&&b>a){ max=b; }
2021-01-21 15:21:12
686
1
原创 两数相除
两数相除要求:两数相除,如果有余数,输出余数。//知识点: /取整 %取余#include "stdio.h"int main(){ int a;//被除数 int b;//除数 int c;//商 int d;//余数 printf("输入被除数:"); scanf("%d",&a); printf("输入除数:"); scanf("%d",&b); //b不能为0 c=a/b;// / 取整 d=a%b;// % 取余 p
2021-01-21 15:01:13
765
原创 字符转 ASCII 码
字符转 ASCII 码字符的占位符%c#include "stdio.h"int main(){ char c; printf("输入一个字符:"); scanf("%c",&c);//字符的占位符%c printf("%c的ASCII为:%d\n",c,c); return 0; } 运行结果如下:
2021-01-21 14:40:46
609
原创 两个浮点数相乘
两个浮点数相乘双精度浮点数占位符:%lf//.2就代表保留两位小数#include "stdio.h"int main(){ double x,y,z; printf("请输入两位浮点数:"); scanf("%lf %lf",&x,&y); //双精度浮点数占位符%lf z=x*y; printf("z=%.2lf",z);//.2就是保留两位小数 return 0; } ...
2021-01-21 14:25:47
2481
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人