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

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

?? sio.c

?? 串口代理
?? C
字號:
/* * sio.c * * serial port routines * * (C)1999 Stefano Busti * */#include <stdio.h>#include "sio.h"#if defined(SIO_TTY)#  include <unistd.h>#  include <termios.h>#elif defined(SIO_WIN32)#  include <io.h>#endif#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>int sio_init(sio_s *sio){	sio->fd = 0;	sio->info.port = 1;	sio->info.baud = 9600;	sio->info.parity = SIO_PARITY_NONE;	sio->info.stopbits = 1;	sio->info.databits = 8;	return 0;}void sio_cleanup(sio_s *sio){	if (sio_isopen(sio))		sio_close(sio);}int sio_open(sio_s *sio){	char filename[20];	#if defined(SIO_TTY)	struct termios t;	int fd, c_stop, c_data, i_parity, c_parity;	speed_t speed;
	int     status;		if (sio_isopen(sio))		return -1;					 	sprintf(filename, "/dev/ttyS%hd", sio->info.port - 1);	fd = open(filename, O_RDWR);	if (fd == -1)		return -1;	
	status=tcgetattr(fd, &t);	if (status !=0)	{
		perror("tcgetattr()");		close(fd);		return -1;	}		switch(sio->info.baud)	{	case 0: speed = B0; break;	case 50: speed = B50; break;	case 75: speed = B75; break;	case 110: speed = B110; break;	case 134: speed = B134; break;	case 150: speed = B150; break;	case 300: speed = B300; break;	case 600: speed = B600; break;	case 1200: speed = B1200; break;	case 1800: speed = B1800; break;	case 2400: speed = B2400; break;	case 4800: speed = B4800; break;	case 9600: speed = B9600; break;	case 19200: speed = B19200; break;	case 38400: speed = B38400; break;	case 57600: speed = B57600; break;	case 115200: speed = B115200; break;	case 230400: speed = B230400; break;	default: speed = B0; break;	}	if (speed == B0)	{		close(fd);		return -1;	}	
	tcflush(fd,TCIOFLUSH);	if (cfsetospeed(&t, speed))	{		close(fd);		return -1;	}	if (cfsetispeed(&t, speed))	{		close(fd);		return -1;	}		switch(sio->info.stopbits)	{	case 1: c_stop = 0; break;	case 2: c_stop = CSTOPB; break;	default: close(fd); return -1;	}	switch(sio->info.databits)	{	case 5: c_data = CS5; break;	case 6: c_data = CS6; break;	case 7: c_data = CS7; break;	case 8: c_data = CS8; break;	default: close(fd); return -1;	}	switch(sio->info.parity)	{	case SIO_PARITY_NONE:		i_parity = IGNPAR;		c_parity = 0;		break;			case SIO_PARITY_EVEN:		i_parity = INPCK;		c_parity = PARENB;		break;	case SIO_PARITY_ODD:		i_parity = INPCK;		c_parity = PARENB | PARODD;		break;	default:		close(fd);		return -1;	}
	status = tcsetattr(fd, TCSANOW, &t);	if (status !=0)	{
		perror("tcsetattr fd");		close(fd);		return -1;	}
	tcflush(fd,TCIOFLUSH);		sio->fd = fd;		return 0;#elif defined(SIO_WIN32)	int fd;	HANDLE hComm;	DCB dcb;	COMMTIMEOUTS cto = { MAXDWORD, 0, 0, 4, 4 }; 		if (sio_isopen(sio))		return -1;					 	sprintf(filename, "COM%hd", sio->info.port);	fd = _open(filename, _O_RDWR);	if (fd == -1)		return -1;	/* Grab the fd's windows handle */	hComm = (HANDLE)_get_osfhandle(fd);	if (!SetCommTimeouts(hComm, &cto))	{		_close(fd);		return -1;	}	dcb.DCBlength = sizeof(dcb);	memset(&dcb, sizeof(dcb), 0);	if (!GetCommState(hComm, &dcb))	{		_close(fd);		return -1;	}	dcb.BaudRate = sio->info.baud;	//dcb.fBinary = TRUE;	dcb.fParity = (sio->info.parity == SIO_PARITY_NONE) ? FALSE : TRUE;	dcb.fOutxCtsFlow = FALSE;	dcb.fOutxDsrFlow = FALSE;	dcb.fDtrControl = DTR_CONTROL_DISABLE;	dcb.fDsrSensitivity = FALSE;	dcb.fTXContinueOnXoff = FALSE;	dcb.fOutX = FALSE;	dcb.fInX = FALSE;	dcb.fErrorChar = FALSE;	dcb.fNull = FALSE;	dcb.fRtsControl = RTS_CONTROL_DISABLE;	dcb.fAbortOnError = FALSE;	dcb.ByteSize = sio->info.databits;	switch (sio->info.parity)	{	case SIO_PARITY_NONE: dcb.Parity = 0; break;	case SIO_PARITY_ODD: dcb.Parity = 1; break;	case SIO_PARITY_EVEN: dcb.Parity = 2; break;			default: _close(fd); return -1;	}	switch (sio->info.stopbits)	{	case 1: dcb.StopBits = 0; break;	case 2: dcb.StopBits = 2; break;	default: _close(fd); return -1;	}	if (!SetCommState(hComm, &dcb))	{		_close(fd);		return -1;	}		sio->fd = fd;	sio->hComm = hComm;	return 0;#endif}void sio_close(sio_s *sio){#if defined(SIO_TTY)	close(sio->fd);	sio->fd = 0;#elif defined(SIO_WIN32)	_close(sio->fd);	sio->fd = 0;	sio->hComm = INVALID_HANDLE_VALUE;#endif}#ifdef SIO_TTY__inline#endifint sio_read(sio_s *sio, void *buf, size_t count){#if defined(SIO_TTY)	return read(sio->fd, buf, count);#elif defined(SIO_WIN32)	int res;	if (!ReadFile(sio->hComm, buf, count, &res, NULL))		return -1;	return res;#endif}#ifdef SIO_TTY__inline#endifint sio_write(sio_s *sio, void *buf, size_t count){#if defined(SIO_TTY)	return write(sio->fd, buf, count);#elif defined(SIO_WIN32)	int res;	if (!WriteFile(sio->hComm, buf, count, &res, NULL))		return -1;	return res;	#endif}int sio_isopen(sio_s *sio){	return (sio->fd != 0);}int sio_setinfo(sio_s *sio, serialinfo_s *info){	sio->info = *info;	return 0;}	void sio_flush(sio_s *sio, int dir){	if (sio_isopen(sio))	{#if defined(SIO_TTY)		switch(dir)		{		case SIO_IN: tcflush(sio->fd, TCIFLUSH); break;		case SIO_OUT: tcflush(sio->fd, TCOFLUSH); break;		case SIO_IN | SIO_OUT: tcflush(sio->fd, TCIOFLUSH); break;		}#elif defined(SIO_WIN32)		DWORD flags = 0;		if (sio_isopen(sio))		{			if (dir & SIO_IN)				flags |= PURGE_RXCLEAR | PURGE_RXABORT;			if (dir & SIO_OUT)				flags |= PURGE_TXCLEAR | PURGE_TXABORT;		}				PurgeComm(sio->hComm, flags);#endif	}}void sio_drain(sio_s *sio){	if (sio_isopen(sio))	{#if defined(SIO_TTY)		tcdrain(sio->fd);#elif defined(SIO_WIN32)		FlushFileBuffers(sio->hComm);#endif	}}void sio_debug(sio_s *sio, FILE *f){	fprintf(f, "sio {\n");	fprintf(f, "\tfd = %d\n", sio_isopen(sio) ? sio->fd : 0);	fprintf(f, "\tport = %d\n", sio->info.port);		fprintf(f, "\tbaud = %ld\n", sio->info.baud);		fprintf(f, "\tparity = %d\n", sio->info.parity);		fprintf(f, "\tstopbits = %d\n", sio->info.stopbits);	fprintf(f, "\tdatabits = %d\n", sio->info.databits);		fprintf(f, "\topen = %d\n", sio_isopen(sio));		fprintf(f, "}\n\n");}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久这里只有精品首页| 亚洲国产精品久久人人爱蜜臀| 欧洲一区二区av| 91理论电影在线观看| 色综合色综合色综合| 国产福利91精品| 久久精品欧美一区二区三区麻豆| 国产麻豆精品视频| 亚洲人成7777| 91精品国产欧美一区二区成人| 九九热在线视频观看这里只有精品| 久久精品一二三| 色综合欧美在线视频区| 偷窥国产亚洲免费视频| 久久久久久久精| 欧美亚洲一区三区| 国产麻豆午夜三级精品| 亚洲人成网站在线| 日韩欧美中文字幕一区| 成人h动漫精品一区二| 亚洲一区精品在线| 久久夜色精品一区| 91成人国产精品| 国内精品不卡在线| 亚洲综合在线电影| 久久品道一品道久久精品| 99精品视频在线观看| 日韩电影免费一区| 国产精品国产自产拍高清av | 亚洲欧美韩国综合色| 91精品午夜视频| 成人av高清在线| 蜜桃精品视频在线| 亚洲综合激情小说| 国产三级一区二区三区| 欧美特级限制片免费在线观看| 国产一区二区看久久| 一区二区三区精品| 欧美经典一区二区三区| 欧美福利一区二区| 91视频一区二区三区| 国产一区二区调教| 亚洲色图欧美在线| 国产欧美综合在线观看第十页| 欧美日韩大陆在线| 一本到一区二区三区| 国产精品一区二区x88av| 亚洲高清视频在线| 亚洲三级在线免费观看| 久久日一线二线三线suv| 欧美精品vⅰdeose4hd| 99久久精品国产一区二区三区| 国产乱码精品一区二区三区av | 欧美日韩国产三级| 97se亚洲国产综合自在线不卡| 美女视频一区二区三区| 亚洲国产精品久久人人爱| 亚洲视频免费看| 国产精品另类一区| 久久精品亚洲麻豆av一区二区| 欧美精品v国产精品v日韩精品 | 亚洲午夜久久久久久久久久久 | 99久久综合国产精品| 国产成人亚洲综合色影视| 久久国产精品72免费观看| 日韩黄色免费网站| 日韩精品午夜视频| 亚洲高清免费在线| 亚洲午夜在线视频| 亚洲大尺度视频在线观看| 亚洲精品免费在线观看| 亚洲视频在线一区观看| 亚洲欧美一区二区三区久本道91| 国产欧美一区二区三区沐欲| 久久久久久久一区| 久久久久久久久久久久久女国产乱| 精品国产制服丝袜高跟| 欧美精品一区二区高清在线观看| 日韩精品一区二区三区蜜臀| 日韩欧美亚洲国产精品字幕久久久| 日韩午夜在线播放| 精品奇米国产一区二区三区| 欧美xxx久久| 国产亚洲欧美色| 国产精品蜜臀av| 亚洲精品免费播放| 午夜影院在线观看欧美| 婷婷国产v国产偷v亚洲高清| 免费久久精品视频| 国产一级精品在线| 99精品视频在线免费观看| 一本色道**综合亚洲精品蜜桃冫| 欧美专区在线观看一区| 欧美日韩高清不卡| 精品国产人成亚洲区| 久久久久久久精| 国产精品久久久久9999吃药| 亚洲免费观看高清完整版在线 | 欧美探花视频资源| 欧美丰满高潮xxxx喷水动漫| 精品久久久久久久久久久久久久久| 久久午夜免费电影| 亚洲天天做日日做天天谢日日欢| 亚洲精品乱码久久久久久黑人 | 国产精品美女久久久久aⅴ| 国产欧美视频在线观看| 一二三区精品福利视频| 蜜臀91精品一区二区三区 | 日本亚洲天堂网| 国产一区二区h| 欧美伊人久久久久久久久影院 | 国产精品99久久久久久久女警 | 亚洲欧美视频在线观看视频| 亚洲丰满少妇videoshd| 久久99热99| www.日本不卡| 884aa四虎影成人精品一区| 久久久久久久综合色一本| 夜夜夜精品看看| 国产自产视频一区二区三区| 在线观看视频一区二区| 久久影院视频免费| 亚洲高清视频在线| 成人免费视频视频在线观看免费| 日本精品视频一区二区| 久久久久久亚洲综合| 午夜欧美视频在线观看| 成人av综合在线| 精品剧情v国产在线观看在线| 亚洲精品成人悠悠色影视| 精品午夜久久福利影院| 欧美午夜片在线看| 国产精品第一页第二页第三页| 日本怡春院一区二区| 久久久久久亚洲综合影院红桃| 水野朝阳av一区二区三区| 91网站最新网址| 欧美激情一区二区三区在线| 久久成人羞羞网站| 911精品国产一区二区在线| 亚洲色图在线播放| 国产精品中文字幕日韩精品| 欧美高清视频在线高清观看mv色露露十八 | 欧美三级视频在线观看| 亚洲欧洲国产日本综合| 国产精品资源在线| 日韩精品自拍偷拍| 亚洲电影一区二区| 在线观看视频91| 最新热久久免费视频| 国产福利精品一区| 精品粉嫩aⅴ一区二区三区四区| 五月天亚洲婷婷| 欧美人妖巨大在线| 亚洲国产欧美在线| 日本韩国欧美在线| 一区二区三区日韩在线观看| av在线一区二区三区| 国产情人综合久久777777| 欧美a级一区二区| 欧美一级专区免费大片| 琪琪久久久久日韩精品| 欧美精三区欧美精三区| 亚洲成人动漫一区| 欧美美女一区二区| 天堂久久一区二区三区| 欧美日韩成人在线一区| 婷婷激情综合网| 欧美一区午夜视频在线观看| 水野朝阳av一区二区三区| 欧美一区二区视频免费观看| 日本不卡一区二区| 欧美电视剧在线看免费| 狠狠色丁香久久婷婷综合丁香| www精品美女久久久tv| 国产伦精一区二区三区| 国产欧美日韩在线视频| 不卡一区二区在线| 一区二区三区美女| 91精品视频网| 狠狠色丁香久久婷婷综合丁香| 国产欧美在线观看一区| 不卡av免费在线观看| 亚洲综合色视频| 欧美精品1区2区| 国产专区欧美精品| 国产精品国产a级| 91黄色激情网站| 石原莉奈在线亚洲二区| www久久久久| 久久久不卡网国产精品一区| 国产成人精品影院| 一区免费观看视频| 欧美日韩美女一区二区| 日韩电影在线免费看| 久久久久久毛片| 色婷婷av一区二区三区软件| 婷婷一区二区三区| 欧美国产欧美综合| 欧美私人免费视频|