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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? con-flow.c

?? minigui的部分界面實(shí)現(xiàn)
?? C
?? 第 1 頁(yè) / 共 5 頁(yè)
字號(hào):
/* 
** $Id: Con-flow.c,v 1.0 2008/03/19 PanChx $
**
** --右上鍵;+-右下鍵;NumLock-左上鍵;/-左下鍵
** 
**                        
** Copyright (C) 2004 Feynman Software.
**
** License: GPL
*/

#include <stdlib.h>
#include <stdarg.h>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>
#include <termios.h> 

#include <sys/stat.h>
#include <sys/time.h>
#include <sys/types.h>
#include <unistd.h>
#include <pwd.h>
#include <errno.h>
#include <sys/wait.h>
#include <linux/types.h>
#include <linux/videodev.h>
#include <sys/mman.h>
#include <sys/ioctl.h>
#include <sys/file.h>
#include <fcntl.h>
#include <pthread.h>

#include <minigui/common.h>
#include <minigui/minigui.h>
#include <minigui/gdi.h>
#include <minigui/window.h>
#include <minigui/control.h>
#include <minigui/minigui.h>
#include "con-flow.h"

//打開(kāi)串口
int open_serial_modem(char *SerialPort)
{
//	"/dev/ttyS0", "/dev/stS0", "/dev/stS1", "/dev/stS2", 
    //打開(kāi)串口
    int serial_port = -1;
    serial_port = open((const char *)SerialPort, O_RDWR);
	if (-1 == serial_port)
	{ 
		printf("\t!!!serial open error!!!\n");
	}
	return serial_port;
}
//關(guān)閉串口
int close_serial_modem(int serial_port)
{
    close(serial_port);
	serial_port = 0;
	return 0;
}

//進(jìn)行撥號(hào)
void dial_number(int serial_port)
{
	write(serial_port, "ATD15953169608;\x0d", 16);
}

//掛斷電話
void hangup(int serial_port)
{
	write(serial_port, "ATH\x0d", 4);
}
//設(shè)置串口波特率
int config_serial_port(int serial_port, speed_t speed)
{
    //得到串口結(jié)構(gòu)
	tcgetattr(serial_port, &Opt);
    //設(shè)置輸入波特率
	cfsetispeed(&Opt, speed);
	//設(shè)置輸出波特率
	cfsetospeed(&Opt, speed);
    //以立即生效的方式設(shè)置串口結(jié)構(gòu)
	tcsetattr(serial_port,TCSANOW, &Opt);
    //設(shè)置控制標(biāo)志前的屏蔽
	Opt.c_cflag &= ~CSIZE;
	/*8 bit data*/
	Opt.c_cflag |= CS8;
	//允許輸出產(chǎn)生奇偶信息以及輸入的奇偶校驗(yàn)
	Opt.c_cflag &= ~PARENB;
	/*1 stop bit*/
	Opt.c_cflag &= ~CSTOPB;

	/*RAW mode*/
	/*ICANON起用標(biāo)準(zhǔn)模式,允許使用特殊字符EOF,EOL,EOL2,ERASE,KILL,LNEXT
	  ECHO:回顯輸入字符
	  ECHOE:如果同時(shí)設(shè)置了ICANON,字符ERASE擦除前一個(gè)輸入字符,WERASE擦除前一個(gè)詞
	  ISIG:當(dāng)接受到字符INTR,QUIT,SUSP或DSUSP時(shí),產(chǎn)生相應(yīng)的信號(hào)*/
	Opt.c_lflag &= ~(ICANON | ECHO | ECHOE | ISIG);  /*Input*/
	/*Output*/
	/*啟用具體實(shí)現(xiàn)自行定義的輸出處理,其余c_oflag標(biāo)志常量定義在POSIX1003.1-2001中,除非另外說(shuō)明*/
	Opt.c_oflag &= ~OPOST;   
    //控制字符VTIME:非canonical模式讀時(shí)的延時(shí),以十分之一秒為單位
	Opt.c_cc[VTIME] = 8;
	//VMIN非canonical模式讀的最小字符數(shù)
	Opt.c_cc[VMIN] = 2;
    //丟棄要寫入引用的對(duì)象,但是尚未傳輸?shù)臄?shù)據(jù),或者收到但是尚未讀取的數(shù)據(jù),取決于queue_selector的值。
    /*TCIFLUSH:刷新收到的數(shù)據(jù)但是不讀*/
	tcflush(serial_port, TCIFLUSH);
	//設(shè)置與終端相關(guān)的參數(shù)(除非需要底層支持卻無(wú)法滿足),使用termios_p引用的termios結(jié)構(gòu)
	tcsetattr(serial_port, TCSANOW, &Opt);

	return 0;
}
//檢測(cè)信號(hào)質(zhì)量
void check_signalquality(int serial_port)
{
	write(serial_port, "AT+csq\x0d", 7);
}

/*把共享緩沖區(qū)中的數(shù)據(jù)放到一個(gè)變量中,通知系統(tǒng)已獲得一幀
  dst:目的地址
  src:源地址*/
int convertframe(unsigned char *dst,unsigned char *src, int formatIn, int size)
{ 
	int jpegsize =0;
	switch (formatIn)
	{
	case VIDEO_PALETTE_JPEG:
		jpegsize = get_jpegsize(src, size);
		if (jpegsize < 0) 
			break;
		memcpy(dst,src,jpegsize);	
		break;
	default:
		break;
	}

	return jpegsize;
}

void exit_fatal(char *messages)
{
	printf("%s \n",messages);
	exit(1);
}
//獲取顏色深度
static int GetDepth (int format)
{
	int depth;
	switch (format) 
	{
	case VIDEO_PALETTE_JPEG:
		depth = 8;		

		break;
	default:
		depth = -1;
		break;
	}

	return depth;
}
//測(cè)試芯片類型
static int isSpcaChip (const char *BridgeName)
{
	int i = -1;
	int find = -1;
	int size = 0;

	for (i = 0; i < MAX_BRIDGE -1; i++)
	{
		size = strlen (Blist[i].name) ;
		if (strncmp (BridgeName, Blist[i].name, size) == 0) 
		{
			find = i;
			break;
		}
	}

	return find;
}

//測(cè)試輸出數(shù)據(jù)格式
static int GetStreamId (const char *BridgeName)
{
	int i = -1;
	int match = -1;
	if ((match = isSpcaChip (BridgeName)) < 0)
	{
		return match;
 	}

	switch (match)
	{
	case BRIDGE_ZC3XX:
		i = JPEG;
		break;
	}

	return i;
}

static int SetVideoPict (struct vdIn *vd)
{
    //VIDIOCSPICT:設(shè)置圖片屬性
	if (ioctl (vd->fd, VIDIOCSPICT, &vd->videopict) < 0)
		exit_fatal ("Couldnt set videopict params with VIDIOCSPICT");

	return 0;
}

//獲取jpeg圖片大小
int get_jpegsize (unsigned char *buf, int insize)
{
	int i; 	

    /*jpeg圖片的8個(gè)標(biāo)記:SOI  0xD8      圖象開(kāi)始;
                        APPO 0xE0      JEIF 應(yīng)用數(shù)據(jù)塊
                        APPn 0xE1-0xEF 其它得應(yīng)用數(shù)據(jù)塊(n,1~15)
                        DQT  0xDB      量化表
                        SOF0 0xC0   幀開(kāi)始 
                        DHT 0xC4   霍夫曼(Huffman)表 
                        SOS 0xDA   掃描線開(kāi)始 
                        EOI  0xD9   圖像結(jié)束
    每一幀緩沖區(qū)的最開(kāi)頭四個(gè)字節(jié)為ff d8 ff d9,然后是圖象大小*/
	for (i = 1024 ; i < insize; i++) 
	{
		if ((buf[i] == 0xFF) && (buf[i+1] == 0xD9))
			return i+2;
	}

	return -1;
}


static int GetVideoPict (struct vdIn *vd)
{
    /* VIDIOCGPICT:Get picture properties */
	if (ioctl (vd->fd, VIDIOCGPICT, &vd->videopict) < 0)
		exit_fatal ("Couldnt get videopict params with VIDIOCGPICT");

	return 0;
}
//從攝像頭采集圖片
int v4lGrab(struct vdIn *vd, BITMAP * bitmap_stru)
{
	int len;
	int size;
	int erreur = 0;
	int jpegsize = 0;
	FILE *f;

	/* read method */
	size = vd->framesizeIn;

    //從vd->fd中讀取size個(gè)字節(jié)到vd->pFramebuffer中
	len = read (vd->fd, vd->pFramebuffer, size);
	if (len < 0 ) 
	{
		perror("read error");
		return  0;
	}

	jpegsize= convertframe(vd->ptframe,	vd->pFramebuffer ,vd->formatIn,vd->framesizeIn); 
	printf("jpegsize = %x\n",jpegsize);

	len = LoadBitmapFromMem(HDC_SCREEN, bitmap_stru, vd->ptframe, jpegsize, "jpg");

    if(0!=len)
	{
        printf("LoadBitmapFromMem return failure%d,h=%x,w=%x\n",len,bitmap_stru->bmHeight,bitmap_stru->bmWidth);
	}
	return 1;		
}

//初始化視頻設(shè)備
static int init_v4l (struct vdIn *vd)
{
	int erreur = 0;

    //打開(kāi)端口
	if ((vd->fd = open (vd->videodevice, O_RDWR)) == -1)
		exit_fatal ("ERROR opening V4L interface");

    //打開(kāi)設(shè)備能力
	if (ioctl (vd->fd, VIDIOCGCAP, &(vd->videocap)) == -1)
		exit_fatal ("Couldn't get videodevice capability");

	snprintf (vd->cameraname, 32, "%s", vd->videocap.name);
    //得到圖片屬性
	erreur = GetVideoPict (vd);

    /* Get channel info (sources) */
	if (ioctl (vd->fd, VIDIOCGCHAN, &vd->videochan) == -1) 
	{
		vd->cameratype = UNOW;
	} 
	else 
	{
		if (vd->videochan.name)
		{
			snprintf (vd->bridge, 9, "%s", vd->videochan.name);
			vd->cameratype = GetStreamId (vd->bridge);
		} 
		else 
		{
			vd->cameratype = UNOW;
		}
	}

	/* Only jpeg webcam allowed */
	if(vd->cameratype != JPEG) 
	{
		exit_fatal ("Not a JPEG webcam sorry Abort !");
	}
	//palette:palette in use
	vd->videopict.palette = vd->formatIn;
	//Capture depth
	vd->videopict.depth = GetDepth (vd->formatIn);
	vd->bppIn = GetDepth (vd->formatIn);
	//寬*高*4
	vd->framesizeIn = (vd->hdrwidth * vd->hdrheight >> 2 ); // here alloc the output ringbuffer jpeg only
	erreur = SetVideoPict (vd);
	erreur = GetVideoPict (vd);
	//為什么需要獲得兩次呢?
	if (vd->formatIn != vd->videopict.palette ||
		vd->bppIn != vd->videopict.depth)
	exit_fatal ("could't set video palette Abort !");
	if (erreur < 0)
		exit_fatal ("could't set video palette Abort !");

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色婷婷一区二区三区四区| 亚洲一区二区精品视频| 国产精品三级视频| 日韩美女视频一区二区| 亚洲成a人片在线观看中文| 日韩av高清在线观看| 国产成人免费9x9x人网站视频| jvid福利写真一区二区三区| 欧美视频日韩视频在线观看| 日韩欧美不卡在线观看视频| 国产精品理论片| 视频在线观看一区二区三区| 国产麻豆成人精品| 欧美亚洲动漫制服丝袜| 精品乱码亚洲一区二区不卡| 亚洲另类在线视频| 久久国产人妖系列| 色爱区综合激月婷婷| 精品国产自在久精品国产| 亚洲四区在线观看| 卡一卡二国产精品 | 欧美日本精品一区二区三区| 欧美不卡一区二区三区| 亚洲色图在线播放| 久久疯狂做爰流白浆xx| 在线免费视频一区二区| 国产亚洲精品7777| 日韩在线观看一区二区| jiyouzz国产精品久久| 日韩欧美国产麻豆| 一二三区精品视频| 国产精品18久久久久久久久久久久| 欧美在线短视频| 欧美国产精品v| 免费在线观看一区| 欧日韩精品视频| 中文字幕av不卡| 九九精品视频在线看| 欧美日韩中文精品| 亚洲同性gay激情无套| 国产在线观看一区二区| 欧美精品日日鲁夜夜添| 亚洲色图制服诱惑 | 欧美国产乱子伦| 日产欧产美韩系列久久99| 99国产精品久久久久久久久久| 久久久久久久久蜜桃| 日韩黄色一级片| 在线观看日韩高清av| 国产精品毛片无遮挡高清| 精品一区二区三区在线播放| 538prom精品视频线放| 亚洲综合久久av| 一本在线高清不卡dvd| 中文天堂在线一区| 国产一区福利在线| 欧美一二三四区在线| 亚洲高清视频中文字幕| 91精品91久久久中77777| 中文字幕中文在线不卡住| 国产精品99久久久久久似苏梦涵| 日韩欧美中文字幕精品| 日本va欧美va欧美va精品| 制服丝袜中文字幕一区| 午夜精品福利一区二区蜜股av| a美女胸又www黄视频久久| 国产精品卡一卡二| www.成人网.com| 国产精品电影院| av福利精品导航| 国产精品久久久久永久免费观看 | 国产精品女同互慰在线看| 国产精品资源网站| 久久久久久久久久久久久夜| 国产精品亚洲а∨天堂免在线| 久久嫩草精品久久久久| 国产麻豆9l精品三级站| 国产欧美一区二区精品忘忧草 | 国产亚洲欧美一级| 国产成人日日夜夜| 国产欧美在线观看一区| 成人激情视频网站| 一区免费观看视频| 91首页免费视频| 亚洲一区二区综合| 欧美精品vⅰdeose4hd| 久久成人免费网站| 久久先锋影音av鲁色资源网| 国产成人av电影在线观看| 日本一区二区久久| 99久久精品一区二区| 亚洲一区在线视频| 4438x成人网最大色成网站| 日本美女一区二区三区| 精品国产青草久久久久福利| 国产91精品一区二区麻豆网站| 中文字幕av一区二区三区免费看 | 玉米视频成人免费看| 欧美三片在线视频观看| 日韩国产欧美在线播放| 精品国产电影一区二区| 成+人+亚洲+综合天堂| 亚洲精品福利视频网站| 7777精品伊人久久久大香线蕉超级流畅 | 国精品**一区二区三区在线蜜桃| 国产偷国产偷精品高清尤物| 97se狠狠狠综合亚洲狠狠| 亚洲图片欧美一区| 26uuu亚洲综合色欧美| aaa亚洲精品一二三区| 亚洲一区免费观看| 26uuu精品一区二区三区四区在线| 成人自拍视频在线观看| 亚洲专区一二三| 精品乱人伦一区二区三区| 99久久久免费精品国产一区二区 | 欧美成人a∨高清免费观看| 成人午夜短视频| 午夜精品免费在线| 久久久亚洲综合| 欧洲国内综合视频| 国产精品一品二品| 亚洲妇熟xx妇色黄| 欧美极品aⅴ影院| 3d动漫精品啪啪一区二区竹菊 | 亚洲欧美日韩在线播放| 日韩欧美电影在线| 色素色在线综合| 国内精品国产成人国产三级粉色| 亚洲免费观看高清| 日韩免费观看高清完整版在线观看| 波多野结衣在线一区| 免费成人在线观看视频| 亚洲久草在线视频| 2022国产精品视频| 欧美亚男人的天堂| 成人av影视在线观看| 美国十次综合导航| 亚洲国产视频一区| 国产欧美日韩综合精品一区二区| 欧美精品vⅰdeose4hd| 99久久精品国产一区二区三区 | 久久亚洲精品小早川怜子| 欧美日韩免费一区二区三区 | 一区二区欧美国产| 国产日韩在线不卡| 欧美一级二级三级蜜桃| 91久久免费观看| 成人综合在线网站| 欧美日韩一区二区三区高清| 国产91在线观看丝袜| 精品一区二区av| 午夜精品久久久久久久 | 亚洲夂夂婷婷色拍ww47| 成人涩涩免费视频| 久久久精品影视| 日韩一区二区三区观看| 91福利资源站| caoporn国产精品| 国产福利一区在线| 久久成人av少妇免费| 日韩精品电影在线| 亚洲线精品一区二区三区八戒| 国产精品九色蝌蚪自拍| 久久九九99视频| 亚洲精品一区二区三区福利| 欧美日韩免费视频| 欧美主播一区二区三区| 99re在线视频这里只有精品| 成人精品在线视频观看| 国产乱人伦精品一区二区在线观看| 蜜臀久久久99精品久久久久久| 亚洲sss视频在线视频| 一区二区免费在线播放| 亚洲三级小视频| 17c精品麻豆一区二区免费| 日本一区二区免费在线观看视频| 久久综合九色综合欧美就去吻| 日韩欧美卡一卡二| 日韩免费性生活视频播放| 5858s免费视频成人| 91精品国产综合久久久久| 欧美剧情电影在线观看完整版免费励志电影 | 在线观看欧美日本| 91国产免费看| 欧美亚洲丝袜传媒另类| 欧美日韩免费电影| 欧美一区二区三区人| 日韩欧美一区中文| 欧美mv日韩mv| 国产日韩v精品一区二区| 国产日韩精品一区| 国产精品美女一区二区三区 | 99国产一区二区三精品乱码| 91女厕偷拍女厕偷拍高清| 不卡的av在线播放| 91久久精品一区二区二区| 69p69国产精品| 26uuu另类欧美亚洲曰本| 欧美国产乱子伦|