- 博客(19)
- 资源 (6)
- 收藏
- 关注
原创 ZigBee 学习(一)基础概念
1 RFD 节点与 FFD 节点RFD:可提供全部的IEEE 802.15.4MAC 服务,可充当任何 ZigBee 设备。FFD:可提供部分的IEEE 802.15.4MAC 服务,只能充当终端节点。2 ZigBee网络中分三种设备:Coordinator、Router、EnddeviceCoordinator(协调器):它是一个 FFD 节点,负责整个网络的管理工作。...
2018-08-18 21:39:10
2535
原创 C语言调用SQLITE3数据库
1 先包含头文件#include <sqlite3.h>2 打开一个数据库int sqlite3_open( const char *filename, /* Database filename (UTF-8) */ sqlite3 **ppDb /* OUT: SQLite db handle */);举例:if(sqlite3...
2018-08-14 22:41:15
1630
原创 QT调用SQLITE数据库
1 在.pro文件中添加 sql 2 在头文件中添加 #include <QSqlQuery> 3 在需要调用数据库的窗口的构造函数中打开数据库注意:数据库要在你的项目创建文件夹中,或者在函数中添加绝对路径QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE"); db.setDatabase...
2018-08-10 16:45:24
2469
原创 QT杂记(三)员工管理系统
这两天在用QT做一个员工管理系统,里面牵涉到不少之前没细想过的问题,记录下来以便以后查阅先把需要放出来:(一)两个没有关系的窗口间怎么传递信息一开始是做客户端的,遇到的第一个问题是,作为普通用户,登陆之后跳转到用户界面,这时候怎么发送信息给服务器端,让服务器端知道自己是谁?(即当前用户名)而管理员可以查看所有用户信息,因此不需考虑这一点。网上大多数的窗口间通信都是三种,父子窗口...
2018-08-10 16:25:01
3258
2
原创 QT中tcp登陆模块客户端代码框架及流程
首先要在.pro文件中添加 networkQT += core gui network在头文件中添加#include <QTcpSocket>#include <QtWidgets>#include <QMessageBox>#include <mainwindow.h>创建一个基础的图形界面既然是一个登...
2018-08-07 21:48:17
2252
1
原创 如何在Qt上做一个简单的tcp客户端
#include "dialog.h"#include "ui_dialog.h"Dialog::Dialog(QWidget *parent) : QDialog(parent), ui(new Ui::Dialog){ ui->setupUi(this); connect(&tcpSocket, SIGNAL(connected()), ...
2018-08-06 22:12:26
850
原创 QT杂记(二)
1 设置窗口标题在部件构造函数直接调用 setWindowTitle() 函数。2 设置窗口背景颜色QPalette pal(this->palette());palette.setColor(QPalette::Background, Qt::blue);this->setPalette(palette); ...
2018-08-05 22:13:37
173
原创 QT杂记(一)
Button类1 PushButton------------------------点击按键2 ToolButton--------------------------------和pushbutton类似,也是按键,但是比较适合用来做自定义外观的特色按键,常用于工具栏3 RadioButton ----------------------------------------...
2018-08-04 22:23:12
237
原创 字符设备驱动初始化和销毁部分
每个字符设备的驱动都要包含对这个字符设备的初始化,而这个初始化其实是一个非常固定的步骤,接着我们就来看看这个初始化怎么写。1 申请注册一个设备(char 字符设备)static inline int register_chrdev(unsigned int major, const char *name, const struct file_operations *fops)...
2018-08-03 22:03:47
467
原创 一步一步教你构建一个MPU6050(I2C类)驱动(三)
首先我们要控制MPU6050,实质上就是读写它里面寄存器的值。i2c的数据通信帧的组成在前面已经讲过了这里就不在展开,我们先来看看内核中已经帮我们封装好的,构建一个数据帧的API:/** * i2c_master_send - issue a single I2C message in master transmit mode * @client: Handle to slave dev...
2018-08-02 22:38:43
1491
原创 一步一步教你构建一个MPU6050(I2C类)驱动(二)
今天我们先来把驱动的框架搭好首先是i2c_driver的数据结构struct i2c_driver { unsigned int class; /* Notifies the driver that a new bus has appeared. You should avoid * using this, it will be removed in a near future...
2018-08-01 22:25:46
1367
原创 怎么写一个i2c设备的设备树
在上一次的博客中我们在设备树文件中写入了Mpu6050的设备信息,那么这个设备是信息是怎样来的呢,现在先来补充一下怎样从数据手册得到我们需要的数据。首先看看内核源码中已经写好的别的i2c设备树是怎么写,了解我们需要找的数据: i2c@13860000 { #address-cells = <1>; #size-cells = &...
2018-08-01 21:46:20
6578
原创 i2c驱动注册与匹配设备的源码追踪与分析
先是我们都熟悉的一条语句int i2c_register_driver(struct module *owner, struct i2c_driver *driver);进入到 i2c-core.h 文件中得到 i2c_register_driver 函数的完整内容int i2c_register_driver(struct module *owner, struct i2c_dr...
2018-07-31 21:36:24
314
原创 关于i2c驱动配对时匹配的数据结构源码追踪
先来看看i2c驱动的数据结构struct i2c_driver { unsigned int class; /* Notifies the driver that a new bus has appeared. You should avoid * using this, it will be removed in a near future. */ int (*attach...
2018-07-30 21:26:52
329
原创 一步一步教你构建一个MPU6050(I2C类)驱动(一)
1 i2c基本协议和时序i2c基础的知识这里就不提了,直接从时序开始,直接来看看i2c的波形2 i2c子系统软件框架先来看看i2c总线的分层思想:在分层图中我们可以看到,driver和device在核心层中分别成为了2条链表,核心层会按一定的规则匹配两条链表中的元素。查看内核源码 i2c-core.c ,找到了匹配的函数如下:static int i2c_de...
2018-07-29 22:32:22
2969
原创 构建一个简单的bus驱动框架
首先我们要了解bus驱动框架是由三部分组成的:Device(硬件相关),Bus(中间媒介),Driver(软件)为了实现高内聚,低耦合,解决重复代码过多,对整个驱动进行了分层。硬件相关的部分被抽象成Device部分,纯软件部分抽象成Driver部分,为了将这两部分匹配起来就创建了bus这一中间媒介。接下来搭建一个基础的框架(一)Bus的构建1 先来看看bus中的bus_type...
2018-07-28 22:33:26
671
原创 C++中父类和子类的赋值兼容原则
1.子类对象可以直接赋值给父类对象2.子类对象可以当做父类对象使用3.子类对象可以直接初始化父类对象4.父类指针可以直接指向子类对象5.父类引用可以直接引用子类对象 以下是每一点的代码验证1 子类对象可以直接赋值给父类对象#include<iostream>using namespace std;class Parent{privat...
2018-07-27 13:12:13
3212
原创 C++ 释放指向类的void类型指针造成内存泄漏
先来看一段代码#include <iostream>using namespace std;class A{public: A(){ cout << "A() ...." << endl; } ~A() { cout << "~A()...." << endl; } void func() {
2018-07-26 15:16:09
826
原创 关于const与static修饰的变量的区别
static:修饰的变量为静态变量,只会被初始化一次,该变量存储在内存中的静态区,地址不会改变。修饰全局变量时,每个函数对其的调用都是调用其生成的副本,修饰局部变量时每次调用都是上一次调用后的值。const:修饰的变量只会被定义(可能也只能在定义的时候赋值)一次,定义之后无法对其进行赋值或修改(即不能充当左值)。static和const修饰量的最大区别就是:static的值能修改,const不能(...
2018-03-19 00:13:34
694
基于TCP通信的员工管理系统(客户端,服务器端)
2018-08-10
基于TCP的在线词典客户端与服务器端
2018-08-08
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人