[发明专利]一种基于3G网络的无线监视系统无效
申请号: | 201110311191.X | 申请日: | 2011-10-14 |
公开(公告)号: | CN102333208A | 公开(公告)日: | 2012-01-25 |
发明(设计)人: | 刘斐然 | 申请(专利权)人: | 浪潮电子信息产业股份有限公司 |
主分类号: | H04N7/18 | 分类号: | H04N7/18 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 250014 山东*** | 国省代码: | 山东;37 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 3g 网络 无线 监视 系统 | ||
1.一种基于3G网络的无线监视系统, 其特征在于利用ARM9处理器与3G网路可移动与便捷的特性,利用ARM9的嵌入式系统实现视频传输与显示功能,利用linux 2.6.30.4内核,通过3G网络,将USB摄像头采集的视频信号传输到远程终端并显示,搭建成无线视频监视系统,硬件包括:芯片:S3C2440A;LCD:东华3.5寸触摸屏;USB摄像头:Venus USB 2.0 Camera;3G卡:华为EC1260;
具体步骤如下:
1)ARM9制版,采用任何结构的核心板,并扩展出USB接口;
2) BootLoader与linux内核的移植,其中BootLoader用开源版本,linux移植用arm9的默认配置文件进行编译;
3)USB摄像头驱动:其具体步骤为:
(1)进入驱动Linux源文件目录下,打开文件drivers/media/video/uvc/ uvc_driver.c;
(2)将被声明为usb_device_id的结构体数组uvc_ids[]中添加一个结构体,其个元素数据如下:
{.match_flags=USB_DEVICE_ID_MATCH_VENDOR|
USB_DEVICE_ID_MATCH_INT_INFO,
.idVendor = 0x0ac8,
.idProduct = 0x3430,
.bInterfaceClass = USB_CLASS_VIDEO,
.bInterfaceSubClass = 1,
.bInterfaceProtocol = 0,
.driver_info = UVC_QUIRK_FIX_BANDWIDTH },
(3)保存并重新编译模块:make modules
(4)把驱动文件uvcvideo.ko下载到ARM9系统中并加载:modprobe uvcvideo.ko;
4)3G卡EC1260驱动,具体步骤如下:
把PPP功能配置到内核中:
Device Drivers--->
[*]Network device support--->
<M> PPP (point-to-point protocol)Support
[*]PPP multilink support (EXPERIMENTAL)
[*]PPP filtering
<M>PPP support for async serial ports
<M>PPP support for sync tty ports
<M>PPP Deflate compression
< >PPP BSD-Compress compression
<M>PPP MPPE compression (encryption) (EXPERIMENTAL)
<M>PPP over Ethernet (EXPERIMENTAL)
< >PPP over ATM
< >PPP over L2TP (EXPERIMENTAL)
[*]USB support--->
<M>USB Serial Converter support--->
<M> USB driver for GSM and CDMA modems
重新编译内核,插入驱动文件usbserial.ko,option.ko,此时插入华为EC1260 网卡,系统直接驱动,并且在/dev/目录中出现ttyUSBX设备文件;
5)视频采集与发送软件编写,其处理过程为:
(1)开启TCP端口并监听:
struct sockaddr_in serv_addr; /* 本机地址信息 */
struct sockaddr_in client_addr; /* 客户地址信息 */
server_sockfd = socket(PF_INET, SOCK_STREAM, 0));
bzero(&serv_addr, sizeof(serv_addr));
bzero(&client_addr, sizeof(client_addr));
serv_addr.sin_family=PF_INET;
serv_addr.sin_port=htons(server_port);
serv_addr.sin_addr.s_addr = INADDR_ANY;
if (bind(server_sockfd, (struct sockaddr *)&serv_addr, sizeof(struct sockaddr)) == -1) {
perror(Tcp bind);
exit(1);}
if (listen(server_sockfd, 10) == -1) {
perror(Tcp listen);
exit(1);}
(2)如有连接则用UDP采集与发送视频信息:
client_sockfd = accept(server_sockfd, (struct sockaddr *)&client_addr, &client_size);
…….
sockfd = socket(AF_INET, SOCK_DGRAM, 0);
ret = open_video(V4L_FILE, &vd, 8, VIDEO_PALETTE_JPEG, 320, 240);
if(ret != 0) goto err;
while(1)
{
imageptr = get_frame_address(&vd);
get_first_frame(&vd);
memcpy(buffer,imageptr,MAX_BUFF);
cnt = sendto(sockfd, buffer,MAX_BUFF, 0, (struct sockaddr *)&servaddr, sizeof(servaddr));
usleep(30000);
}
6)视频接收与显示软件的编写,其主要与处理过程为:
(1)用TCP连接视频监控系统,为控制线程:
tcpsockfd = socket(PF_INET, SOCK_STREAM, 0);
if (connect(tcpsockfd, (struct sockaddr *)&servaddr, sizeof(servaddr)) == -1) {
perror(tcp connect);
exit(1);}
(2)用UDP接收数据并显示,为传输线程:
sockfd=socket(AF_INET,SOCK_DGRAM,0);
bind(sockfd,(struct sockaddr *)&servaddr,sizeof(servaddr));
while(1)
{
recvfrom(sockfd,buffer,MAX_BUFF,0,(struct sockaddr *)&servaddr,sizeof(servaddr));
showpic(buffer,&vd);
}
其中showpic函数为在LCD中显示图像,其利用了libjpeg库,并对其做了优化,使其直接读写内存而不经过文件系统,使其效率提升了至少一倍:
int showpic(char *imageptr,fb_v4l *vd)
{
struct jpeg_decompress_struct cinfo;
struct jpeg_error_mgr jerr;
int x,y;
unsigned char *buffer;
unsigned short *tempbuf;
cinfo.err = jpeg_std_error(&jerr);
jpeg_create_decompress(&cinfo);
jpeg_stdio_src(&cinfo,imageptr,MAX_BUFF);
(void)jpeg_read_header(&cinfo,TRUE);
(void) jpeg_start_decompress(&cinfo);
buffer = (unsigned char *) malloc(320*3);
tempbuf = (unsigned short *) malloc(320*240*2);
y =0 ;
while(cinfo.output_scanline < cinfo.output_height)
{
jpeg_read_scanlines(&cinfo, &buffer, 1);
unsigned short color;
for ( x = 0; x < cinfo.output_width; x++)
{ color=RGB888toRGB565(buffer[x*3],buffer[x*3+1],buffer[x*3+2]);
fb_pixel(tempbuf,320,240,x,y,color);
}
y++;
}
memcpy(vd->fbp,(char *)tempbuf,320*240*2);
jpeg_finish_decompress(&cinfo);
jpeg_destroy_decompress(&cinfo);
free(buffer);
free(tempbuf);
}。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于浪潮电子信息产业股份有限公司,未经浪潮电子信息产业股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201110311191.X/1.html,转载请声明来源钻瓜专利网。
- 上一篇:地表反射率计算方法和装置
- 下一篇:治疗尿毒症血液灌流器