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

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

?? mycom.c

?? linux下串口通訊
?? C
字號:
/*本程序符合GPL條約MyCom.c*/#include <stdio.h>              // printf#include <fcntl.h>              // open#include <string.h>             // bzero#include <stdlib.h>             // exit#include <sys/times.h>          // times#include <sys/types.h>          // pid_t#include <termios.h>		//termios, tcgetattr(), tcsetattr()#include <unistd.h>#include <sys/ioctl.h>          // ioctl#include "mycom.h"#define	TTY_DEV	"/dev/ttyS"	//端口路徑#define U16C550A		//for SBS pc104 serial port(cpu onboard com1\com2)  //#define U16C954			//for SBS pc104+ serial port(sem/7513,scm/7026 com3-com6 etc.)#define TIMEOUT_SEC(buflen,baud) (buflen*20/baud+2)  //接收超時#define TIMEOUT_USEC 0/******************************************* *	獲得端口名稱********************************************/static char *get_ptty(portinfo_t * pportinfo){	char *ptty;	switch(pportinfo->tty){		case 0:{			ptty = TTY_DEV"0";		}break;		case 1:{			ptty = TTY_DEV"1";		}break;		case 2:{			ptty = TTY_DEV"2";		}break;		case 3:{			ptty = TTY_DEV"3";		}break;		case 4:{			ptty = TTY_DEV"4";		}break;		case 5:{			ptty = TTY_DEV"5";		}break;		case 6:{			ptty = TTY_DEV"6";		}break;		case 7:{			ptty = TTY_DEV"7";		}break;		case 8:{			ptty = TTY_DEV"8";		}break;		case 9:{			ptty = TTY_DEV"9";		}break;	}	return(ptty);}/******************************************* *	波特率轉換函數(請確認是否正確)********************************************/int convbaud(unsigned long int baudrate){	switch(baudrate){		case 2400:			return B2400;		case 4800:			return B4800;		case 9600:			return B9600;		case 19200:			return B19200;		case 38400:			return B38400;		case 57600:			return B57600;		case 115200:			return B115200;		default:			return B9600;	}}/******************************************* *	Setup comm attr *	fdcom: 串口文件描述符,pportinfo: 待設置的端口信息(請確認) *********************************************/int PortSet(int fdcom, const portinfo_t *pportinfo){	struct termios termios_old, termios_new;	int 	baudrate, tmp;	char	databit, stopbit, parity, fctl;	bzero(&termios_old, sizeof(termios_old));	bzero(&termios_new, sizeof(termios_new));	cfmakeraw(&termios_new);	tcgetattr(fdcom, &termios_old);			//get the serial port attributions	/*------------設置端口屬性----------------*/	//baudrates	baudrate = convbaud(pportinfo -> baudrate);	cfsetispeed(&termios_new, baudrate);		//填入串口輸入端的波特率	cfsetospeed(&termios_new, baudrate);		//填入串口輸出端的波特率	termios_new.c_cflag |= CLOCAL;			//控制模式,保證程序不會成為端口的占有者	termios_new.c_cflag |= CREAD;			//控制模式,使能端口讀取輸入的數據	// 控制模式,flow control	fctl = pportinfo-> fctl;	switch(fctl){		case '0':{			termios_new.c_cflag &= ~CRTSCTS;		//no flow control		}break;		case '1':{			termios_new.c_cflag |= CRTSCTS;			//hardware flow control		}break;		case '2':{			termios_new.c_iflag |= IXON | IXOFF |IXANY;	//software flow control		}break;	}	//控制模式,data bits	termios_new.c_cflag &= ~CSIZE;		//控制模式,屏蔽字符大小位	databit = pportinfo -> databit;	switch(databit){		case '5':			termios_new.c_cflag |= CS5;		case '6':			termios_new.c_cflag |= CS6;		case '7':			termios_new.c_cflag |= CS7;		default:			termios_new.c_cflag |= CS8;	}	//控制模式 parity check	parity = pportinfo -> parity;	switch(parity){		case '0':{			termios_new.c_cflag &= ~PARENB;		//no parity check		}break;		case '1':{			termios_new.c_cflag |= PARENB;		//odd check			termios_new.c_cflag &= ~PARODD;		}break;		case '2':{			termios_new.c_cflag |= PARENB;		//even check			termios_new.c_cflag |= PARODD;		}break;	}	//控制模式,stop bits	stopbit = pportinfo -> stopbit;	if(stopbit == '2'){		termios_new.c_cflag |= CSTOPB;	//2 stop bits	}	else{		termios_new.c_cflag &= ~CSTOPB;	//1 stop bits	}	//other attributions default	termios_new.c_oflag &= ~OPOST;			//輸出模式,原始數據輸出	termios_new.c_cc[VMIN]  = 1;			//控制字符, 所要讀取字符的最小數量	termios_new.c_cc[VTIME] = 1;			//控制字符, 讀取第一個字符的等待時間	unit: (1/10)second	tcflush(fdcom, TCIFLUSH);				//溢出的數據可以接收,但不讀	tmp = tcsetattr(fdcom, TCSANOW, &termios_new);	//設置新屬性,TCSANOW:所有改變立即生效	tcgetattr(fdcom, &termios_old);	return(tmp);}/******************************************* *	Open serial port *	tty: 端口號 ttyS0, ttyS1, .... *	返回值為串口文件描述符********************************************/int PortOpen(portinfo_t *pportinfo){	int fdcom;	//串口文件描述符	const char *ptty;	ptty = (const char *)get_ptty(pportinfo);	//fdcom = open(ptty, O_RDWR | O_NOCTTY | O_NONBLOCK | O_NDELAY);	fdcom = open(ptty, O_RDWR | O_NOCTTY | O_NONBLOCK);	return (fdcom);}/******************************************* *	Close serial port********************************************/void PortClose(int fdcom){	close(fdcom);}/******************************************** *	send data *	fdcom: 串口描述符,data: 待發送數據,datalen: 數據長度 *	返回實際發送長度*********************************************/int PortSend(int fdcom, char *data, int datalen){	int len = 0;#ifdef U16C954	int line =TIOCM_DTR;			//for 16954 chip,use DTR instead of RTS#else	int line =TIOCM_RTS;#endif	if(ioctl(fdcom,TIOCMBIS,&line))		// 1--send 0--receive		printf("enter send mode error \n");	usleep(10);		len = write(fdcom, data, datalen);	//實際寫入的長度	if(len == datalen){		return (len);	}	else{		tcflush(fdcom, TCOFLUSH);		return -1;	}}/******************************************* *	receive data *	返回實際讀入的字節數 *********************************************/int PortRecv(int fdcom, char *data, int datalen, int baudrate){	int readlen, fs_sel;	fd_set	fs_read;	struct timeval tv_timeout;#ifdef U16C954	int line = TIOCM_DTR;#else	int line = TIOCM_RTS;#endif		if (ioctl(fdcom,TIOCMBIC,&line))		printf("enter receive mode error\n");	usleep(10);	FD_ZERO(&fs_read);	FD_SET(fdcom, &fs_read);	tv_timeout.tv_sec = TIMEOUT_SEC(datalen, baudrate);	tv_timeout.tv_usec = TIMEOUT_USEC;	fs_sel = select(fdcom+1, &fs_read, NULL, NULL, &tv_timeout);	if(fs_sel){		readlen = read(fdcom, data, datalen);		return(readlen);	}	else{		return(-1);	}	return (readlen);}//*************************Test*********************************int main(int argc, char *argv[]){	int fdcom, i, SendLen, RecvLen;	struct termios termios_cur;	char RecvBuf[10];	portinfo_t portinfo ={		'0',                          	// print prompt after receiving 		19200,                      	// baudrate: 115200 		'8',                          	// databit: 8 		'0',                          	// debug: off 		'0',                          	// echo: off 		'0',                          	// flow control: none 		atoi(argv[2]),                  // 獲取第二參數決定使用哪個串口 		'0',                          	// parity: none 		'1',                          	// stopbit: 1 		 0    	                  	// reserved	};	if(argc != 3){		printf("Usage: %s type port\n",argv[0]);		printf("  type section may be: 0--send,1--receive\n");		printf("  port section may be: 0~9\n");		exit(-1);	}	fdcom = PortOpen(&portinfo);	if(fdcom<0){		printf("Error: open serial port error.\n");		exit(1);	}	PortSet(fdcom, &portinfo);	if(atoi(argv[1]) == 0){		//send data		for(i=0; i<100; i++){			SendLen = PortSend(fdcom, "1234567890", 10);			if(SendLen>0){				printf("No %d send %d data 1234567890.\n", i, SendLen);			}			else{				printf("Error: send failed.\n");			}			sleep(1);		}		PortClose(fdcom);	}	else{		for(;;){			RecvLen = PortRecv(fdcom, RecvBuf, 10, portinfo.baudrate);			if(RecvLen>0){				for(i=0; i<RecvLen; i++){					printf("Receive data No %d is %x.\n", i, RecvBuf[i]);				}				printf("Total frame length is %d.\n", RecvLen);			}			else{				printf("Error: receive error.\n");			}			sleep(2);		}	}	return 0;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲综合视频网| 性久久久久久久久| 国产日韩欧美高清| 久久精品欧美一区二区三区不卡| 2023国产精华国产精品| 精品日韩欧美在线| 久久久不卡网国产精品一区| 国产亲近乱来精品视频| 国产精品高清亚洲| 亚洲免费在线视频一区 二区| 亚洲日本护士毛茸茸| 亚洲欧美在线aaa| 伊人夜夜躁av伊人久久| 偷拍日韩校园综合在线| 日韩国产精品久久久| 九九热在线视频观看这里只有精品| 韩国在线一区二区| 成人h版在线观看| 欧美日韩一区二区三区高清| 日韩视频在线你懂得| 国产欧美精品一区aⅴ影院| 亚洲免费观看在线视频| 蜜桃在线一区二区三区| 成人一区在线看| 欧美性做爰猛烈叫床潮| 精品少妇一区二区三区在线视频| 国产色产综合产在线视频| 中文字幕av资源一区| 亚洲aaa精品| 国产成人精品一区二区三区四区 | 亚洲精品国产第一综合99久久| 一区二区国产视频| 亚洲一二三区不卡| 国产成人鲁色资源国产91色综| 91黄色免费看| 26uuu精品一区二区在线观看| 依依成人综合视频| 国产一区二区影院| 欧美亚洲国产一卡| 国产精品久久久久久亚洲伦| 日韩精品乱码免费| 日本久久电影网| 久久久久久一级片| 日韩精品免费专区| 日本韩国精品在线| 国产精品素人一区二区| 日本三级亚洲精品| 欧美日韩亚洲不卡| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆 | 成人爱爱电影网址| 精品国产91洋老外米糕| 亚洲1区2区3区视频| 成人av午夜影院| 久久精品亚洲麻豆av一区二区| 亚洲高清免费观看| 色欧美乱欧美15图片| 中文字幕一区二区三区色视频| 久久99国内精品| 欧美一级片在线| 午夜电影久久久| 91黄色在线观看| 亚洲最大成人综合| 99视频精品免费视频| 欧美激情在线观看视频免费| 久久精品国产亚洲一区二区三区| 欧美日韩一区二区三区视频| 亚洲宅男天堂在线观看无病毒| 色综合天天综合网天天看片 | 在线看一区二区| 国产精品对白交换视频| 懂色中文一区二区在线播放| 国产免费成人在线视频| 国产成人h网站| 国产日产精品一区| 成人天堂资源www在线| 国产精品久久毛片a| 97aⅴ精品视频一二三区| 《视频一区视频二区| 色就色 综合激情| 午夜精品一区二区三区三上悠亚| 欧美男人的天堂一二区| 日韩av一区二区三区四区| 欧美电影免费观看高清完整版| 久久97超碰色| 国产精品麻豆网站| 色婷婷av一区| 青青草视频一区| 久久久一区二区| 一本久道中文字幕精品亚洲嫩| 亚洲一区二区三区四区在线观看 | 国产一区二区三区视频在线播放| 国产亚洲精品精华液| 不卡区在线中文字幕| 一区二区三区国产精品| 欧美剧在线免费观看网站| 免费久久99精品国产| 久久久久国产精品麻豆 | 视频一区欧美日韩| 精品女同一区二区| 成人黄页毛片网站| 亚洲动漫第一页| 精品国产三级电影在线观看| www.日韩av| 日本最新不卡在线| 国产精品网站在线| 7777精品伊人久久久大香线蕉的| 久久精品免费观看| 亚洲人成精品久久久久| 欧美一区二区在线观看| 成人高清免费观看| 五月婷婷另类国产| 国产精品久久久久久久久免费丝袜| 欧美在线观看一区| 成人激情文学综合网| 乱一区二区av| 亚洲美女一区二区三区| 久久综合狠狠综合久久激情| 在线观看日韩一区| 不卡一区二区三区四区| 久久99精品久久久久久动态图| 亚洲综合激情网| 亚洲国产高清不卡| 日韩欧美一级二级| 欧美在线观看一二区| www.色综合.com| 国产91富婆露脸刺激对白| 图片区小说区区亚洲影院| 日韩一区日韩二区| 国产亚洲精品超碰| 精品三级av在线| 欧美一级xxx| 欧美喷潮久久久xxxxx| 99久久99久久精品免费看蜜桃| 国产乱国产乱300精品| 欧美96一区二区免费视频| 亚洲国产精品一区二区www| 亚洲色图欧洲色图婷婷| 国产精品久久久久7777按摩 | 亚洲男同1069视频| 国产精品乱码人人做人人爱 | 久久一区二区视频| 欧美一区二区三区视频在线| 欧美日韩一卡二卡三卡| 欧美午夜片在线观看| 欧美午夜电影网| 欧美视频一区二区| 欧美日韩国产高清一区二区| 日本二三区不卡| 91久久精品日日躁夜夜躁欧美| 丁香激情综合国产| 99在线精品视频| 在线视频一区二区三| 欧美图区在线视频| 欧美喷水一区二区| 日韩午夜激情av| 久久免费偷拍视频| 日本一区二区三区视频视频| 国产精品嫩草久久久久| 18成人在线观看| 五月天中文字幕一区二区| 日本va欧美va精品发布| 久久 天天综合| 国产一区不卡视频| 不卡的av中国片| 91久久线看在观草草青青| 9191成人精品久久| 久久久久久久久99精品| 亚洲欧美在线观看| 亚洲v精品v日韩v欧美v专区 | 色欲综合视频天天天| 色婷婷一区二区| 欧美成人一区二区三区片免费| 久久精品亚洲乱码伦伦中文| 亚洲色图制服丝袜| 日本在线不卡一区| 国产成人午夜高潮毛片| 欧洲一区在线观看| 久久夜色精品一区| 中文字幕亚洲一区二区va在线| 亚洲成人第一页| 国产盗摄一区二区| 欧美视频一区二区三区四区| 337p粉嫩大胆色噜噜噜噜亚洲| 亚洲欧洲精品天堂一级| 日本不卡一区二区| www.视频一区| 精品日本一线二线三线不卡| 中文字幕中文字幕中文字幕亚洲无线| 亚洲一区自拍偷拍| 成人综合婷婷国产精品久久蜜臀 | 成人免费av资源| 欧美夫妻性生活| 国产精品传媒入口麻豆| 轻轻草成人在线| 91传媒视频在线播放| 精品久久久三级丝袜| 午夜精品国产更新| 一本到不卡精品视频在线观看| 26uuu国产日韩综合| 亚洲大型综合色站|