完整word版串口摄像头通信协议.docx

上传人:b****1 文档编号:1666047 上传时间:2023-05-01 格式:DOCX 页数:16 大小:74.17KB
下载 相关 举报
完整word版串口摄像头通信协议.docx_第1页
第1页 / 共16页
完整word版串口摄像头通信协议.docx_第2页
第2页 / 共16页
完整word版串口摄像头通信协议.docx_第3页
第3页 / 共16页
完整word版串口摄像头通信协议.docx_第4页
第4页 / 共16页
完整word版串口摄像头通信协议.docx_第5页
第5页 / 共16页
完整word版串口摄像头通信协议.docx_第6页
第6页 / 共16页
完整word版串口摄像头通信协议.docx_第7页
第7页 / 共16页
完整word版串口摄像头通信协议.docx_第8页
第8页 / 共16页
完整word版串口摄像头通信协议.docx_第9页
第9页 / 共16页
完整word版串口摄像头通信协议.docx_第10页
第10页 / 共16页
完整word版串口摄像头通信协议.docx_第11页
第11页 / 共16页
完整word版串口摄像头通信协议.docx_第12页
第12页 / 共16页
完整word版串口摄像头通信协议.docx_第13页
第13页 / 共16页
完整word版串口摄像头通信协议.docx_第14页
第14页 / 共16页
完整word版串口摄像头通信协议.docx_第15页
第15页 / 共16页
完整word版串口摄像头通信协议.docx_第16页
第16页 / 共16页
亲,该文档总共16页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

完整word版串口摄像头通信协议.docx

《完整word版串口摄像头通信协议.docx》由会员分享,可在线阅读,更多相关《完整word版串口摄像头通信协议.docx(16页珍藏版)》请在冰点文库上搜索。

完整word版串口摄像头通信协议.docx

完整word版串口摄像头通信协议

串口摄像头说明书

一、串口摄像头介绍

1、SXH485-V1串口摄像头是一款具有视频采集和图像压缩功能的摄像头,具有130万象素CMOS摄像头,最大分辨率可达到1280×960,它是一个内含有拍摄控制、视频捕捉、图像数据采集、图像JPEG压缩、串口通讯等功能的齐全的工业用图像采集设备。

采用标准的JPEG图像压缩算法,本产品的图像输出格式与常用计算机完全兼容。

同时,本产品带有可选择的红外照明功能,能够实现自动照度补偿、在黑暗的光线下仍能较好的图片质量。

该摄像头的接口为标准的232接口,能够很方便和与各种计算机和嵌入式控制系统、数据传输系统相连。

同时使用485接口时可以方便控制设备接入多个摄像头。

最大串口通讯速率可达115200bps。

支持的通讯速率为:

4800、9600、19200、57600、115200,设备默认通讯波特率为115200,可以通过命令配置。

2、摄像头测试方法

具有485接口的摄像头连接pc进行镜头调试、参数设置的时候需要通过一个485转换器和PC的232接口连接。

485数据线只需要两根线,称为A、B或485+、485-。

连接的时候将摄像头的两根485数据线和转换器的两根数据线连接,转换器上的电源(+5v)和地不用连接。

另外给摄像头提供一个5v电源,接到摄像头的+5V和GND端即可。

注意485的数据线有正负之分,接错不会造成设备损坏,但不能正常通讯,此时交换一下即可。

摄像头的电源一定不能接错,否则会烧坏摄像头。

 

3、基本参数

1、通讯接口,RS232或485接口,支持通讯波特率为:

4800、9600、19200、57600

2、工作电压为5V-12V宽电压设计。

3、支持分辨率为:

1280×960

640×480(其中又分为高、中、低三个质量的图片)

320×240(同上)

160×160(同上)

4、配备红外灯,在拍摄时,自动点亮,以实现夜视以及省电功能。

5、摄像头应该具备自适应功能,即对外界的光线强弱具备一定的适应性,以保证在任何情况下都能获得在该情况下所能获得的最佳质量的图片。

6、应具备低功耗工作,在低功耗模式工作电流应小于或等于10mA,正常模式工作电流应小于或等于120mA(不启动红外灯的状态)。

二、摄像头接口协议

1、基本报文格式介绍

串口摄像头采用可以支持232或485接口进行通讯,其通讯协议保持一致。

下行(到摄像头)报文的基本格式如下:

报文头

2字节

摄像头地址

1字节

报文类型

1字节

报文长度

2字节

命令参数

<(65536-9)

CRC校验码

2字节

报文头:

固定两个字节0X90EB,第一个字节是0XEB,第二个字节是0X90;

摄像头地址:

每个摄像头都可以设定一个地址,地址范围从0-255,其中地址0保留,地址255用于广播报文。

每个摄像头只处理地址和自己内部设定的地址相同的报文,地址不等当作无效报文。

报文类型:

定义具体的命令类型,主要命令见下表

报文类型(16进制)

命令说明

备注

0x01

测试摄像头

0x02

按照报文给定的图像参数拍照并传输图像数据,

一次传输完全部图象数据,注意该协议返回的数据长度是三个字节,没有状态字节,状态字节对应图象数据长度的高字节,

最大支持16M字节的图象大小。

0x03

设置对比度

未实现

0x04

设置亮度

未实现

0x05

按照报文给定的图象参数拍照,并返回图像长度

0x06

传输图像数据

0x08

关闭、打开红外灯

0x0a

修改波特率不保存

新的波特率不会保存,重新上电后仍然回复到原来的波特率

0x0b

修改波特率参数并保存参数

0x0c

强制摄像头进入低功耗状态

未实现

0x0d

修改摄像头的ID

0x12

按照报文给定的图像参数拍照并传输图像数据,

一次传输完全部图象数据,注意该协议返回的数据长度是三个字节,没有状态字节,状态字节对应图象数据长度的高字节,

最大支持16M字节的图象大小。

0x30

请求拍照,以默认的压缩比和图象大小进行拍照,拍照结束返回图象大小,如果修改过图象大小参数,会以最后一次的图象大小进行拍照

返回拍照的图片大小

0x31

请求传输指定包的图像数据

必须顺序传递,从第0包开始,不可以随机请求

0x32

设置分包传输的包大小

默认512字节,包大小必须是128的倍数

0x33

报告上次拍照命令拍摄的图片数据大小

0x34

设置默认的图象分辨率

0x30开始的命令主要用于分包传输协议,就是主机端没有大的缓存时可以使用这些指令。

报文长度:

定义报文的数据长度,只计算命令参数部分的数据长度。

CRC校验码:

从摄像头地址字节开始到命令参数结束部分数据的CRC校验码。

校验码错误的报文作为无效报文丢弃。

CRC校验码计算公式:

C语言算法代码如下:

staticconstunsignedshortcrc_ta[256]={/*CRC余式表*/

0x0000,0x1021,0x2042,0x3063,0x4084,0x50a5,0x60c6,0x70e7,

0x8108,0x9129,0xa14a,0xb16b,0xc18c,0xd1ad,0xe1ce,0xf1ef,

0x1231,0x0210,0x3273,0x2252,0x52b5,0x4294,0x72f7,0x62d6,

0x9339,0x8318,0xb37b,0xa35a,0xd3bd,0xc39c,0xf3ff,0xe3de,

0x2462,0x3443,0x0420,0x1401,0x64e6,0x74c7,0x44a4,0x5485,

0xa56a,0xb54b,0x8528,0x9509,0xe5ee,0xf5cf,0xc5ac,0xd58d,

0x3653,0x2672,0x1611,0x0630,0x76d7,0x66f6,0x5695,0x46b4,

0xb75b,0xa77a,0x9719,0x8738,0xf7df,0xe7fe,0xd79d,0xc7bc,

0x48c4,0x58e5,0x6886,0x78a7,0x0840,0x1861,0x2802,0x3823,

0xc9cc,0xd9ed,0xe98e,0xf9af,0x8948,0x9969,0xa90a,0xb92b,

0x5af5,0x4ad4,0x7ab7,0x6a96,0x1a71,0x0a50,0x3a33,0x2a12,

0xdbfd,0xcbdc,0xfbbf,0xeb9e,0x9b79,0x8b58,0xbb3b,0xab1a,

0x6ca6,0x7c87,0x4ce4,0x5cc5,0x2c22,0x3c03,0x0c60,0x1c41,

0xedae,0xfd8f,0xcdec,0xddcd,0xad2a,0xbd0b,0x8d68,0x9d49,

0x7e97,0x6eb6,0x5ed5,0x4ef4,0x3e13,0x2e32,0x1e51,0x0e70,

0xff9f,0xefbe,0xdfdd,0xcffc,0xbf1b,0xaf3a,0x9f59,0x8f78,

0x9188,0x81a9,0xb1ca,0xa1eb,0xd10c,0xc12d,0xf14e,0xe16f,

0x1080,0x00a1,0x30c2,0x20e3,0x5004,0x4025,0x7046,0x6067,

0x83b9,0x9398,0xa3fb,0xb3da,0xc33d,0xd31c,0xe37f,0xf35e,

0x02b1,0x1290,0x22f3,0x32d2,0x4235,0x5214,0x6277,0x7256,

0xb5ea,0xa5cb,0x95a8,0x8589,0xf56e,0xe54f,0xd52c,0xc50d,

0x34e2,0x24c3,0x14a0,0x0481,0x7466,0x6447,0x5424,0x4405,

0xa7db,0xb7fa,0x8799,0x97b8,0xe75f,0xf77e,0xc71d,0xd73c,

0x26d3,0x36f2,0x0691,0x16b0,0x6657,0x7676,0x4615,0x5634,

0xd94c,0xc96d,0xf90e,0xe92f,0x99c8,0x89e9,0xb98a,0xa9ab,

0x5844,0x4865,0x7806,0x6827,0x18c0,0x08e1,0x3882,0x28a3,

0xcb7d,0xdb5c,0xeb3f,0xfb1e,0x8bf9,0x9bd8,0xabbb,0xbb9a,

0x4a75,0x5a54,0x6a37,0x7a16,0x0af1,0x1ad0,0x2ab3,0x3a92,

0xfd2e,0xed0f,0xdd6c,0xcd4d,0xbdaa,0xad8b,0x9de8,0x8dc9,

0x7c26,0x6c07,0x5c64,0x4c45,0x3ca2,0x2c83,0x1ce0,0x0cc1,

0xef1f,0xff3e,0xcf5d,0xdf7c,0xaf9b,0xbfba,0x8fd9,0x9ff8,

0x6e17,0x7e36,0x4e55,0x5e74,0x2e93,0x3eb2,0x0ed1,0x1ef0

};

 

unsignedshortcal_crc(unsignedchar*ptr,unsignedshortlen)

{

unsignedshortcrc;

unsignedcharda;

crc=0;

while(len--!

=0){

da=(unsignedchar)(crc/256);/*以8位二进制数的形式暂存CRC的高8位*/

crc<<=8;/*左移8位,相当于CRC的低8位乘以*/

crc^=crc_ta[da^*ptr];/*高8位和当前字节相加后再查表求CRC,再加上以前的CRC*/

ptr++;

}

return(crc);

}

上行报文的基本格式如下:

报文头

2字节

摄像头地址

1字节

报文类型

1字节

报文长度

2字节

状态

1字节

数据<(65536-9)

CRC校验码

2字节

状态:

1字节的状态字节,反映了摄像头的当前状态

D7

D6

D5

D4

D3

D2

D1

D0

=1图像数据大于64K,请求续传

=0正常

保留

保留

保留

保留

保留

保留

=1摄像头内部错误

=0正常

2、具体命令介绍

1、测试摄像头

命令类型:

0x01

命令长度:

0x0002

命令参数:

0x55aa

返回:

数据长度:

0x0002

数据内容:

0xaa55

举例:

发送到摄像头:

90eb0101020055aa0000

返回:

90eb01010200aa550000

2、拍照并传输图像数据

命令类型:

0x02

命令长度:

0x0002

命令参数:

字节1代表图像的分辨率,取值范围见下表

分辨率代码

分辨率

备注

1

160*120

2

128*96

3

320*240

4

128*160

5

640*480

6

1152*864

7

1280*960

字节2代表图像的压缩比,取值范围0-4,共5个等级,0时压缩比最小,图像效果最好。

返回:

注意:

该上行报文取消了摄像头状态字节,该字节被图象长度的第三字节取代,该字节和数据长度两字节一起形成一个三字节的数据长度。

数据长度:

压缩后图象数据的大小

数据内容:

压缩后的完整jpeg数据

举例:

命令

90eb0102020005010000

其中90eb为包头,01摄象头id,02为拍照命令,0200为参数长度,05为分辨率,01为压缩比,0000为crc16。

返回拍照数据

90eb0102042306ffd8……..

其中的042306三个字节代表照片的数据长度是394275字节,后面跟的数据。

3、设置对比度

命令类型:

0x03

命令长度:

0x0001

命令参数:

对比度大小,对比度值以0x80为中间值上下波动。

返回:

状态字节:

00

数据长度:

0x0001

数据内容:

设定的对比度值

4、设置亮度

命令类型:

0x04

命令长度:

0x0001

命令参数:

亮度大小,亮度值以0x80为中间值上下波动。

返回:

状态字节:

00

数据长度:

0x0001

数据内容:

设定的亮度值

5、拍照

命令类型:

0x05

命令长度:

0x0002

命令参数:

字节1代表图像的分辨率,取值范围见上表

字节2代表图像的压缩比,取值范围0-4,共5个等级,0时压缩比最小,图像效果最好。

返回:

状态字节:

D7=1;标识图像数据大于64K

数据长度:

0x0004

数据内容:

4字节压缩后图象数据的大小

6、传输图像数据

命令类型:

0x06

命令长度:

0x0000

命令参数:

返回:

状态字节:

D7=1;标识图像数据大于64K,需要紧跟一个获取后续数据的报文,才可以取得完整的图象数据

数据长度:

压缩后图象数据的大小

数据内容:

压缩后的完整jpeg数据

7、红外灯控制

命令类型:

0x08

命令长度:

0x0001

命令参数:

红外灯开关0x33=打开0xCC=关闭

返回:

数据长度:

0x0001

数据内容:

红外灯开关值

8、修改波特率参数

命令类型:

0x0a

命令长度:

0x0001

命令参数:

01=4800

02=9600

03=19200

04=19200

05=57600

06=57600

返回:

例:

需要设置9600的波特率,命令如下:

90EBID0A010002CRC1CRC2

其它的波特率需要定制,无特别说明默认的波特率是57600,该命令修改后的波特率不会被保存,重新上电以后仍然回到原来的波特率。

9、修改波特率参数并保存

命令类型:

0x0b

命令长度:

0x0002

命令参数:

01=4800

02=9600

03=19200

05=57600

注意:

能修改4种拨特率,波特率为其他的波特率时,是不能修改波特率的。

其它的波特率需要定制,无特别说明默认的波特率是57600

返回:

例:

需要设置9600的波特率,命令如下:

90EBID0B02000202CRC1CRC2

其它的波特率需要定制,无特别说明默认的波特率是57600

该命令修改后的波特率会被保存,重新上电后使用新的波特率。

10、修改摄像头ID标识

命令类型:

0x0d

命令长度:

0x0001

命令参数:

新的ID标识号,可以取值范围为1-255

返回:

数据长度:

0x0001

数据内容:

新的ID号

例:

需要设置ID=2时,命令如下:

90EB原来ID号0D010002CRC1CRC2

11、拍照并传输黑白图像数据

命令类型:

0x12

命令长度:

0x0002

命令参数:

字节1代表图像的分辨率,取值范围见下表

分辨率代码

分辨率

备注

0

128*120

1

160*120

2

128*96

3

320*240

4

128*160

5

640*480

6

1152*864

7

1280*960

字节2代表图像的压缩比,取值范围0-4,共5个等级,0时压缩比最小,图像效果最好。

返回:

注意:

该上行报文取消了摄像头状态字节,该字节被图象长度的第三字节取代,该字节和数据长度两字节一起形成一个三字节的数据长度。

数据长度:

压缩后图象数据的大小

数据内容:

压缩后的完整jpeg数据

举例:

90eb0102042306020000

其中的042306三个字节代表数据长度394275字节的数据长度

12、分包传输图像数据时请求拍照命令

命令类型:

0x30

命令长度:

0x0000

命令参数:

返回:

拍照成功后返回图像数据的大小,一共4个字节,低字节在前。

数据长度:

0x0005

例:

需要拍照时,命令如下:

90EBID号300000CRC1CRC2

返回:

90EBID号300700状态字节LEN1LEN2LEN3LEN4PLEN11PLEN2CRC1CRC2

比如命令为

90eb013000000000

返回

90EB0130070000793600001C00724E

其中0700为字节长度,00为状态字节,79360000为照片数据大小,1C00为包的数目,724E为CRC.

13、请求按分包传输图像数据

命令类型:

0x31

命令长度:

0x0002

命令参数:

请求的图像数据包号,占两个字节,最大可达65536个数据包

返回:

返回指定包的图像数据的大小

数据长度:

数据内容:

图像数据

例:

请求包号1的命令如下:

90EBID号3102000100CRC1CRC2

返回:

90EBID号31命令长度1命令长度2状态字节包号L包号H数据CRC1CRC2

返回的命令长度=指定包数据+包号2字节+状态1字节,如果不是最后一个包,包数据大小就是包长度。

按分包传输图像数据时,必须先发送分包拍照命令(0x30),拍照成功后必须从0包顺序传递,不可以随机传送任意包号的数据。

14、设置分包传输图像数据时的包大小,默认是512字节

命令类型:

0x32

命令长度:

0x0002

命令参数:

数据包大小,占两个字节,包大小必须是128的整数倍,如12825651210242048等

返回:

返回指定包的图像数据的大小

数据长度:

0x0003

数据内容:

新的数据包大小

例:

设定512包的命令如下:

90EBID号3202000002CRC1CRC2

返回:

90EBID号320300STA0002CRC1CRC2

15、设置分包拍照的默认图像分辨率

命令类型:

0x34

命令长度:

0x0001

命令参数:

图像分辨率代码,见下表

分辨率代码

分辨率

备注

1

160*120

3

320*240

5

640*480

7

1280*960

返回:

返回指定包的图像数据的大小

数据长度:

0x0002

数据内容:

新的数据包大小

例:

设定640×480的命令如下:

90EBID号34010005CRC1CRC2

返回:

90EBID号340200STA05CRC1CRC2

图示2:

分包传输时一幅完整图片采集流程1

注意:

此流程仅供参考,设计中应包含但不限于如下流程,即对一下采集流程兼容。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2