当前位置:文档之家› CMRF800系列CMRF810系列程序库函数

CMRF800系列CMRF810系列程序库函数

CMRF800系列CMRF810系列程序库函数
CMRF800系列CMRF810系列程序库函数

CMRF800系列CMRF810系列

非接触式智能卡读写器USB Reader 开发文档

1、版本说明(版本V1.00)

* All rights reserved, Specifications subject to change without notice.

* 版权所有,规格如有更改,恕不另行通知。

2、返回值说明:

2.1 函数返回值代码表:

0x00 命令执行成功

0x01 命令操作失败(失败原因请参考2.2底层单片机上传代码表)

0x02 地址校验错误

0x04 读写器返回超时

0x05 数据包流水号不正确:

0x07 接收异常

0x0A 参数值超出范围

2.2 底层单片机上传代码表:

0x80: 参数设置成功

0x81: 参数设置失败

0x82: 通讯超时

0x83: 卡不存在

0x84: 接收卡数据出错

0x87: 未知的错误

0x85: 输入参数或者输入命令格式错误

0x8f: 输入的指令代码不存在()

0x8A: 在对于卡块初始化命令中出现错误(仅用于14443命令)

0x8B: 在防冲突过程中得到错误的序列号(仅用于14443命令)

0x8C 密码认证没通过(仅用于14443命令)

0x90 卡不支持这个命令(仅用于15693命令)

0x91 命令格式有错误(仅用于15693命令)

0x92 在命令的FLAG参数中,不支持OPTION 模式(仅用于15693命令)0x93 要操作的BLOCK不存在(仅用于15693命令)

0x94 要操作的对象已经别锁定,不能进行修改(仅用于15693命令)

0x95 锁定操作不成功(仅用于15693命令)

0x96 写操作不成功(仅用于15693命令)

3System Commands

系统命令

5、int SetSerNum( unsigned char *newValue,

unsigned char *buffer);

函数功能:设置8个字节的产品序列号。

输入参数:描述

*newValue8个字节的读写器序列号

*buffer 用来返回接收到的数据的指针

输出参数:

*buffer 返回STA TUS后的状态,如果设置成功,则*buffer=0x 80

如果设置失败,则*buffer为底层(读卡器单片机)上传的错误代码(参照底层协议代码表2.2)

返回值:

0x00,设置成功

0x01,设置失败

6、int GetSerNum(unsigned char *buffer);

函数功能:

读取由厂家预设的1个字节的读卡器地址和8个字节序列号.

输入参数:

*buffer 传入一个指针,用来返回接收到的数据

输出参数:

*buffer buffer[0] 读写器地址

buffer[1...8] 8个字节的读写器序列号

返回值:

0x00,操作成功

0x01,操作失败

6、int WriteUserInfo(int num_blk,

int num_length,

char *user_info);

读卡器提供4个块(每个块不能大于120个字节),共480个字节空间的用户数据区。用户可以根据需要,储存相应的用户信息到读写器中.

输入参数:

num_blk 区域号

num_length 数据长度

*user_info 用户数据

返回值:

0x00,操作成功

0x01,操作失败

7、int ReadUserInfo(int num_blk,

int num_length,

char *user_info);

函数功能:

读取读卡器中提供4个块(每个块不能大于120个字节)的数据.

输入参数:

int num_blk 区域号

int num_length 读取的数据长度

*user_info 待读入的用户数据

输出参数:

*user_info 如果:操作失败,则user_info[0] 为错误代码

如果:操作成功,则user_info[0..N] 为读取的用户信息数据

返回值:

0x00,操作成功

0x01,操作失败

8、int GetVersionNum(char *VersionNum);

读取读写器的版本号.

输入参数:

*VersionNum 待读入的版本号

输出参数:

*VersionNum 如果:操作失败,则VersionNum [0] 为错误代码

如果:操作成功,则VersionNum [0..N] 为读入的版本号

返回值:

0x00,操作成功

0x01,操作失败

9、int ControlLED( unsigned char freq,

unsigned char duration,

unsigned char *buffer);

函数功能:设置灯的工作状态,包括,灯亮的周期以及循环的次数

输入参数:freq 周期数

duration 次数

*buffer 待返回的参数

输出参数:

*buffer 如果:操作失败,则buffer [0] 为错误代码(参考2.2)

如果:操作成功,则buffer [0] 为成功标志,即为0x80

返回值:

0x00,操作成功,

0x01,操作失败

10、int ControlBuzzer(unsigned char freq,

unsigned char duration,

unsigned char *buffer);

函数功能:设置蜂鸣器的工作状态,包括,蜂鸣器的工作周期以及循环的次数

输入参数:

freq 周期数

duration 次数

*buffer 待返回的参数

输出参数:

*buffer 如果:操作失败,则buffer [0] 为错误代码(参考2.2)如果:操作成功,则buffer [0] 为成功标志,即为0x80

返回值:

0x00,操作成功

0x01,操作失败

4、ISO14443 Type-A Commands

4.1 Type-A Commands

4.1.1 int MF_Request(

unsigned char inf_mode,

unsigned char *buffer);

函数功能:发送ISO14443 A 寻卡指令.

输入参数:

inf_mode 寻卡模式

0x01 –Idle模式(一次只对一张卡操作)

0x00 –All模式(一次可对多张卡操作)

*buffer 待返回的参数

输出参数:

*buffer 如果:操作失败,则buffer [0] 为错误代码

如果:操作成功,则buffer [0..1],返回2个字节的数据串

返回值:

0x00,操作成功

0x01,操作失败

4.1.2 int MF_Anticoll(

unsigned char *snr,

unsigned char &status);

函数功能:

检测卡片数量,单卡或多卡,并返回4个字节的卡号。(如果有多张卡,就返回其中一张卡的卡号)

输入参数:

*snr 传送一个指针,返回4个字节的卡号

&Status 传送一个指针,返回卡片的数量

输出参数:

如果操作成功

Status 检测到的卡片的数量(0x00表示检测到单卡,0x01表示检测到多卡)

*snr 4个字节的卡号(snr[0..3])

如果操作失败

*snr 为错误代码(具体参考2.2)

返回值:

0x00,操作成功,

0x01,操作失败

4.1.3 int MF_Select(

unsigned char *snr);

函数功能:

选择卡,使卡进入被选择的状态…

输入参数:

*snr 传送一个指针,传入4个字节卡号,并且返回4个字节的卡号

输出参数:

Status 检测到的卡片的数量

*snr 4个字节的卡号(snr[0..3])

返回值:

0x00,操作成功,

0x01,操作失败

4 .1.4 int MF_Halt( );

函数功能:

选择卡,使卡进入被中断的状态…

输入参数:

返回值:

0x00,操作成功,

0x01,操作失败

4.2 Mifare Appilication Commands

4.2.1 int MF_Read( unsigned char mode,

unsigned char blk_add,

unsigned char num_blk,

unsigned char *snr,

unsigned char *buffer);

函数功能:

在指定位置读取指定长度的数据

输入参数:

mode,读取模式

( Request Idle + Key A mode=00 , Request Idle + Key B mode= 02, Request All + Key A mode=01 , Request All + Key B mode=03)

(以上数字均为十六进制数字)

blk_add,读取块地址

num_blk,读取块数目

*snr,一个指针,传递的是六个字节的密钥

*buffer 等待接受输出的指针变量

输出参数:

如果操作成功

*snr,4个字节的卡号

*buffer,读取到的数据(具体数量为:num_blk*16)

如果操作失败

buffer[0] 错误代码(具体参考2.2)

返回值:

0x00,操作成功,

0x01,操作失败

4.2.2 int MF_Write(unsigned char mode,

unsigned char blk_add,

unsigned char num_blk,

unsigned char *snr,

unsigned char *buffer);

函数功能:

在指定位置写入数据

输入参数:

mode,要写的模式

( Request Idle + Key A mode=00 , Request Idle + Key B mode= 02, Request All + Key A mode=01 , Request All + Key B mode=03)blk_add,要写块地址

num_blk,要写块数目

*snr,待写入的数据

*buffer,传入的指针符号..用来传出数据

输出参数:

如果操作成功

snr[0..3],4个字节的卡号

如果操作失败

buffer[0] 错误代码(具体参考2.2)

返回值:

0x00,操作成功,

0x01,操作失败

4.2.3 int MF_InitVal(

unsigned char mode,

unsigned char SectNum,

unsigned char *snr,

unsigned char *value);

函数功能:

初始化卡

输入参数:

mode,初始化模式

( Request Idle + Key A mode=00 , Request Idle + Key B mode= 02, Request All + Key A mode=01 , Request All + Key B mode=03)SectNum, 要初始化的扇区号00-0F

*snr, 6字节密钥(以指针的形式传入)

*value 4 字节的要初始化的数据

输出参数:

如果操作成功:

snr[0..3],4个字节的卡号

如果操作失败:

snr[0],错误代码(具体参考2.2)

返回值:

0x00,操作成功,

0x01,操作失败

4.2.4 int MF_Dec(

unsigned char mode,

unsigned char SectNum,

unsigned char *snr,

int *value);

函数功能:

对卡的指定扇区进行减值操作。

输入参数:

mode,模式控制

( Request Idle + Key A mode=00 , Request Idle + Key B mode= 02, Request All + Key A mode=01 , Request All + Key B mode=03)SectNum, 要写值的扇区号00-0F

*snr, 6字节密钥(以指针的形式传入)

value 要减的值,4个字节长度

输出参数:

如果操作成功

snr[0..3],4个字节的卡号

value[0..3] 4个字节操作后的数据串

如果操作失败

snr[0] 错误代码(具体参考2.2)

返回值:

0x00,操作成功,

0x01,操作失败

4.2.5 int MF_Inc (

unsigned char mode,

unsigned char SectNum,

unsigned char *snr,

int *value);

函数功能:对卡的指定扇区进行加值操作。

输入参数:

mode,模式控制

( Request Idle + Key A mode=00 , Request Idle + Key B mode= 02, Request All + Key A mode=01 , Request All + Key B mode=03)SectNum, 要加值的扇区号00-0F

*snr, 6字节密钥(以指针的形式传入)

value 要加的值,4个字节长度

输出参数:

如果操作成功

snr[0..3],4个字节的卡号

value[0..3] 4个字节操作后的数据串

如果操作失败

snr[0] 错误代码(具体参考2.2)

返回值:

0x00,操作成功,

0x01,操作失败

4.2.6 int MF_Getsnr (

unsigned char mode,

unsigned char halt,

unsigned char *snr

unsigned char *value);

函数功能:返回1个字节的单卡或多卡标识,4个字节的卡号。

输入参数:

mode,模式控制(模式控制26 or 52 )

0x26 –Idle模式(一次只对一张卡操作)

0x52 –All模式(一次可对多张卡操作)

halt, 是否需要halt卡(halt选择00 or 01 )

00不需要执行halt指令

01读写器执行halt指令

snr, 返回的1个字节的单卡或多卡标识(如果读卡不成功,返回错误码) value 返回的4个字节的卡号

输出参数:

如果操作成功

snr[0],1个字节的单卡或多卡标识

value[0..3] 返回的4个字节的卡号

如果操作失败

snr[0] 错误代码(具体参考2.2)

返回值:

0x00,操作成功,

0x01,操作失败

4.2.7 int MF_Restore(

unsigned char mode,

int cardlength,

unsigned char *carddata );

函数功能:

按照选择的模式,进行数据的发送

输入参数:

mode,模式控制0x00 —不需要进行CRC校验

0x01 —需要进行CRC校验

cardlength, 卡数据长度

*carddata, 发送时(卡数据)接收时(返回数据)

输出参数:

如果操作成功

carddata[0..N], 接收返回数据

如果操作失败

carddata[0] 错误代码(具体参考2.2)

返回值:

0x00,操作成功,

0x01,操作失败

5. ISO14443 Type-B Commands

5.1 int RequestType_B(

unsigned char *buffer)

函数功能:该命令执行ISO14443B中的REQB命令,获取卡片的PUPI代码

输入参数:

*buffer, 卡片复位后的数据串(A TQB)

输出参数:

如果操作成功:

*buffer, 卡片复位后的数据串(A TQB)

buffer[0] 卡片复位数据的长度

buffer[1..N] 操作后的数据串(ATQB)

如果操作失败:

buffer[0] 错误代码(具体参考2.2)

返回值:

0x00,操作成功,

0x01,操作失败

5.2 int AntiType_B(

unsigned char *buffer);

函数功能:该命令执行ISO14443B中的AnticollB命令

输入参数:

*buffer, 卡片返回的数据串(ATQB)

输出参数:

如果操作成功:

buffer[0..N], 卡片返回的数据串(ATQB)

如果操作失败:

buffer[0] 错误代码(具体参考2.2)

返回值:

0x00,操作成功,

0x01,操作失败

5.3 int SelectType_B (

unsigned char *SerialNum);

函数功能:该命令执行ISO14443B中的ATTRIB命令,给已知PUPI的卡片分配一个识别号CID

输入参数:

*SerialNum, 卡的序列号

返回值:

0x00,操作成功,

0x01,操作失败

5.4 int Request_AB(

unsigned char * buffer);

函数功能:

该命令执行几集成了ISO14443B中的,REQUEST和ATTRIB命令,通过一个命令使卡复位。

输入参数:

* buffer, 返回操作后的卡的序列号4个字节

输出参数:

如果操作成功:

buffer[0..3], 返回操作后的卡的序列号4个字节

如果操作失败:

buffer[0], 错误代码(具体参考2.2)

返回值:

0x00,操作成功,

0x01,操作失败

5.5 int API_ISO14443TypeBTransCOSCmd(

unsigned char *cmd,

int cmdSize,

unsigned char *buffer);

函数功能:

ISO14443传送命令,可以通过此命令向卡发任意有效的命令,数据

输入参数:

*cmd, 待发送的数据

cmdSize, 数据长度

* buffer, 回收的数据

输出参数:

* buffer, 回收的数据

如果:操作成功,则buffer[0..N] 为从卡返回的数据

操作失败,则buffer[0] 为错误代码

返回值:

0x00,操作成功,

0x01,操作失败

6 ISO15693 COMMANDS

6.1 ISO15693_Inventory(unsigned char *Cardnumber,

unsigned char *pBuffer);

函数功能:

此命令通过防冲突用于得到读卡区域内所有卡片的序列号(能得到的卡片数量与模块天线的输出功率有关,一般能对2~6卡进行防冲突)

输入参数:

*Cardnumber, 返回的卡的数量(一个字节)

*pBuffer 返回的数据(包括FLAG和DSFID和8*n个字节的卡号)

输出参数:

如果:操作成功

*Cardnumber 返回的卡的数量(一个字节)

*pBuffer 返回的数据(包括FLAG和DSFID和8*n个字节的卡号)

如果:操作失败

*Cardnumber 为错误代码

返回值:

0x00,操作成功,

0x01,操作失败

6.2 int ISO15693_Read (

unsigned char flags,

unsigned char blk_add,

unsigned char num_blk,

unsigned char *uid,

unsigned char *buffer);

函数功能:

用来读取1个或多个扇区的值,如果要读每个块的安全位,将FLAGS中Option_flag置为1,即FLAG = 0X42,每个扇区将返回5个字节,包括1个表示安全状态字节和4个字节的块内容,这时候每次最多能读12个块。如果FLAG = 02,将只返回4字节的块内容,这时候每次最多能读63个块。

输入参数:

flags 0x02 不带uid

0x22 带uid

0x42 不带uid但是要读安全位

blk_add, 要读的起始块号

num_blk, 块的数量

*uid UID信息

*buffer 返回值

输出参数:

如果:返回操作成功

buffer[0] 返回的flag buffer[1..N] Data

操作失败,

buffer[0]为错误代码

返回值:

0x00,操作成功,

0x01,操作失败

6.3 int ISO15693_Write(

unsigned char flags,

unsigned char blk_add,

unsigned char num_blk,

unsigned char *uid,

unsigned char *data);

函数功能:对一个块进行写操作(每次只能写一个块)

输入参数:

flags 0x02 不带uid

0x22 带uid

0x42 不带uid但是要读安全位

blk_add, 要写的起始块号

num_blk, 写的块的数量

*uid UID信息

*data 写入的数据

输出参数:

如果:操作失败,则data[0]为错误代码

返回值:

0x00,操作成功,

0x01,操作失败

6.4 int ISO15693_Lock(

unsigned char flags,

unsigned char num_blk,

unsigned char *uid

unsigned char *buffer);

函数功能:用于锁定块内容。注意:此过程不可逆(不能解锁)块锁定后内容不能在修改。

输入参数:

flags 0x02 不带uid

0x42 不带uid但是要读安全位

0x22 带uid

num_blk, 要锁的块号

*uid UID信息

*buffer 返回值

输出参数:

如果:操作成功,则buffer[0] 值为0x80

如果:操作失败,则buffer[0]为错误代码

返回值:

0x00,操作成功,

0x01,操作失败

6.5 int ISO15693_StayQuiet(

unsigned char flags,

unsigned char *uid,

unsigned char *buffer );

函数功能:

此命令用于将卡置于静止的状态, 必须用地址模式,如果发送的数据与被操作的卡的序列号相同,操作成功后,卡将进入静止状态,否则状态不变。

输入参数:

flags 标识字节1个字节

*uid UID信息

*buffer 返回值

输出参数:

如果:操作成功,则buffer[0] 返回的0x80,表示操作成功

如果:操作失败,则buffer[0]为错误代码(具体参考2.2)

0x00,操作成功

0x01,操作失败

6.6 int ISO15693_Select(

unsigned char flags,

unsigned char *uid,

unsigned char *buffer ) ;

函数功能:

此命令必须用地址模式,如果发送的数据与被操作的卡的序列号相同,操作成功后,卡将进入被选择状态,否则状态不变。

输入参数:

flags 标识字节1个字节

*uid UID信息

*buffer 返回值

输出参数:

如果:操作成功,则buffer[0]为的0x80,表示操作成功

如果:操作失败,则buffer[0]为错误代码

返回值:

0x00,操作成功

0x01,操作失败

6.7 int ISO15693_ResetToReady(

unsigned char flags,

unsigned char *uid,

unsigned char *buffer );

函数功能:

操作成功后,卡回到Ready状态。

flags 标识字节1个字节

0x02 不带uid

0x42 不带uid但是要读安全位

0x22 带uid

*uid UID信息

*buffer 返回值

输出参数:

如果:操作成功,则buffer[0] 的值为0x80,表示操作成功如果:操作失败,则buffer[0]为错误代码(具体参考2.2)

返回值:

0x00,操作成功

0x01,操作失败

6.8 int ISO15693_WriteAFI(

unsigned char flags,

unsigned char afi,

unsigned char *uid,

unsigned char *buffer );

函数功能:

对卡进行写AFI操作。

输入参数:

flags 标识字节1个字节

0x02 不带uid

0x42 不带uid但是要读安全位

0x22 带uid

afi 待写的AFI

*uid UID信息

*buffer 返回值

输出参数:

如果:操作成功,则buffer[0] 值为0x80,表示操作成功

如果:操作失败,则buffer[0] 为错误代码(具体参考2.2)

返回值:

C语言标准库函数2012

常用C语言标准库函数2012 C语言编译系统提供了众多的预定义库函数和宏。用户在编写程序时,可以直接调用这些库函数和宏。这里选择了初学者常用的一些库函数,简单介绍了各函数的用法和所在的头文件。 1.测试函数 Isalnum 原型:int isalnum(int c) 功能:测试参数c是否为字母或数字:是则返回非零;否则返回零 头文件:ctype.h Isapha 原型:int isapha(int c) 功能:测试参数c是否为字母:是则返回非零;否则返回零 头文件:ctype.h Isascii 原型:int isascii(int c) 功能:测试参数c是否为ASCII码(0x00~0x7F):是则返回非零;否则返回零 头文件:ctype.h Iscntrl 原型:int iscntrl(int c) 功能:测试参数c是否为控制字符(0x00~0x1F、0x7F):是则返回非零;否则返回零 头文件:ctype.h Isdigit 原型:int isdigit(int c) 功能:测试参数c是否为数字:是则返回非零;否则返回零。 头文件:ctype.h Isgraph 原型:int isgraph(int c) 功能:测试参数c是否为可打印字符(0x21~0x7E):是则返回非零;否则返回零头文件:ctype.h Islower 原型:int islower(int c) 功能:测试参数c是否为小写字母:是则返回非零;否则返回零 头文件:ctype.h

Isprint 原型:int isprint(int c) 功能:测试参数c是否为可打印字符(含空格符0x20~0x7E):是则返回非零;否则返回零 头文件:ctype.h Ispunct 原型:int ispunct(int c) 功能:测试参数c是否为标点符号:是则返回非零;否则返回零 头文件:ctype.h Isupper 原型:int isupper(inr c) 功能:测试参数c是否为大写字母:是则返回非零;否则返回零 Isxdigit 原型:int isxdigit(int c) 功能:测试参数c是否为十六进制数:是则返回非零;否则返回零 2.数学函数 abs 原型:int abs(int i) 功能:返回整数型参数i的绝对值 头文件:stdlib.h,math.h acos 原型:double acos(double x) 功能:返回双精度参数x的反余弦三角函数值 头文件:math.h asin 原型:double asin(double x) 功能:返回双精度参数x的反正弦三角函数值 头文件:math.h atan 原型:double atan(double x) 功能:返回双精度参数的反正切三角函数值 头文件:math.h atan2 原型:double atan2(double y,double x) 功能:返回双精度参数y和x由式y/x所计算的反正切三角函数值 头文件:math.h cabs

OpenCV 2.4.4安装与配置

OpenCV 2.4.4 安装与配置 步骤一:安装OpenCV https://www.doczj.com/doc/d310581446.html,/projects/opencvlibrary/files/opencv-win/2.4.4/ 1.从以上地址下载OpenCV 2.4.4,执行exe文件,将文件安装到所需目录。 2.建立环境变量并添加到系统路径(以将文件安装在D:\opencv为例): i) 右键点击桌面的计算机图标,选择“属性”,跳出如下窗口:

ii) 点击“高级系统设置”,跳出如下窗口:

iii) 点击“高级”选项卡下的“环境变量”,跳出如下窗口:

iv) 点击“系统变量”下的“新建”,“变量名”输入OPENCV_BUILD,“变量值”输入D:\opencv\build(如果OpenCV解压在别的目录,请输入该目录路径。比如,如果在C盘ProgramFiles文件夹建立了名为OpenCV的文件夹,并在其中解压,那么输入的目录就为 C:\ProgramFiles\OpenCV\opencv\build,总之目录一直到build文件夹),点击“确定”。 v) 双击“用户变量”中的PATH,在跳出的窗口中输入变量值为%OPENCV_BUILD%\x86\vc10\bin (如果电脑是64位系统的,请把“x86”改为“x64”;并请确保使用的是VS 2010,因为vc10 文件夹针对的是VS 2010)。

步骤二:在VS2010中配置OpenCV 1. 打开VS 2010,新建一个项目(Win32控制台或MFC 都可以)。 2. 建立Debug 属性表。 i) 点击“视图”菜单中的“属性管理器”。

C语言常用函数手册

1.分类函数,所在函数库为ctype.h int isalpha(int ch) 若ch是字母('A'-'Z','a'-'z')返回非0值,否则返回0 int isalnum(int ch) 若ch是字母('A'-'Z','a'-'z')或数字('0'-'9'),返回非0值,否则返回0 int isascii(int ch) 若ch是字符(ASCII码中的0-127)返回非0值,否则返回0 int iscntrl(int ch) 若ch是作废字符(0x7F)或普通控制字符(0x00-0x1F) 返回非0值,否则返回0 int isdigit(int ch) 若ch是数字('0'-'9')返回非0值,否则返回0 int isgraph(int ch) 若ch是可打印字符(不含空格)(0x21-0x7E)返回非0值,否则返回0 int islower(int ch) 若ch是小写字母('a'-'z')返回非0值,否则返回0 int isprint(int ch) 若ch是可打印字符(含空格)(0x20-0x7E)返回非0值,否则返回0 int ispunct(int ch) 若ch是标点字符(0x00-0x1F)返回非0值,否则返回0 int isspace(int ch) 若ch是空格(' '),水平制表符('\t'),回车符('\r'), 走纸换行('\f'),垂直制表符('\v'),换行符('\n') 返回非0值,否则返回0 int isupper(int ch) 若ch是大写字母('A'-'Z')返回非0值,否则返回0 int isxdigit(int ch) 若ch是16进制数('0'-'9','A'-'F','a'-'f')返回非0值, 否则返回0 int tolower(int ch) 若ch是大写字母('A'-'Z')返回相应的小写字母('a'-'z') int toupper(int ch) 若ch是小写字母('a'-'z')返回相应的大写字母('A'-'Z') 2.数学函数,所在函数库为math.h、stdlib.h、string.h、float.h int abs(int i) 返回整型参数i的绝对值 double cabs(struct complex znum) 返回复数znum的绝对值 double fabs(double x) 返回双精度参数x的绝对值 long labs(long n) 返回长整型参数n的绝对值 double exp(double x) 返回指数函数ex的值 double frexp(double value,int *eptr) 返回value=x*2n中x的值,n存贮在eptr中double ldexp(double value,int exp); 返回value*2exp的值 double log(double x) 返回logex的值 double log10(double x) 返回log10x的值 double pow(double x,double y) 返回xy的值 double pow10(int p) 返回10p的值 double sqrt(double x) 返回+√x的值 double acos(double x) 返回x的反余弦cos-1(x)值,x为弧度 double asin(double x) 返回x的反正弦sin-1(x)值,x为弧度 double atan(double x) 返回x的反正切tan-1(x)值,x为弧度 double atan2(double y,double x) 返回y/x的反正切tan-1(x)值,y的x为弧度double cos(double x) 返回x的余弦cos(x)值,x为弧度 double sin(double x) 返回x的正弦sin(x)值,x为弧度 double tan(double x) 返回x的正切tan(x)值,x为弧度 double cosh(double x) 返回x的双曲余弦cosh(x)值,x为弧度 double sinh(double x) 返回x的双曲正弦sinh(x)值,x为弧度

OPENCV 2.4.10安装

一、VS2020安装opencv2.4.10 1.1首先安装vs2010 安装这个就不用多谈了 1.2下载opencv- 2.4.10.exe,并解压到 最后会在 1.3添加系统变量 在系统变量path后添加:C:\opencv\opencv\build\x86\vc10\bin 1.4新建vc++控制台工程项目,配置 1.4.1项目属性->配置属性->VC++目录->包含目录 添加 C:\opencv\opencv\build\include C:\opencv\opencv\build\include\opencv C:\opencv\opencv\build\include\opencv2

1.4.2项目属性->配置属性->VC++目录->引用目录 添加 C:\opencv\opencv\build\x86\vc10\lib 1.4.3项目属性->链接器->输入->附加依赖项 在debug模式下添加 配置方案为Debug的配置,添加:(2410代表我的opencv版本是2.4.10,需要对应更改) opencv_calib3d2410d.lib opencv_contrib2410d.lib opencv_core2410d.lib opencv_features2d2410d.lib

opencv_flann2410d.lib opencv_gpu2410d.lib opencv_highgui2410d.lib opencv_imgproc2410d.lib opencv_legacy2410d.lib opencv_ml2410d.lib opencv_nonfree2410d.lib opencv_objdetect2410d.lib opencv_ocl2410d.lib opencv_photo2410d.lib opencv_stitching2410d.lib opencv_superres2410d.lib opencv_ts2410d.lib opencv_video2410d.lib opencv_videostab2410d.lib 配置方案为Release的配置,添加: opencv_calib3d2410.lib opencv_contrib2410.lib opencv_core2410.lib opencv_features2d2410.lib opencv_flann2410.lib opencv_gpu2410.lib opencv_highgui2410.lib opencv_imgproc2410.lib opencv_legacy2410.lib opencv_ml2410.lib opencv_nonfree2410.lib opencv_objdetect2410.lib opencv_ocl2410.lib opencv_photo2410.lib opencv_stitching2410.lib opencv_superres2410.lib opencv_ts2410.lib opencv_video2410.lib opencv_videostab2410.lib

vs2010下配置OpenCV

以下配置方法仅属于个人见解;若有什么不对的地方请指教啊。 在完成每一步骤后,记住点击?确定?,以确保你的设置成功。 在某些步骤中注意要在Debug 和Release 分别进行配置。 1.首先是下载VS2010并安装,这里不作赘述;(安装目录: D:\\Program Files\Microsoft Visual Studio 10.0) 2.下载并安装OpenCV,我的版本是2.1(安装目录为D:\Program Files\OpenCV2.1)注意将路径添加至Path中 3.下载并安装CMake,下载版本为Windows(Win32 Installer),安装目录为D:\Program Files\CMake 2.8 4.运行cmake-gui(D:\Program Files\CMake 2.8\bin),设置路径为OpenCV安装路径(本文档假定安装位置为:D:\Program Files\OpenCV2.1),并创建子目录D:\Program Files\OpenCV2.1\vs2010,用于存放编译结果。将数据填入指定文本框中

5.点击?Configure?,在弹出对话框中选中Visual Studio 10.0;单选框中选项选择程序默认的;然后点击Fnish;程序会自动完成 ?Configure Done?; 6.然后点击?configure?,接着点击?Generate?。程序完成?Generate Done?。 7.完成以上步骤后,将在D:\Program Files\OpenCV2.1|vs2010目录下生成OpenCV.sln的VC Solution File,接着请用vs2010打开OpenCV.sln,完成以下操作:

Open CV的安装及使用说明

Open CV的安装及使用说明 ******************************************************************************* 如果不需要安装OpenCV中的(CalibFilter、ProxyTrans、SyncFilter), 则步骤为以下方式 (1)安装Open CV(这里的OpenCV版本为OpenCV_1.0); (2)点击”我的电脑”右键属性的系统环境变量,在path中添加\bin路径,例如: D:\OpenCV\bin; (3)打开\_make\opencv.dsw,选择菜单Build->Batch Build->Build; ******************************************************************************* 如果需要安装OpenCV中的(CalibFilter、ProxyTrans、SyncFilter),则 步骤为以下方式 (1)安装SDK(注意:2004年下半年及2005以后的版本都不包括directshow), 安装目录为:D:\ DXSDK; (2)安装Open CV(这里的OpenCV版本为OpenCV_1.0); (3)点击”我的电脑”右键属性的系统环境变量,在path中添加\bin路径,例如: D:\OpenCV\bin; (4)编译D:\DXSDK\Samples\C++\DirectShow\BaseClasses,编译建立Release和Debug版本, 将产生的库strmbase.lib和strmbasd.lib拷贝到目录\lib下,在Developer Studio的Tools->Options->Directories->Include files中添加如下路径:\include \samples\C++\DirectShow\BaseClasses 另外在Tools->Options->Directories->Library files中添加如下路径: \lib; (5)打开\_make\opencv.dsw,选择菜单Build->Batch Build->Build,又打开 \_make\opencv_directshow.dsw,选择菜单Build->Batch Build->Build; ******************************************************************************* 注意:在编译opencv.dsw有错误 错误的地方是"foreground_regions"问题。打开"Edit"->"Find In Files"->"In folder"选择"D:\OpenCV",找foreground_regions。在"Find in Files"底下我们点击"CvSeq* foreground_regions /*foreground object contours*/",找到 CvMemStorage* storage; /*storage for 揻oreground_regions?/ CvSeq* foreground_regions /*foreground object contours*/ 问题就出在 CvMemStorage* storage; /*storage for 揻oreground_regions?/, 改为 "CvMemStorage* storage; /*storage for 揻oreground_regions*/" 即可。 *******************************************************************************

MCS-51系列单片机程序的设计论文一

MCS-51系列单片机程序的设计论文 程序设计是单片机开发最重要的工作,程序设计就是利用单片机的指令系统,根据应用系统(即目标产品)的要求编写单片机的应用程序,其实我们前面已经开始这样做过了,这一课我们不是讲如何来设计具体的程序,而是教您设计单片机程序的基本方法。不过在讲解程序设计是单片机开发最重要的工作,程序设计就是利用单片机的指令系统,根据应用系统(即 目标产品)的要求编写单片机的应用程序,其实我们前面已经开始这样做过了,这一课我们不是讲如何 来设计具体的程序,而是教您设计单片机程序的基本方法。不过在讲解之前还是有必要先了解一下单片 机的程序设计语言。 一.程序设计语言 这里的语言与我们通常理解的语言是有区别的,它指的是为开发单片机而设计的程序语言,如果 您没有学过程序设计可能不太明白,我给大家简单解释一下,您知道微软的VB,VC 吗?VB,VC 就是为 某些工程应用而设计的计算机程序语言,通俗地讲,它是一种设计工具,只不过这种工具是用来设计计 算机程序的。要想设计单片机的程序当然也要有这样一种工具(说设计语言更确切些),单片机的设计 语言基本上有三类: 1.完全面向机器的机器语言 机器语言就是能被单片机直接识别和执行的语言,计算机能识别什么?以前我们讲过--是数字“0” 或“1”,所以机器语言就是用一连串的“0”或“1”来表示的数字。比如:MOV A,40H;用机器语言 来表示就是11100101 0100000,很显然,用机器语言来编写单片机的程序不太方便,也不好记忆,我 们必须想办法用更好的语言来编写单片机的程序,于是就有了专门为单片机开发而设计的语言: 2.汇编语言 汇编语言也叫符号化语言,它使用助记符来代替二进制的“0”和“1”,比如:刚才的MOV A, 40H 就是汇编语言指令,显然用汇编语言写成的程序比机器语言好学也好记,所以单片机的指令普遍采 用汇编指令来编写,用汇编语言写成的程序我们就叫它源程序或源代码。可是计算机不能识别和执行用 汇编语言写成的程序啊?怎么办?当然有办法,我们可以通过“翻译”把源代码译成机器语言,这个过 程就叫做汇编,汇编工作现在都是由计算机借助汇编程序自动完成的,不过在以前,都是靠手工来做的。 值得注意的是,汇编语言也是面向机器的,它仍是一种低级语言。每一类计算机

ubuntu12.04安装OpenCV2.4.1

ubuntu12.04安装OpenCV2.4。1 分类:opencv2012-06-26 14:411230人阅读评论(0)收藏举报 目录(?)[+] The Installation Procedure To install and configure OpenCV 2.4.1, complete the following steps. The commands shown in each step can be copy and pasted directly into a Linux command line. 1. R emove any installed versions of ffmpeg and x264. sudo apt-get remove ffmpeg x264 libx264-dev 2. G et all the dependencies for x264 and ffmpeg. sudo apt-get update sudo apt-get install build-essential checkinstall git cmake libfaac-dev libjack-jackd2-dev libmp3lame-dev libopencore-amrnb-dev libopencore-amrwb-dev libsdl1.2-dev libtheora-dev libva-dev libvdpau-dev libvorbis-dev libx11-dev libxfixes-dev libxvidcore-dev texi2html yasm zlib1g-dev 3. D ownload and install gstreamer. sudo apt-get install libgstreamer0.10-0 libgstreamer0.10-dev gstreamer0.10-tools gstreamer0.10-plugins-base libgstreamer-plugins-base0.10-dev gstreamer0.10-plugins-good gstreamer0.10-plugins-ugly gstreamer0.10-plugins-bad gstreamer0.10-ffmpeg 4. D ownload and install gtk. sudo apt-get install libgtk2.0-0 libgtk2.0-dev 5. D ownload and install libjpeg. sudo apt-get install libjpeg8 libjpeg8-dev 6. C reate a directory to hold source code.

51单片机DIY做PLC编程精编版

51单片机DIY做PLC编程 有朋友想定制一个净水机控制器,有一些独特的功能要增加,但是商品控制板没有这样的功能,问我能否做一个,我觉得单片机完全能满足这种简单的控制需要,上手开始编程序时候突然感到,用PLC逻辑编这种功能是非常简单轻松的,而如果用汇编或C编却感觉有点棘手,编程效率不高,所以想为何不在单片机上实现PLC的逻辑呢? 上网搜索尝试看能否找到合适的程序下载来稍微改改就能用的呢?方案几年前就有了,实际上是利用三菱的低档PLC编程软件编辑好梯形图,存盘后用专用的格式转换工具转换成HEX单片机烧写文件烧进去,尝试下载三菱PLC工具软件,但是在我的WIN7-64位系统上不能正常工作,好容易换了系统装好开发工具,但是初次上手这款开发工具,界面挺复杂的,懒得研究各个按钮的使用,由于是单片机的硬件,对于程序的编制和转换有很多限制条件,否则是转换不成功的,嫌麻烦,放弃! 某宝倒是有百元PLC板出售,但是为了这么个简单的东西专门买个全功能板子有点浪费,而且其编程软件仍然是三菱的盗版软件,算了,再想办法把。 由于工作中经常接触PLC程序,对其工作原理也略知一二,网上也有相关的说明介绍,其实就是三个主要步骤,第一步扫描IO输入,第二步执行逻辑,第三步输出逻辑到IO,很简单的,最早PLC也是用单片机实现的,我为何不用汇编在51上搭建一个架构,简单的逻辑编制进去就能运转呢? 其中逻辑执行步骤还是有点意思的,需要把PLC逻辑翻译成单片机的汇编语言执行,这块开始也没有把握,后来搜索到一篇百度文章,介绍了一下三菱PLC逻辑是如何翻译成汇编的,我看了下估计其实是利用反汇编工具把HEX反编译成的ASM代码,并不清晰明了,而且还带着反汇编时候的行号,仅供参考了。 搜索结果中也有几篇论文,涉及到在51单片机上实现PLC逻辑的内容,但是那些论文都是充数的,仅仅几个IO逻辑,没有什么定时器,计数器功能的体现,哎!仅供参考! 看来这个PLC系统还是需要自己写了!OK!既然决定自己重写,那就开工吧!利用春节休假时间,编制了如下ASM51汇编PLC代码: 代码主要架构如下: 1、IO定义部分:根据所使用的单片机IO口数量,任意指定多少个I多少个O,那几个脚是I,哪几个是O都可以任意指定,在这个51系统里面设计了最大32个I,32个O,占用64个位寻址区域,其实用不到那么多,也可以分配给其它需要的标志位用,因为51系统总可位寻址地址只有128位,需要仔细分配.

51单片机控制LED灯程序设计

51单片机:LED灯亮灯灭程序设计 1.功能说明:控制单片机P1端口输出,使P1.0位所接的LED点亮,其他7只灯熄灭。 程序: 01: MOV A , #11111110B ; 存入欲显示灯的位置数据 02: MOV P1,A ; 点亮第一只灯 03: JMP $ ; 保持当前的输出状态 04: END ; 程序结束 2.功能说明:单片机P1端口接8只LED,点亮第1、3、4、6、7、8只灯。 程序:

01:START: MOV A , #00010010B ; 存入欲显示灯的位置数据 02:MOV P1,A ; 点亮灯 03:JMP START ; 重新设定显示值 04:END ; 程序结束 3.功能说明:单片机P1端口接8只LED,每次点亮一只,向左移动点亮,重复循环。 程序: 01:START: MOV R0, #8 ;设左移8次 02:MOV A, #11111110B ;存入开始点亮灯位置

03:LOOP: MOV P1, A ;传送到P1并输出 04:RL A ;左移一位 05:DJNZ R0, LOOP ;判断移动次数 06:JMP START ;重新设定显示值 07:END ;程序结束 4.功能说明:单片机P1端口接8只LED,每次点亮一只,向右移动点亮,重复循环。 程序: 01:START: MOV R0, #8 ;设右移8次

02:MOV A, #01111111B ;存入开始点亮灯位置03: LOOP: MOV P1, A ;传送到P1并输出 04: ACALL DELAY ;调延时子程序05: RR A ;右移一位 06: DJNZ R0, LOOP ;判断移动次数07: JMP START ;重新设定显示值08: DELAY: MOV R5,#50 ; 09:DLY1: MOV R6,#100 ; 10: DLY2: MOV R7,#100 ;

C语言中常用的库函数

字符处理函数 本类别函数用于对单个字符进行处理,包括字符的类别测试和字符的大小写转换 头文件ctype.h 函数列表<> 函数类别函数用途详细说明 字符测试是否字母和数字isalnum 是否字母isalpha 是否控制字符iscntrl 是否数字isdigit 是否可显示字符(除空格外)isgraph 是否可显示字符(包括空格)isprint 是否既不是空格,又不是字母和数字的可显示字符ispunct 是否空格isspace 是否大写字母isupper 是否16进制数字(0-9,A-F)字符isxdigit 字符大小写转换函数转换为大写字母toupper 转换为小写字母tolower 地区化 本类别的函数用于处理不同国家的语言差异。 头文件local.h 函数列表 函数类别函数用途详细说明 地区控制地区设置setlocale 数字格式约定查询国家的货币、日期、时间等的格式转换localeconv 数学函数 本分类给出了各种数学计算函数,必须提醒的是ANSI C标准中的数据格式并不符合IEEE754标准,一些C语言编译器却遵循IEEE754(例如frinklin C51) 头文件math.h 函数列表 函数类别函数用途详细说明 错误条件处理定义域错误(函数的输入参数值不在规定的范围内) 值域错误(函数的返回值不在规定的范围内) 三角函数反余弦acos 反正弦asin

反正切atan 反正切2 atan2 余弦cos 正弦sin 正切tan 双曲函数双曲余弦cosh 双曲正弦sinh 双曲正切tanh 指数和对数指数函数exp 指数分解函数frexp 乘积指数函数fdexp 自然对数log 以10为底的对数log10 浮点数分解函数modf 幂函数幂函数pow 平方根函数sqrt 整数截断,绝对值和求余数函数求下限接近整数ceil 绝对值fabs 求上限接近整数floor 求余数fmod 本分类函数用于实现在不同底函数之间直接跳转代码。头文件setjmp.h io.h 函数列表 函数类别函数用途详细说明 保存调用环境setjmp 恢复调用环境longjmp 信号处理 该分类函数用于处理那些在程序执行过程中发生例外的情况。 头文件signal.h 函数列表 函数类别函数用途详细说明 指定信号处理函数signal 发送信号raise 可变参数处理 本类函数用于实现诸如printf,scanf等参数数量可变底函数。

OPENCV下载与安装

OpenCV下载与安装 可以在https://www.doczj.com/doc/d310581446.html,/downloads.html上下载各种版本的OpenCV的源码,Windows、Linux/Mac、iOS、Android都有相应的版本,所以OpenCV可以满足在各种操作系统下的开发,一般来说现有的无人驾驶智能车视觉信息认知计算研究团队都是在Windows和Linux平台下开发。目前OpenCV最新发布的是OpenCV3.0BETA版本(这是一个公测版本),本书所有的视觉算法是基于OpenCV2.4.3版本实现的。 OpenCV下载后安装极其简单,下面是一个以OpenCV2.4.3版本为例的具体安装过程。 OpenCV下载后是一个可执行文件(.exe文件),如OpenCV-2.4.3.exe,安装的时候只需要直接运行这个可执行文件,运行后或得到图1-4的安装路径的选择界面,安装过程实质就是一个解压过程。 图1-4OpenCV安装的路径选择 如1-4所示是将OpenCV解压在计算机的C盘,安装(解压)完成后,可以在C盘中找到一个名称为opencv的文件夹,若能找到,

说明OpenCV安装完毕。不建议将OpenCV安装在C盘中(C盘一般是系统盘),因为OpenCV解压后的文件比较大。 1.2.3环境配置 OpenCV安装完之后还需要进行环境配置才能使用,本书是以Windows7+Microsoft Visual Studio2010下OpenCV2.4.3的环境配置为案例介绍。 (1)设置OpenCV环境变量 OpenCV库函数需要通过用户环境变量调用所需要的库文件。点击:开始->计算机(右击)->属性->高级系统设置->高级->环境变量,在用户变量里新建一项: 变量名:path 变量值:C:\opencv\build\x86\vc10\bin 图1-5设置环境变量

C语言常见基本词汇及词汇解释

C语言常用基本词汇及其他提示语运算符与表达式: 1.constant 常量 2. variable 变量 3. identify 标识符 4. keywords 关键字 5. sign 符号 6. operator 运算符 7. statement语句 8. syntax 语法 9. expression 表达式 10. initialition初始化 11. number format 数据格式 12 declaration 说明 13. type conversion 类型转换 14.define 、definition 定义 条件语句: 1.select 选择 2. expression 表达式 3. logical expression 逻辑表达式 4. Relational expression 关系表达式 5.priority优先

6. operation运算 7.structure 结构 循环语句: 1.circle 循环 2. condition 条件 3. variant 变量 4. process过程 5.priority优先 6. operation运算 数组: 1. array 数组 2. reference 引用 3. element 元素 4. address 地址 5. sort 排序 6. character 字符 7. string 字符串 8. application 应用函数: 1.call 调用 2.return value 返回值 3.function 函数

4. declare 声明 5. `parameter 参数 6.static 静态的 7.extern 外部的 指针: 1. pointer 指针 2. argument 参数 3. array 数组 4. declaration 声明 5. represent 表示 6. manipulate 处理 结构体、共用体、链表: 1 structure 结构 2 member成员 3 tag 标记 4 function 函数 5 enumerate 枚举 6 union 联合(共用体) 7 create 创建 8 insert 插入 9 delete 删除 10 modify 修改

基于51单片机秒表的程序设计[1]

基于51单片机秒表的程序设计 1.设计目的: (1)利用单片机定时器中断和定时器计数方式实现秒、分定时。 (2)通过LED显示程序的调整,熟悉8155与8051,8155与LED的接口技术,熟悉LED动态显示的控制过程。 (3)通过键盘程序的调整,熟悉8155与矩阵式键盘的接口技术,熟悉键盘扫描原理。 (4)通过阅读和调试简易秒表整体程序,学会如何编制含LED动态显示、键盘扫描和定时器中断等多种功能的综合程序,初步体会大型程序的编制和调试技巧。 2.设计步骤与要求 (1)要求:以8位LED右边2位显示秒,左边6位显示0,实现秒表计时显示。以4×4矩阵键盘的KE0、KE1、KE2等3键分别实现启动、停止、清零等功能。 (2)方法:用单片机定时器T0中断方式,实现1秒定时;利用单片机定时器1方式3计数,实现60秒计数。用动态显示方式实现秒表计时显示,用键盘扫描方式取得KE0、KE1、KE2的键值,用键盘处理程序实现秒表的启动、停止、清零等功能。 (3)软件设计:软件整体设计思路是以键盘扫描和键盘处理作为主程序,LED动态显示作为子程序。二者间的联系是:主程序查询有无按键,无按键时,调用二次LED动态显示子程序(约延时8ms)后再回到按键查询状态,不断循环;有按键时,LED动态显示子程序作为按键防抖延时被连续调用二次(约延时16ms),待按键处理程序执行完后,再回到按键查询状态,同时兼顾了按键扫描取值的准确性和LED动态显示的稳定性。秒定时采用定时器T0中断方式进行,60秒计数由定时器1采用方式3完成,中断及计数的开启与关闭受控于按键处理程序。由上述设计思路可设计出软件流程图如图1.1所示。 (5)程序编制:编程时置KE0键为“启动”,置KE1键为“停止”,置KE2键为“清零”,因按键较少,在处理按键值时未采用散转指令“JMP”,而是采用条件转移指令“CJNE”,每条指令后紧跟着一条无条件跳转指令“AJMP”,转至相应的按键处理程序,如不是上述3个按键值则

opencv编译与安装

2012/3/6, 16:55:01 在fedora15的环境下编译与安装opencv,并测试人脸检测程序 第一步:由于opencv是在cmake工具下建立的工程,所以我们先要下载cmake,下载地址随便一搜都有,不多说。下载到home的主目录下,这里我们是/home/lg。看下面的命令: #cd /home/lg #tar xzvf CMake2.4.7.tar.gz . #cd CMake2.4.7 #./boostrap #gmake #make install 这样cmake工具安装好了,并且可以直接使用cmake命令 根据cmake的编译规律,我们选择外部编译。 下载Opencv2.3.0到/home/lg 解压后进入Opencv2.3.0的目录下(这里的opencv与以前版本1.0的不一样,没有configure文件,所以我们执行不了./configure命令): #mkdir build #cd build #cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D BUILD_PYTHON_SUPPORT=ON ..(这条命令解析可以参考cmake教程,但是记住这里的第二个选项,我们将opencv安装在/usr/local目录下的) #make #make install 到这opencv编译完成,接下去是是opencv这个工具能正常使用。 记住这里的做法前一种对fedora有用,也就是说在fedora的环境下只能使用这种做法,但是ubuntu却可以使用两种方法。顺便说一下,经常遇见apt-get命令,这是在ubuntu下使用获取软件包的命令,fedora使用的是yum,记住了,否则经常出现使用apt-get却获取不了软件包的情况。 方法1:在/etc/ld.so.conf.d下新建一个文件opencv.conf,里面输入/usr/local/lib 方法2:在/etc/ld.so.conf文件中加入/usr/local/lib这一行 然后执行 #ldconfig(root权限下) #cp /usr/local/lib/pkconfig/opencv.pc /usr/lib/pkgconfig (或者是输入这个命令 export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH)(pkconfig的用法见以前的博文) 至此opencv安装完成 我们可以找个例子来做实验 #cd /home/lg/Opencv2.3.0 #cd samples/cpp #g++ `pkconfig --cflags --libs opencv` drawing.cpp -o drawing(记住前面的两个引号是通过ESC下面的那个波浪符键获得 页次: 1

C语言常用的库函数

库函数并不是C语言的一部分,它是由编译系统根据一般用户的需要编制并 提供给用户使用的一组程序。每一种C编译系统都提供了一批库函数,不同的 编译系统所提供的库函数的数目和函数名以及函数功能是不完全相同的。ANSI C标准提出了一批建议提供的标准库函数。它包括了目前多数C编译系统所提供 的库函数,但也有一些是某些C编译系统未曾实现的。考虑到通用性,本附录 列出ANSI C建议的常用库函数。 由于C库函数的种类和数目很多,例如还有屏幕和图形函数、时间日期函数、 与系统有关的函数等,每一类函数又包括各种功能的函数,限于篇幅,本附录不 能全部介绍,只从教学需要的角度列出最基本的。读者在编写C程序时可根据 需要,查阅有关系统的函数使用手册。 1.数学函数 使用数学函数时,应该在源文件中使用预编译命令: #include或#include "math.h" 函数名函数原型功能返回值 acos double acos(double x);计算arccos x的值,其中-1<=x<=1计算结果 asin double asin(double x);计算arcsin x的值,其中-1<=x<=1计算结果 atan double atan(double x);计算arctan x的值计算结果 atan2double atan2(double x, double y);计算arctan x/y的值计算结果 cos double cos(double x);计算cos x的值,其中x的单位为弧度计算结果 cosh double cosh(double x);计算x的双曲余弦cosh x的值计算结果 exp double exp(double x);求e x的值计算结果

opencv2.4.9配置

Visual Studio 2010配置 Opencv2.4.9 转自: https://www.doczj.com/doc/d310581446.html,/huang9012/article/details/21811129 这篇文章作为OpenCV的启程篇,自然少不了先系统地介绍OpenCV开发环境的配置。 浅墨前后经历过OpenCV 2.4.6,OpenCV 2.4.7,OpenCV 2.4.8这三个版本的配置,有时候还要涉及到三个版本之间的转换,所以还是对OpenCV的配置有一定的理解的,希望自己的一点拙见能帮到大家。 还是先放出待会儿的测试用图:

1.下载和安装OpenCV SDK VS2010不用说,肯定都安装了吧。来说说当前最新的OpenCV版本2.4.8(2014年2月24日)的下载和安装。与其说是安装,不如叫解压更加合适,因为我们下载的exe安装文件就是一个自解压程序而已。

在官网:https://www.doczj.com/doc/d310581446.html,/上找到OpenCV windows版下载下来。 下载完后得到文件OpenCV 2.4.8,双击后会提示解压到某个地方,推荐放到D:\Program Files\下,比如D:\Program Files,(因为OpenCV项目文件打包的时候,根目录就是opencv,所以我们不需要额外的新建一个名为opencv的文件夹,然后再解压,那是多此一举的事情)然后点击Extract按钮 等一段时间,OpenCV2.4.8近3个多G的文件就解压到了D:\Program Files下。

其中,build里面是使用OpenCV相关的文件,我们如果只是使用OpenCV的话呢,就只用管build里面的内容。下面的sources文件夹你嫌烦,你嫌占硬盘空间,完全可以删掉。但是需要注意的是,官方示例集,也就是samples文件夹里面的示例程序,在sources文件夹里面躺着呢,所以,如果真是要删的话,还是想清楚哦。sources里面是源代码。想查看完整的源代码需要用cmake来“解包”,如何“解包”大家百度一下就可以,或者下次浅墨来专门讲一讲。这里就先不多说了。 2.配置环境变量 有些奇怪的是,浅墨在经历OpenCV 2.4.6,OpenCV 2.4.7,OpenCV 2.4.8这三个版本之间转换的时候,这三个版本的OpenCV存放在硬盘的不同的目录下。但就没动过这步里面的环境变量,或许新版本的OpenCV已经弱化了环境变量的配置。所以,大家可以先跳过这步,如果最终配置出来报错的话呢,可以考虑下根据实际情况加上这步的配置。 这步的配置方法如下: 计算机->(右键)属性->高级系统设置->高级(标签)->环境变量->(双击)path(用户,系统里面的path任选其一)->在变量值里面添加相应的路径。 对于32位系统,就添加: ”……opencv\build\x86\vc10\bin”

相关主题
文本预览
相关文档 最新文档