自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(32)
  • 收藏
  • 关注

原创 短信猫客户端

文章目录前言一、基础页面二、实现效果前言项目介绍:树莓派上连接移远 EC20F 4G 模块,采用 C/S 架构编写程序实现网络短信猫功能。该项目主要包括 PC 上位机的 QT 界面开发及树莓派上的短信收发两个部分,其具体工作流程为:树莓派上编写网络 socket 服务器程序监听 PC 上客户端的连接请求,采用 epoll 技术解决多客户端访问,同时支持 SQLite 数据库预设账号验证客户端的网络登录请求;PC 上客户端采用 QT 库开发 UI 界面,使用网络 socket 连接树莓派服务.

2021-09-05 23:20:09 336

原创 QT事件循环

文章目录一、QT消息/事件循环机制二、两个问题1.Qt是事件驱动的,怎么理解这句话2.Qt事件由谁产生的?Qt是如何将信号转换成事件的一、QT消息/事件循环机制Qt作为一个可视化GUI界面操作系统,是基于事件驱动的,我们程序执行的顺序不再是线性的,而是由一个个应用程序内部或外部的事件进行驱动的,无事件时便阻塞。这个有点类似于while循环,函数体内不断处理用户的输入,类比到事件循环中,用户点击了鼠标,按下了键盘,便称为事件。一般对于带UI窗口的程序来说,“事件”是由操作系统或程序框架在不同的时刻发出的

2021-07-23 09:23:26 3994

原创 QT文件操作

文章目录一、QT文件操作二、文本文件的读写三、二进制文件的读写四、文件目录的操作一、QT文件操作QIODevice:所有I/o设备类的父类,提供了字节块读写的通用操作以及基本接口QFileDevice:Qt5新增的类,提供了有关文件操作的通用实现QFile:访问本地文件或嵌入资源QTemporaryFile:创建和访问本地文件系统的临时文件QBuffer:读写QbyteArray,内存文件QProcess:运行外部程序,处理进程间通信QAbstractSocket:所有套接字类的父类QTc

2021-07-22 16:30:21 802

原创 C++ 文件操作

文章目录一、写文件二、读文件1.读文件步骤2.读入数据总结提示:以下是本篇文章正文内容,下面案例可供参考一、写文件写文件的步骤:1.包含头文件 #include <fstream>2.创建流对象 ofstream ofs;3.打开文件 ofs.open("文件绝对路径/文件相对路径/文件名", 打开方式);4.写数据 ofs << "要写入的数据";5.关闭文件 ofs.close();二、读文件1.读文件步骤1.包含头文件 #include .

2021-07-07 20:22:23 129

原创 .off格式文件

文章目录前言.off格式文件前言了解off格式文件.off格式文件物体文件格式(.off)文件通过描述物体表面的多边形来表示一个模型的几何结构,这里的多边形可以有任意数量的顶点。.off格式文件遵循一下标准:OFF文件全是以OFF关键字开头的ASCII文件下一行说明顶点的数量、面片的数量、边的数量。边的数量可以省略顶点按每一行一个列出x,y,z坐标在顶点列表后,面片按照每行一个列表,对于每个面片,顶点的数量是指定的,接下来的是顶点索引列表例如:OFF8 6 0 顶点的数量.

2021-07-07 17:42:19 1191 1

原创 C++学习第二天

文章目录前言一、面向对象编程二、const1.const2.const的使用2.const与#define的区别三、引用1.const总结前言学习知识点记录一、面向对象编程面向对象编程:对象 = 数据结构 + 算法程序 = 对象们 + 对象间的通信面向对象三要素:封装:将数据和方法(对数据的操作)捆绑,定义新的类型。接口与实现分离,隐藏实现的细节。继承:子类对基类进行特化(扩展、覆盖、重定义),达到代码复用的目的多态:允许不同类的对象对同一消息做出响应,即同一消息可以根据发送.

2021-07-06 21:17:06 114

原创 C++学习第一天

文章目录前言一、单步调试二、设置断点1.条件断点2.数据断点(1).根据内存地址设置数据断点(2).根据变量名设置数据断点三、附加到进程前言学习VS编译与调试的笔记一、单步调试按F10进行单步调试:然后继续往下执行,在满足for循环的条件下,会一直循环执行for循环,直到for循环条件不成立。for循环条件不成立,执行下一条语句继续执行下一条此时,输出结果:继续执行下一条语句二、设置断点1.条件断点条件断点的关键是设置一个表达式,当表达式条件为真时,中断执行。按F9设

2021-07-06 11:14:25 88

原创 智能指针学习笔记

智能指针就是一个类,对普通指针进行封装,使智能指针对象具有普通指针类型一样的操作。(智能指针是封装普通指针的一个类,声明的对象和指针有一样的操作) 复制对象时,副本和原对象都指向同一存储区域,如果通过一个副本改变其所指的值,则通过另一对象访问的值也会改变。所不同的是,智能指针能够对内存进行自动管理,避免出现悬垂指针等情况。普通指针的悬垂问题:当有多个指针指向同一个基础对象时,如果某个指针delete了该基础对象,对这个指针来说他已经明确他所指的对象被释放了,所以不会再对所指的对象进行操作,但是对于其他的

2021-07-02 15:07:13 131

原创 了解Qt项目

文章目录前言一、Qt二、项目一、".pro"二、"main.cpp"三、".ui"四、".h"五、".cpp"前言Qt是一个跨平台的 C++ 开发库,主要用来开发图形用户界面(Graphical User Interface,GUI)程序,当然也可以开发不带界面的命令行(Command User Interface,CUI)程序。一、QtQt是一个跨平台的 C++ 开发库,主要用来开发图形用户界面(Graphical User Interface,GUI)程序,当然也可以开发不带界面的命令行(C

2021-06-03 16:22:03 3314 2

原创 Linux下安装sqlite3

文章目录前言安装步骤测试安装成功前言sqlite3的安装安装步骤依次执行以下命令:1)wget http://www.sqlite.org/sqlite-3.5.6.tar.gz2)tar -xzvf sqlite-3.5.6.tar.gz3)cd sqlite-3.5.64)./configure5)make 6)make install测试安装成功出现红色方框信息,即安装成功!...

2021-06-01 14:00:10 206

原创 Qt(一)用QLabel显示图片

文章目录前言一、题目二、代码1.widget.h2.main.cpp3.widget.cpp三、结果前言刚开始学习Qt,这是Qt的第一个小作业,不足之处,请指出!一、题目创建一个基于QWidget的工程给默认的widget创建一个QPushButton的子控件接收这个子控件的点击事件,弹出文件选择对话框,选择一个图片文件将选择的图片使用QLabel进行展示二、代码1.widget.h#ifndef WIDGET_H#define WIDGET_H#include <Q

2021-06-01 10:19:52 1254

原创 Linux下iniparser的安装

文章目录一、步骤一、步骤下载网址:https://github.com/ndevilla/iniparser下载iot11@raspberrypi:~/rpiMonitor/kongsiyu/iniparser $ wget https://codeload.github.com/ndevilla/iniparser/tar.gz/refs/tags/v4.1 -O iniparserv4.1.tar.gz解压iot11@raspberrypi:~/rpiMonitor/kongs.

2021-05-23 12:55:37 409

原创 Linux之zlog的学习

文章目录前言一、 分类(Category)、规则(Rule)和格式(Format)二、配置文件1.全局参数2.日志等级自定义3.格式(Formats)4.规则(Rules)三、zlog接口(API)1.初始化和清理2.分类(Category)操作2.写日志函数及宏前言本篇仅仅是zlog的学习笔记,有错误请指正!一、 分类(Category)、规则(Rule)和格式(Format)分类(Category)用于区分不同的输入。代码中的分类变量的名字是一个字符串,在一个程序里面可以通过获取不同的分.

2021-05-18 20:05:12 1638

原创 Linux下zlog的下载与安装

文章目录前言一、下载、安装zlog二、测试前言Linux系统下有大量的日志,用于记录系统、程序运行中发生的各种事件,通过阅读日志,有助于诊断和解决系统故障。在开发项目时加入日志系统也会方便调试分析。zlog是一个轻量级、高可靠性、高性能、线程安全、灵活、概念清晰的纯C日志函数库。一、下载、安装zlogkongsiyu@ubuntu18:~/rpimonitor/zlog$ wget https://codeload.github.com/HardySimpson/zlog/tar.gz/ref.

2021-05-18 16:31:30 770

原创 引用与指针的比较

文章目录前言一、引用二、引用与指针的区别三、三种传递方式1.值传递2.指针传递3.引用传递总结前言“引用传递”的性质像“指针传递”,而书写方式像“值传递”。而引用与指针是有区别的。一、引用int m; int &n = m; n 相当于 m 的别名(绰号),对 n 的任何操作就是对 m 的操作。n 既不是 m 的拷贝,也不是指向 m 的指针,其实 n 就是 m 自己。引用的主要功能是传递函数的参数和返回值。二、引用与指针的区别引用被创建的同时必须被初始化(指针则可以在任何时

2021-05-16 14:07:23 126

原创 循环语句的效率

文章目录前言一、内、外层循环的合理安排二、逻辑判断的合理安排前言我们在编程中,会经常使用循环语句,for 语句使用频率最高,while 语句其次,do 语句很少用。提高循环体效率的基本办法就是降低循环体的复杂性。一、内、外层循环的合理安排在多重循环中,如果有可能,应当将最长的循环放在最内层,最短的循环放在最外层,以减少 CPU 跨切循环层的次数。低效率:长循环在最外层for (row=0; row<100; row++) { for ( col=0; col<5; c.

2021-05-16 11:21:12 889

原创 不同类型变量与零值的比较

文章目录前言一、布尔变量与零值比较二、整型变量与零值比较三、 浮点变量与零值比较四、指针变量与零值比较前言不同类型的变量与零值的比较方式是不同的,我们应该规范编程,防止歧义。一、布尔变量与零值比较不可将布尔变量直接与 TRUE、FALSE 或者 1、0 进行比较。根据布尔类型的语义,零值为“假”(记为 FALSE),任何非零值都是“真”(记为TRUE)。假设布尔变量名字为 flag,它与零值比较的标准 if 语句如下:if (flag) // 表示 flag 为真 if (!fla.

2021-05-16 10:45:00 284

原创 运算符的优先级和结合律

文章目录前言运算符的优先级与结合律前言如果代码行中的运算符比较多,用括号确定表达式的操作顺序,避免使用默认的优先级。因为熟记运算符的优先级和结合律是比较困难的,为了防止产生歧义并提高可读性,应当用括号确定表达式的操作顺序。运算符的优先级与结合律一元运算符 + - * 的优先级高于对应的二元运算符。...

2021-05-16 10:26:54 435 1

原创 C++实现一系列形状的操作

文章目录题目基本要求一、实现过程二、代码实现代码结果题目使用C++语言编写一系列的类来实现形状相关的操作。 形状有一个抽象基类(Shape)。这个抽象基类有周长、面积、形状类型等纯虚函数。 形状有三角形(triangle,用三条边长表示)、正方形(square)、长方形(rectangle)、梯形(trapezium,用上底、下底和左右边长表示)、圆形(round)、复合形状(compoundshape),这些形状都从Shape派生。 此外,复合形状是指由多个形状组成的形状,组成复合形状的形状可以是.

2021-05-13 10:38:36 1497 2

原创 git命令的简单使用

远程仓库已经配置好。git clone 一个projectgit clone http://[email protected]:8088/r/rpiMonitor.git git clone后面是版本库地址,即URL。git add添加要上传的文件添加全部文件:git add .添加一个或多个文件:git add a.c b.c提交 git commit -m “描述信息”git commit -m "update a.c b.c"git pus

2021-05-07 18:29:58 91

原创 共享库报错“error while loading shared libraries: lib**.so.**”

文章目录前言一、错误原因二、解决办法1.操作系统里没有包含共享库或者共享库版本不对2.共享库已安装,但是默认搜索路径找不到总结前言“error while loading shared libraries: libcjson.so.1: cannot open shared object file: No such file or directory”指找不到共享库,下面分析一下错误原因及其解决办法。一、错误原因错误原因一般有两种:操作系统里没有包含共享库或者共享库版本不对共享库已经安装.

2021-05-07 16:40:21 3545

原创 cjson的安装与使用

文章目录前言安装前言在Linux下cjson的安装安装网址:https://codeload.github.com/DaveGamble/cJSON/tar.gz/refs/tags/v1.7.14安装步骤kongsiyu@ubuntu18:~/rpimonitor/cjson$ wget https://codeload.github.com/DaveGamble/cJSON/tar.gz/refs/tags/v1.7.14 -O CJSONv1.7.14.tar.gzkongsi.

2021-05-05 18:51:19 437 2

原创 Linux之gcc编译过程及其常用命令选项

文章目录前言一、gcc编译过程二、gcc命令常用选项前言gcc可以支持多种语言的编译(C,C++…)如有错误,请指正,感谢!一、gcc编译过程预处理 :预处理器(cpp)将源代码中包含的头文件编译进来,进行简单替换,生成".i"文件编译 :编译器(cc)首先要检查代码的规范性、是否有语法错误等,以确定代码的实际要做的工作,在检查无误后,编译器(cc)把代码翻译成汇编语言(".s")文件。汇编 :汇编器(as)把编译生成的".s"文件转成二进制目标代码(“.o”文件)链接:连接器(ld

2021-04-15 18:27:36 252

原创 cjson的封装与解析

文章目录一、cJSON1.JSON格式的封装2.JSON格式的解析3.示例一、cJSONJSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。易于人阅读和编写,同时也易于机器解析和生成。它基于JavaScript(Standard ECMA-262 3rd Edition - December 1999)的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl

2021-04-15 18:21:37 903

原创 Linux下文件IO操作

文章目录一、文件和文件描述符1.文件2.文件描述符二、文件IO操作三、文件IO操作函数1.open()系统调用2.close()系统调用3. write()系统调用4.lseek()系统调用5.read()系统调用6.dup() 和 dup2()系统调用6.stat()和fstat()系统调用7.access()系统调用8.unlink()系统调用9.rename系统调用10.文件夹操作相关系统调用四、出错处理2.读入数据总结一、文件和文件描述符在Linux中,一切都可以看作文件,所以文件扩展名对Li

2021-04-04 10:09:47 370 2

原创 树莓派获取温度

树莓派获取温度前言一、树莓派是什么二、获取温度1.思路2.代码三、结果1.使用命令查看温度2.代码运行结果总结前言通过树莓派获取室内温度一、树莓派是什么树莓派(Raspberry Pi)是一款基于 Linux 的单片机电脑。树莓派虽小,但五脏俱全和普通电脑无异。普通电脑能做的大部分事情,在树莓派上都能做,而树莓派以其低能耗、移动便携性、GPIO 等特性,很多在普通电脑上难以做好的事情,用树莓派却是很适合的。二、获取温度1.思路先找到/sys/bus/w1/devices/文件夹,对其使用

2021-03-16 17:24:47 1231

原创 vim编译运行C,C++

vim编写运行C,C++vim stack.c/stack.cpp,进入vim界面,按i进行编辑按esc退出编辑,按shift和 : ,输入wq!进行强制保存编译C文件:gcc stack.c编译C++文件:g++ stack.cpp编译后,两者都可以生成a.out的可执行文件最后,"./a.out"运行...

2021-03-07 15:55:12 348

原创 const char *p;char * const p;const char * const p;

const char *p;char * const p;const char * const p;前言const 限定符,它把一个对象转换成一个常量,而常量不能修改。一、 const char *p;const修饰*p,所以 *p在等号左边的操作都是不合法的,因为 *p不可变,此时不能用 *p来修改(eg: *p = 10; 不合法),但是p可变,p可以转向。二、 char * const p;const修饰p,所以 p在等号左边的操作都是不合法的,因为 p不可变,此时不能用 p来修

2021-03-04 19:40:24 1259 2

原创 Permission denied gcc: fatal error: no input files

gcc: error: strcmp.c: Permission denied gcc: fatal error: no input filesgcc编译时出现上面提示,这个问题我解决的其实和百度不太一样,解决的方法也很简单。permission denied 就是没有权限,在gcc前sudo就可以解决了。...

2021-03-01 11:25:29 1306 1

原创 secure CRT 信号灯超时时间已到

secure CRT 信号灯超时时间已到编辑一段时间后,secure CRT会出现卡死,过后会有 “信号灯超时时间已到” 的提示,以前遇到的时候也没管它,直接重搞,今天学习了一下,发现是可以解决的,其实也挺简单的。具体解决办法:Options —> Session Options —> Terminal —>勾选Send protocol NO-OP亲测有效哟...

2021-02-27 15:30:15 2012 1

原创 ### is not in the sudoers file.

### is not in the sudoers file.前言1.切换到root用户2.修改配置文件前言当在终端执行sudo命令时,系统提示“siyu is not in the sudoers file”,其实就是没有权限进行sudo,解决方法如下(这里用户名是siyu):1.切换到root用户切换到root用户,运行visudo命令2.修改配置文件在打开的配置文件中,找到root ALL=(ALL) ALL,在下面添加一行### ALL=(ALL) ALL 其中###是你要加入的

2021-02-27 14:52:47 50

原创 虚拟机上安装web服务器

ubuntu 18.04 安装web服务器前言一、lnmp简介二、安装步骤1.在/usr/local/src路径下从源码编译、安装软件:2.下载并解压缩lnmp一键安装包:3.以root权限执行 install.sh Shell脚本开始安装:三、运行测试1.使用 lnmp restart命令重启服务:2.使用ifconfig 命令查看虚拟机Ubuntu系统的IP地址:3.在Windows下,先使用ping命令测试本机与虚拟机Linux服务器之间是否连通,如果不通的话先解决网络问题4.浏览器访问:四、配置测试

2021-01-19 01:53:33 2470

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除