亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? main1.c

?? 在基于ARM處理器的Liunx系統下的開放板上實現攝像頭圖像采集
?? C
字號:
/*能成功實現USB攝像頭視頻采集,并且在LCD上實時顯示,另外還添加了GPRS功能,將兩個小數發送到手機上面*/#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <math.h>#include <errno.h>#include <fcntl.h>#include <string.h>#include <signal.h>#include <pthread.h>#include <sched.h>#include <sys/types.h>#include <sys/time.h>#include <sys/ioctl.h>#include <sys/stat.h>#include <sys/mman.h>#include <termios.h>#include "fb.h"#include "videodev.h"#include "grab-ng.h"#include "uart.c"#define _GNU_SOURCE#include <getopt.h>struct capture_info{	int width, height;	char device[256];};struct fb_dev{	//for frame buffer	int fb;	void *fb_mem;	//frame buffer mmap	int fb_width, fb_height, fb_line_len, fb_size;	int fb_bpp;	//src must be RGB24 format	void (*fb_draw)(struct fb_dev *fbdev, void* src, int x, int y, int width, int height);};static char *default_framebuffer="/dev/fb0";static struct capture_info capinfo={320, 240, "/dev/v4l/video0"};static struct fb_dev fbdev;static char* fb_dev_name=NULL;void send_gprs();#define NUM_CAPBUFFER	32void fb_draw16bpp(struct fb_dev *fbdev, void* src, int x, int y, int width, int height){	int i, j;	int fb_line_len = fbdev->fb_line_len;	__u8 *psrc= (__u8*)src;	__u16* pdsc = (__u16*)fbdev->fb_mem;	__u16 tmp, tmp1;	pdsc+=y*fb_line_len/2 + x;	for(i=0; i<height; i++){		for(j=0; j<width; j++){			/*			tmp = (*psrc)>>3;		tmp<<=11;	*psrc++;		//this is for GIGEND----PC			tmp1 = (*psrc)>>2;	tmp|=(tmp1<<5);	*psrc++;			tmp |= (*psrc)>>3;	*psrc++;			pdsc[j] = tmp;			*/			//this is for little end ----ARM			tmp = (*psrc)>>3;		tmp<<=0;	*psrc++;			//BLUE			tmp1 = (*psrc)>>2;	tmp|=(tmp1<<5);	*psrc++;		//GREEN			tmp |=(((*psrc)>>3) << 11);	*psrc++;					//RED			pdsc[j] = tmp;		}		pdsc+=fb_line_len/2;	}}void fb_draw12bpp(struct fb_dev *fbdev, void* src, int x, int y, int width, int height){	int i, j;	int fb_line_len = fbdev->fb_line_len;	__u8 *psrc= (__u8*)src;	__u8* pdsc = (__u8*)fbdev->fb_mem;	__u8 tmp;	//fixed me! x must be even	pdsc+=y*fb_line_len + x*3/2;	for(i=0; i<height; i++){		for(j=0; j<width*3/2;){			tmp = psrc[2]&0xf0;			tmp |=(psrc[1]>>4);			pdsc[j++] = tmp;			tmp = psrc[0]&0xf0;			tmp |=(psrc[5]>>4);			pdsc[j++] = tmp;			tmp = psrc[4]&0xf0;			tmp |=(psrc[3]>>4);			pdsc[j++] = tmp;			psrc+=6;		}		pdsc+=fb_line_len;	}}int framebuffer_open(void){	int fb;	struct fb_var_screeninfo fb_vinfo;	struct fb_fix_screeninfo fb_finfo;		if (!fb_dev_name && !(fb_dev_name = getenv("FRAMEBUFFER")))		fb_dev_name=default_framebuffer;	fb = open (fb_dev_name, O_RDWR);	if(fb<0){		printf("device %s open failed\n", fb_dev_name);		return -1;	}		if (ioctl(fb, FBIOGET_VSCREENINFO, &fb_vinfo)) {		printf("Can't get VSCREENINFO: %s\n", strerror(errno));		close(fb);		return -1;	}	if (ioctl(fb, FBIOGET_FSCREENINFO, &fb_finfo)) {		printf("Can't get FSCREENINFO: %s\n", strerror(errno));		return 1;	}	fbdev.fb_bpp = fb_vinfo.red.length + fb_vinfo.green.length +		fb_vinfo.blue.length + fb_vinfo.transp.length;	fbdev.fb_width = fb_vinfo.xres;	fbdev.fb_height = fb_vinfo.yres;	fbdev.fb_line_len = fb_finfo.line_length;	fbdev.fb_size = fb_finfo.smem_len;	printf("frame buffer: %dx%d,  %dbpp, 0x%xbyte\n", 		fbdev.fb_width, fbdev.fb_height, fbdev.fb_bpp, fbdev.fb_size);	switch(fbdev.fb_bpp){	case 16:		fbdev.fb_draw = fb_draw16bpp;		break;	case 12:		fbdev.fb_draw = fb_draw12bpp;		break;	default:		printf("Can't support %d bpp draw\n", fbdev.fb_bpp);		return -1;	}	fbdev.fb_mem = mmap (NULL, fbdev.fb_size, PROT_READ|PROT_WRITE,MAP_SHARED,fb,0);	if(fbdev.fb_mem==NULL || (int)fbdev.fb_mem==-1){		fbdev.fb_mem=NULL;		printf("mmap failed\n");		close(fb);		return -1;	}	fbdev.fb=fb;	memset (fbdev.fb_mem, 0x0, fbdev.fb_size);    return 0;}void framebuffer_close(){	if(fbdev.fb_mem){		munmap(fbdev.fb_mem, fbdev.fb_size);		fbdev.fb_mem=NULL;	}	if(fbdev.fb){		close(fbdev.fb);		fbdev.fb=0;	}}int capture(){	void* caphandle;	struct ng_vid_driver *cap_driver = &v4l_driver;	struct ng_video_fmt fmt;	fmt.fmtid = VIDEO_BGR24;	fmt.width = capinfo.width;	fmt.height = capinfo.height;	if(framebuffer_open()<0){		return -1;	}	caphandle=cap_driver->open(capinfo.device);	if(!caphandle){		printf("failed to open video for linux interface!\n");		return -1;	}	if(cap_driver->setformat(caphandle, &fmt)){		printf("failed to set video format!\n");		return -1;	}	cap_driver->startvideo(caphandle, 25,  NUM_CAPBUFFER);	{		struct ng_video_buf* pvideo_buf;		int x, y, width, height;		int diff_width, diff_height;		diff_width = fbdev.fb_width - fmt.width;		diff_height = fbdev.fb_height - fmt.height;		if(diff_width>0){			x =  diff_width/2;			width = fmt.width;		}		else{			x = 0;			width = fbdev.fb_width;		}		if(diff_height>0){			y =  diff_height/2;			height = fmt.height;		}		else{			y = 0;			height = fbdev.fb_height;		}		//begin capture		while(1){			pvideo_buf=cap_driver->nextframe(caphandle);			fbdev.fb_draw(&fbdev, pvideo_buf->data, x, y, width, height);			ng_release_video_buf(pvideo_buf);					}	}	framebuffer_close();	cap_driver->stopvideo(caphandle);	cap_driver->close(caphandle);	return 0;}const char*program_name; void print_usage (FILE*stream,int exit_code){ 	fprintf (stream, "Usage:%s options [ inputfile ....]\n",program_name); 	fprintf (stream, "-h --help Display this usage information.\n"		"-d --device <video device>.\n "		"-f --framebuffer <frame buffer device>.\n "		"-v --verbose <n>.\n "		"-s --size <320:240>\n");	exit (exit_code); } void send_gprs(){	int fdcom, i, SendLen,p1_length,p2_length,p3_length;	double x=1.22;double y=21.32;	struct termios termios_cur;	//char RecvBuf[10];	char *p1="AT\r\n";	char *p2="AT+CMGF=1\r\n";	char *p3="AT+CMGS=15123365525\r\n";		p1_length=strlen(p1);	p2_length=strlen(p2);	p3_length=strlen(p3);	fdcom = PortOpen(&portinfo);	if(fdcom<0){		printf("Error: open serial port error.\n");		exit(1);	}	PortSet(fdcom, &portinfo);	SendLen = PortSend(fdcom, p1, p1_length);	if(SendLen>0){				printf("No %d send %d data information.\n", i, SendLen);			}			else{				printf("Error: send failed.\n");			}	SendLen = PortSend(fdcom, p2, p2_length);	if(SendLen>0){				printf("No %d send %d data information.\n", i, SendLen);			}			else{				printf("Error: send failed.\n");			}	SendLen = PortSend(fdcom, p3, p3_length);	if(SendLen>0){				printf("No %d send %d data information.\n", i, SendLen);			}			else{				printf("Error: send failed.\n");			}	char *info_x,*info_y;	int decpt,sign;	gcvt(x,5,info_x);    info_x_length=strlen(info_x);	gcvt(y,5,info_y);	PortSend(fdcom, info_x, info_x_length);	strcat(info_y,"/x1a");	info_y_length=strlen(info_y);	SendLen = PortSend(fdcom, info_y, info_y_length);	if(SendLen>0){				printf("No %d send %d data information.\n", i, SendLen);			}			else{				printf("Error: send failed.\n");			}	sleep(1000);}static int verbose =0;int main (int argc,char*argv []) { 	int next_option; 	const char*const short_options ="hd:v:f:s:";	const struct option long_options [] ={		{"help",0,NULL,'h' }, 		{"device",1,NULL,'d' }, 		{"framebuffer",1,NULL,'f' }, 		{"verbose",1,NULL,'v' }, 		{"size",0,NULL,'s' }, 		{NULL,0,NULL,0 }}; 	const char*output_filename =NULL; 	program_name =argv [0]; 	do { 		next_option =getopt_long (argc,argv,short_options, long_options,NULL); 		switch (next_option) 		{ 		case 'h':/*-h or --help */ 			print_usage (stdout,0); 		case 's':/*-s or --size */ 			//ip =optarg; 			sscanf(optarg, "%d:%d", &(capinfo.width), &(capinfo.height));			break; 		case 'f':/*-f or --framebuffer */ 			fb_dev_name = optarg;			break; 		case 'd':/*-b or --device */ 			strcpy(capinfo.device, optarg);			break; 		case 'v':/*-v or --verbose */ 			sscanf(optarg, "%d", &verbose);			ng_debug = verbose;			break; 		case '?':/*The user specified an invalid option.*/ 			print_usage (stderr,1); 		case -1:/*Done with options.*/ 			break; 		default:/*Something else:unexpected.*/ 			print_usage (stderr,1); 		}	}while (next_option !=-1);      printf("video %s caputure: %dx%d\n", capinfo.device, capinfo.width, capinfo.height);	pthread_t thread_id1,thread_id2;	pthread_attr_t attr;	struct sched_param param;    pthread_attr_init(&attr);    pthread_attr_getschedparam(&attr,&param);    pthread_create(&thread_id2,&attr,(void*)&send_gprs,NULL);    param.sched_priority++;	pthread_attr_setschedparam(&attr,&param);    pthread_create(&thread_id1,&attr,(void*)&capture,NULL);    pthread_join(thread_id1,NULL);    pthread_join(thread_id2,NULL);	return capture();} 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美国产精品中文字幕| 国产精品嫩草影院av蜜臀| 国产剧情一区二区| 一区二区三区中文免费| 精品毛片乱码1区2区3区| 成人激情图片网| 成人教育av在线| 蜜臀av在线播放一区二区三区| 中文字幕在线一区二区三区| 日韩欧美在线1卡| 91美女视频网站| 韩国v欧美v日本v亚洲v| 亚洲成人在线观看视频| 国产精品婷婷午夜在线观看| 日韩精品在线一区二区| 欧美视频在线观看一区| av电影在线观看一区| 另类欧美日韩国产在线| 亚洲第一福利一区| 一区二区三区在线视频观看| 国产精品私人影院| 欧美激情综合五月色丁香小说| 6080yy午夜一二三区久久| 在线观看一区日韩| 91视频一区二区三区| 国产精选一区二区三区| 久久精品av麻豆的观看方式| 亚洲成av人片一区二区三区| 亚洲欧美综合网| 欧美激情一区二区三区不卡 | 婷婷一区二区三区| 一区二区在线观看视频在线观看| 亚洲图片激情小说| 亚洲欧洲日韩综合一区二区| 国产精品国产三级国产普通话三级 | 国产成人av电影在线| 韩国欧美一区二区| 国内精品免费**视频| 麻豆精品新av中文字幕| 美女脱光内衣内裤视频久久网站| 人人精品人人爱| 奇米影视一区二区三区小说| 奇米色一区二区三区四区| 免费观看91视频大全| 六月丁香婷婷久久| 麻豆国产精品一区二区三区| 久久国产视频网| 激情五月播播久久久精品| 国产精品资源网站| 成人免费高清在线| 色婷婷av久久久久久久| 精品视频一区三区九区| 9191久久久久久久久久久| 欧美一区二区三区思思人| 欧美va亚洲va| 国产情人综合久久777777| 国产精品欧美精品| 亚洲三级电影网站| 三级欧美韩日大片在线看| 日本女人一区二区三区| 国内精品伊人久久久久av影院| 国产成人免费高清| 91亚洲男人天堂| 欧美日韩一区二区在线视频| 日韩视频在线你懂得| 久久蜜臀中文字幕| 日韩黄色小视频| 国产传媒欧美日韩成人| 不卡视频免费播放| 欧美日韩国产影片| 26uuu亚洲综合色| 欧美激情一区二区三区不卡 | 国产一区二区三区精品欧美日韩一区二区三区 | 欧美福利一区二区| 欧美va日韩va| 亚洲特黄一级片| 日本不卡不码高清免费观看| 国产丶欧美丶日本不卡视频| 欧美三区在线视频| www日韩大片| 亚洲一区二区在线观看视频| 日韩主播视频在线| 粉嫩欧美一区二区三区高清影视| 色婷婷综合久久久久中文| 日韩网站在线看片你懂的| 中文字幕一区二区日韩精品绯色| 亚洲3atv精品一区二区三区| 国产福利不卡视频| 欧美日韩电影一区| 中文在线一区二区| 日本午夜精品一区二区三区电影| 福利一区二区在线| 日韩亚洲欧美综合| 亚洲欧洲精品一区二区三区不卡| 男女男精品视频网| 色偷偷久久一区二区三区| 精品久久久久久久人人人人传媒| 亚洲精品日韩综合观看成人91| 黄色成人免费在线| 欧美日韩国产精品成人| 中文字幕视频一区二区三区久| 精品中文字幕一区二区| 欧美图区在线视频| 国产精品视频你懂的| 久久国产夜色精品鲁鲁99| 欧美性色黄大片手机版| 欧美高清在线视频| 色94色欧美sute亚洲线路一久 | 一区二区视频在线| 国产一区二区伦理| 宅男在线国产精品| 夜夜爽夜夜爽精品视频| 波多野洁衣一区| 久久久久久免费网| 精品一区二区三区的国产在线播放| 欧美日韩免费不卡视频一区二区三区| 国产精品高潮呻吟| 国产风韵犹存在线视精品| 精品国产亚洲在线| 蜜臀国产一区二区三区在线播放| 欧美日产国产精品| 亚洲成a人片综合在线| 欧美专区亚洲专区| 亚洲男人电影天堂| 99精品视频中文字幕| 国产午夜精品一区二区| 黄页视频在线91| 精品国产91洋老外米糕| 久久er99精品| 精品久久人人做人人爽| 久久不见久久见免费视频1| 欧美一区二视频| 久色婷婷小香蕉久久| 日韩一区二区电影| 麻豆91在线看| 精品国产乱子伦一区| 精品无人码麻豆乱码1区2区| 欧美tickle裸体挠脚心vk| 经典三级一区二区| 久久久综合九色合综国产精品| 韩国av一区二区三区在线观看| 久久久午夜电影| 国产aⅴ综合色| 中文字幕av在线一区二区三区| 成人av在线观| 一区二区三区色| 欧美日韩免费一区二区三区| 蜜臀国产一区二区三区在线播放 | 国产蜜臀97一区二区三区| 国产成人精品亚洲777人妖| 国产欧美精品区一区二区三区 | 精品国产乱码久久久久久浪潮 | 最新国产成人在线观看| 91丨九色丨黑人外教| 一级精品视频在线观看宜春院| 欧美亚洲精品一区| 日韩中文字幕91| 精品国产第一区二区三区观看体验| 国产在线看一区| 《视频一区视频二区| 在线精品视频免费播放| 奇米影视7777精品一区二区| 2020国产精品自拍| a美女胸又www黄视频久久| 一区二区在线观看免费视频播放| 欧美高清dvd| 国产一区二区三区综合| 亚洲女子a中天字幕| 欧美蜜桃一区二区三区| 国产在线麻豆精品观看| 亚洲乱码精品一二三四区日韩在线| 欧美乱妇15p| 成人夜色视频网站在线观看| 亚洲精品伦理在线| 日韩免费观看高清完整版在线观看| 国产精品亚洲视频| 亚洲综合丝袜美腿| 精品久久国产97色综合| 99国产精品久久久久久久久久| 亚洲图片欧美综合| 久久久久久久久久美女| 91看片淫黄大片一级在线观看| 美日韩一区二区| 亚洲美女少妇撒尿| 日韩一区二区免费视频| 99热在这里有精品免费| 蜜桃视频一区二区| 亚洲精品免费一二三区| 欧美精品一区二区高清在线观看| 97se狠狠狠综合亚洲狠狠| 日本视频中文字幕一区二区三区 | 日本女人一区二区三区| 国产亚洲精品bt天堂精选| 欧美日免费三级在线| 国产激情91久久精品导航| 五月婷婷欧美视频| 专区另类欧美日韩| 精品久久人人做人人爽| 欧美日韩高清影院| av高清久久久|