自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 Linux - C学习(数据库)

数据库和表: SQLite将每个数据库都保存成一个文件。 数据库中的数据被组织成表的形式。 表由若干拥有相同字段的记录组成。 表可以为空,即拥有0条记录。 字段指的是记录中的数据域,它有不同的类型,可以是一个数值,也可以是字符串。 每个表中可以指定一个或多个字段为主键,表中所有记录的主键的值都不能重复。这种不重复是在插入记录时控制的,即如果向一个表中插入记录时,这个表中已有

2016-11-04 22:06:10 359

转载 Linux学习(管道通信)

现在Linux使用的进程间通信方式包括:1.管道(pipe)和有名管道(FIFO)2.信号(signal)3.消息队列4.共享内存5.信号量6.套接字(socket) 管道通信:管道是单向的、先进先出的,它把一个进程的输出和另一个进程的输入连接在一起。一个进程(写进程)在管道的尾部写入数据,另一个进程(读进程)从管道的头部读出数据。数据被一个进程读出后,江背

2016-10-28 23:17:42 421

转载 Linux学习(信号量)

信号量:信号量(又名:信号灯)与其他进程间通信方式不大相同,主要用途是保护临界资源.进程可以根据它判定是否能够访问某些共享资源。除了用于访问控制外,还可用于进程同步。分类:二值信号灯:信号灯的值只能取0或1,类似于互斥锁。 但两者有不同:信号灯强调共享资源,只要共享资源可用,其他进程同样可以修改信号灯的值;互斥锁更强调进程,占用资源的进程使用完资源后,必须由进程本身来解锁。计数信号

2016-10-27 22:52:04 227

转载 Linux学习(信号)

常见的信号:SIGHUP:从终端上发送的结束信号SIGINT:来自键盘的中断信号(Ctrl + C)SIGKILL:该信号结束结束信号的进程SIGTERM:kill命令发出的信号SIGCHLD:标示子进程停止或结束的信号SIGSTOP:来自键盘(Ctrl + Z)或调试程序的停止执行信号信号处理:当信号出现时,将按照下列三种方式中的一种进行处理:1.忽略此信号

2016-10-26 21:58:36 269

转载 Linux学习(消息队列)

消息队列:unix早期通信机制之一的信号能够传送的信息量有限,管道则只能传送无格式的字节流,这无疑会给应用程序开发带来不便。消息队列(也叫做报文队列)则克服了这些缺点。消息队列就是一个消息的链表.可以把消息看作一个记录,具有特定的格式.进程可以向中按照一定的规则添加新消息;另一些进程则可以从消息队列中读走消息。目前主要有两种类型的消息队列: POSIX消息队列以及系统V消息队列,系

2016-10-25 22:31:38 292

原创 Linux学习(共享内存)

前面是读,后面是写,打开两个终端,同时进行操作。#include #include #include #include #include #include #include #include "shm_com.h"int main(){    int running = 1;    void*shared_memory = (void *)0

2016-10-24 23:21:31 200

转载 Linux学习(文件七)

库函数 - 读Size_t fread(void *ptr,size_t size,size_t n,FILE* stream);功能:从stream指向的文件中读取n个字段,每字段为size字节,并将读取的数据放入ptr所指的字符数组中,返回实际已读取的字段数。 库函数 - 写Size_t fwrite(const void*ptr,size_t size,size_t n,

2016-10-23 21:02:24 158

转载 Linux学习(文件六)

库函数 - 创建和打开FILE *fopen(const char*filename,const char*mode)Filename:打开的文件名(路径,缺省为当前路径)Mode:打开模式Fopen打开由path指定的文件,并把它与一个文件流关联起来。Mode参数指定文件的打开方式。Fopen执行成功返回一个非空的FILE*指针,失败时返回NULL。“r”:只读,文件必须已存

2016-10-23 21:00:37 144

转载 Linux学习(思考题一)

在Linux中写一个程序,里面全局变量,局部变量,static,const,常数,数组,输出 这些变量的地址(包括赋值的和没有赋值的,各类数据类型)#includeint a;int b = 1;int const c = 2;static int d;static int e = 3; char src1[20];char dest1[] = {'a','b'};

2016-10-21 19:12:20 484

转载 Linux学习(文件五 )

I/O缓冲:为了提高系统进行I/O操作的效率!系统调用要请求内核的服务,会引起CPU模式的切换,期间会有大量的堆栈数据保存操作,开销比较大。如果频繁地进行系统调用,会降低应用程序的运行效率。有了缓冲机制以后,多个读写操作可以合并为一次系统调用,减少了系统调用的次数,将大大提高程序的运行效率。所谓的标准I/O函数实际是对底层系统调用的封装,最终读写设备或文件的操作仍需调用系统I/O函数来完成。

2016-10-20 22:51:16 152

转载 Linux学习(文件四)

whence可使用下述值:SEEK_SET : 相对文件开头SEEK_CUR : 相对文件读写指针的当前位置SEEK_END : 相对文件末尾offset可取负值,表示向前移动。例如下述调用可将文件指针相对当前位置向前移动5个字节:lseek(fd,-5,SEEK_CUR); 库函数:C库函数的文件操作是独立于具体的操作系统平台的,不管是在DOS、Windows、Linux

2016-10-19 22:13:21 271

转载 Linux学习(文件三)

例:1.系统调用 - 关闭。当我们操作文件以后,需要关闭文件:Int close (int fd);2.系统调用 - 读。Int read(int fd,const void*buf,size_t length);功能:从文件描述符fd所指定的文件中读取length个字节到buf所指向的缓冲区中,返回值为实际读取的字节数。3.系统调用 - 写。Int write(int fd,

2016-10-18 22:20:08 200

转载 Linux学习(文件二)

例:(系统调用 - 打开)#include #include #include Int open(const char*pathname,int flags);Int open(const char*pathname,int flags,mode_t mode);返回值:成功返回新分配的文件描述符,出错返回-1并设置error。参数含义:pathname是要打开或创建的

2016-10-17 20:37:08 251

转载 Linux 学习(文件二)

注:一个进程启动时,都会打开三个文件:标准输入:STDIN_FILENO   0标准输入:STDOUT_FILENO   1标准出错处理:STDERR_FILENO   2系统调用 - 创建:int creat(const char *filename,mode_t mode)filename:创建的文件名。(包含路径,缺省为当前路径)。mode:创建模式。常创建模式:S_

2016-10-16 20:07:12 186

转载 Linux 学习(文件)

Linux文件:在Linux中对目录和设备的操作都等同于对文件的操作。Linux文件可分为:普通文件,目录文件,链接文件,设备文件。 什么是文件?1.系统资源(内存、硬盘、一般设备、进程间通信的通道等)的一个抽象。2.对系统资源进行访问的一个通用接口。 文件的好处:对资源提供通用的操作接口,可以极大地简化系统编程接口的设计。文件描述符:1.所有执行I/O操作的系统调用使用文

2016-10-16 00:24:24 220

转载 智能小车的制作(十一)

(1)晶振电路的测试    在单片机正常运行的必要条件是单片机系统的时钟稳定正常。实际中,因为各种原因导致系统时钟不正常而出现系统无法正常运行的情况时有,因此系统时钟是否振是通电检查的首要环节。在系统通电的状况下,用万用表的直流电压档(20V),分别测量XTAL1和XTAL2引脚的电压,看是否正常,在调试过程中,测得电压XTAL1引脚应为2.05V,XTAT2应为2.15V。(2)复位电路

2016-10-14 21:47:37 967

转载 智能小车的制作(十)

5  系统的总体调试5.1  硬件的测试    按照之前设计好的智能循迹小车原理图,详细计算系统中各个元件的参数,选择相应器件,制作实际电路板。然后选取万用表的200欧姆档来测试电路板。用红、黑表笔来测试电路板上每条走线,如果测量的电阻值非常小时,证明走线没有断开,当其电阻值很大时,证明该条走线断了,应该重新制作走线,使电路板在电气上得到正确地连接。

2016-10-13 22:26:25 887

转载 智能小车的制作(九)

4.2  本系统的编译器    Keil C51单片机软件开发系统可用于编辑C或汇编源文件。然后分别由C51编译器编译生成目标文件(.OBJ)。目标文件与库文件一起经LIB51连接定位生成绝对目标文件(.ABS)。ABS文件由OH51转换成标准的Hex文件,由仿真器使用直接对目标板进行调试,也可以直接写入程序存贮器如EPROM 中。

2016-10-12 23:34:04 419

转载 智能小车的制作(八)

4.1  软件设计的流程    本设计采用C语言来编译程序。模块化结构程序的设计,可以使系统软件便于调试与优化,也使其他人更好地理解和阅读系统的程序设计。因此,软件的设计上,运用了模块化程序的结构对软件进行设计,使得程序变得更加直观易懂。程序的主要模块有:主程序、定时溢出中断服务程序、外部中断服务程序。    Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具,全Window

2016-10-11 22:48:39 678

转载 智能小车的制作(七)

3.3.1  L298N引脚结构 图3.5 L298N 驱动芯片3.3.2  电机驱动原理    电路的形状很像字母H。四个三极管就是H桥的四条垂直线,而电机就是H中的横线。    图3.6  L298N内部H桥驱动电路    图3.6为一个典型的直流电机的控制电路。被命名为“H桥驱动电路”主要是因为电路的形状很像字母H。四个三极管就是H桥的四条

2016-10-10 22:24:37 796

转载 智能小车的制作(六)

3.3  电机驱动电路本设计采用L298N电机专用驱动芯片带动两个12V的直流电动机。    直流电机由定子和转子两大部分组成。直流电机运行时静止不动的部分称为定子,定子的主要作用是产生磁场,由机座、主磁极、换向极、端盖、轴承和电刷装置等组成。运行时转动的部分称为转子,其主要作用是产生电磁转矩和感应电动势,是直流电机进行能量转换的枢纽,通常又称为电枢,由转轴、电枢铁心、电枢绕组、换向器等组

2016-10-09 19:03:50 1412

转载 智能小车的制作(五)

3.2  光电传感器模块    循迹光电传感器原理,就是利用黑线对红外线不同的反射能力通过光敏二极管或光敏三极管,接收反射回的不同光强信号,把不同光强转换为电流信号,最后通过电阻,转换为单片机可识别的高低电平。光电传感器实现循迹的基本电路如3.4所示。      图3.4 循迹传感器电路图    循迹传感器工作原理:TC端是传感器工作控制端,为高电平时,发光二极管不工作,传感器休眠

2016-10-08 17:43:14 2900

转载 智能小车的设计(四)

3.1.2  晶振电路    在STC89C52单片机上内部有一个用于构成振荡器的高增益反相放大器,引脚XTAL1和XTAL2分别是此放大器的输入端和输出端。时钟可以由内部方式产生或外部方式产生。在1和XTAL2引脚上外接定时元件,内部振荡器就产生自激振荡。定时元件通常采用石英晶体和电容组成的并联谐振回路。从XTAL1接入,如图3.2所示。由于外部时钟信号经过二分频触发后作为外部时钟电路输入的

2016-10-07 21:45:38 2686

转载 智能小车的制作(三)

单片机电路的设计    一个单片机应用系统的硬件电路设计包含两部分内容:一是系统扩展,即单片机内部的功能单元,如ROM、RAM、I/O、定时器/计数器、中断系统等不能满足应用系统的要求时,必须在片外进行扩展,选择适当的芯片,设计相应的电路;二是系统的配置,即按照系统功能要求配置外围设备,如键盘、显示器、A/D、D/A转换器等。单片机的功能特性描述    单片机又称单片微控制器,

2016-10-06 20:15:37 1227

转载 智能小车的制作(二)

整体方案确定    图2.2为循迹小车的系统控制框图。引导线是小车跟踪的目标,检测系统检测车的相对路径,然后将此信息输入到单片机,单片机处理此信息后,将控制命令输出到驱动模块,以控制小车的直流电机,保证小车快速平稳地沿预先设定好的路线行驶。 采用5V的可充电池组作为主电源。STC89C52单片机作为主控制器。因为小车电机内部装有减速齿轮组,所以不需考虑调速功能,采用电机

2016-10-06 20:13:32 790

转载 智能小车的制作(一)

智能小车的基本组成:    智能循迹小车主要由STC89C52单片机电路、TCRT5000循迹模块、L298N驱动模块、直流电机、小车底板、电源模块等组成。(1)单片机电路:采用STC89C52芯片作为控制单元。STC89C52单片机具有低成本、高性能、抗干扰能力强、超低功耗、低电磁干扰,并且与传统的8051单片机程序兼容,无需改变硬件,支持在系统编程技术。使用ISP可不用编程器直接在PC

2016-10-04 23:12:30 4690

转载 Linux - C数据库编程(预习内容六)

比较表达式:使用where子句时,需要一个比较表达式,满足这个条件的记录将被操作。常用的比较操作符如下: 逻辑操作符:几个表达式还可以用逻辑操作符组合起来形成更复杂的表达式。

2016-10-03 23:42:14 163

转载 Linux - C数据库编程(预习内容五)

多表联合查询:可以把多表联合查询看作在一张由多个表的记录两两组合而成的大表中进行查询。 组合后的大表的记录数等于各个表的记录数之积。因此多表联合查询的效率较低。此外,语句的不同写法也能对查询效率产生显著的影响。Sqilte3命令行工具:SQLite库包含一个简单的命令行工具:sqlite3,该工具使得用户可以对一个SQLite数据库手动输入并且执行SQL语句。 如下命令可以

2016-10-02 22:52:50 162

转载 Linux - C数据库编程(预习内容四)

单表查询:    查询是对数据库的最常用操作。查询的结果可以理解为得到了一个新表,只是这个表并没有保存在数据库里,而是以某种方式显示给查询者。  用select语句可以对数据库进行查询select ID, Name from student where Sex = 'F'; 查询结果中出现表的所有字段(*)select * from score where  score  

2016-10-01 22:40:07 170

转载 Linux - C数据库编程(预习内容三)

插入记录: 用insert语句可以向表中插入一条新记录insert into student values(1, 'Zhang', 'M', 18);修改记录: 用update语句可以可以修改表中的记录update student set Sex = 'F', Age = 20 where Name = 'Zhang';where及其后的部分表示一个过滤条件,如果省略whe

2016-09-30 22:33:13 156

转载 Linux - C数据库编程(预习内容二)

创建表: 用create语句可以在数据库中创建表create table student(    ID          INTEGER,    name     TEXT,    sex         TEXT,    age         INTEGER,    primary  key(ID));     SQLite中的数据类型: NULL

2016-09-29 19:26:09 156

转载 Linux - C数据库编程(预习内容一)

数据库和表: SQLite将每个数据库都保存成一个文件。 数据库中的数据被组织成表的形式。 表由若干拥有相同字段的记录组成。 表可以为空,即拥有0条记录。 字段指的是记录中的数据域,它有不同的类型,可以是一个数值,也可以是字符串。 每个表中可以指定一个或多个字段为主键,表中所有记录的主键的值都不能重复。这种不重复是在插入记录时控制的,即如果向一个表中插入记录时,这个表中已有

2016-09-28 22:48:39 184

转载 Linux - C进程间通信(预习内容十)

信号量:信号量(又名:信号灯)与其他进程间通信方式不大相同,主要用途是保护临界资源.进程可以根据它判定是否能够访问某些共享资源。除了用于访问控制外,还可用于进程同步。分类:二值信号灯:信号灯的值只能取0或1,类似于互斥锁。 但两者有不同:信号灯强调共享资源,只要共享资源可用,其他进程同样可以修改信号灯的值;互斥锁更强调进程,占用资源的进程使用完资源后,必须由进程本身来解锁。计数信号

2016-09-27 20:40:23 135

转载 Linxu - C进程间通信(预习内容九)

发送消息:include #include #include int msgsnd(int msqid,struct                            msgbuf*msgp,int msgsz(大小),int msgflg) 功能:向消息队列中发送一条消息。msqid   已打开的消息队列idmsgp  存放消息的结构msgsz

2016-09-26 19:57:38 129

转载 Linux - C进程间通信(预习内容八)

打开/创建: #include    #include    #include    int msgget(key_t key, int msgflg)(返回一个msgget 的id)key:键值,由ftok获得。   msgflg:标志位。返回值:与健值key相对应的消息队列描述字。IPC_CREAT   创建新的消息队列。创建:在以下两种情况下,

2016-09-25 22:03:22 186

转载 Linux - C进程间通信(预习内容七)

消息队列:unix早期通信机制之一的信号能够传送的信息量有限,管道则只能传送无格式的字节流,这无疑会给应用程序开发带来不便。消息队列(也叫做报文队列)则克服了这些缺点。消息队列就是一个消息的链表.可以把消息看作一个记录,具有特定的格式.进程可以向中按照一定的规则添加新消息;另一些进程则可以从消息队列中读走消息。目前主要有两种类型的消息队列: POSIX消息队列以及系统V消息队列,系

2016-09-24 20:01:03 150

转载 Linux - C进程间通信(预习内容六)

共享内存 是被多个进程共享的一部分物理内存。共享内存是进程间共享数据的一种最快的方法,一个进程向共享内存区域写入了数据,共享这个内存区域的所有进程就可以立刻看到其中的内容。共享内存实现分为两个步骤:一、创建共享内存,使用shmget函数。二、映射共享内存,将这段创建的共享内存映射到具体的进程空间去,使用shmat函数。 当一个进程不再需要共享内存时,需要把它从进程地址空间中脱离

2016-09-23 19:48:48 296

转载 Linux - C进程间通信(预习内容五)

Alarm使用alarm函数可以设置一个时间值(闹钟时间),当所设置的时间到了时,产生SIGALRM信号。如果不捕捉此信号,则默认动作是终止该进程。#include Unsigned int alarm(unsigned int seconds)Seconds:经过了指定的的seconds秒后产生信号SIGALRM。每个进程只能有一个闹钟时间。如果在调用alarm时,以前已

2016-09-22 22:52:04 155

转载 Linux - C进程间通信(预习内容四)

信号类型:常见的信号:SIGHUP:从终端上发送的结束信号SIGINT:来自键盘的中断信号(Ctrl + C)SIGKILL:该信号结束结束信号的进程SIGTERM:kill命令发出的信号SIGCHLD:标示子进程停止或结束的信号SIGSTOP:来自键盘(Ctrl + Z)或调试程序的停止执行信号信号处理:当信号出现时,将按照下列三种方式中的一种进行处理:1

2016-09-21 21:05:47 285

转载 Linux - C进程间通信(预习内容三)

管道读写:管道用于不同进程间通信。通常先创建一个管道,再通过fork函数创建一个字进程,该子进程会继承父进程所创建的管道。注意事项:必须在系统调用fork()前调用pipe(),否则子进程不会继承文件描述符。命名管道:命名管道和无名管道基本相同,但也有不同点:无名管道只能由父子进程使用;但是通过命名管道,不相关的进程也能交换数据。例:#include #include

2016-09-20 22:27:04 308

空空如也

空空如也

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

TA关注的人

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