⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 serial.c,v

📁 linux下的串口通讯
💻 C,V
字号:
head	1.9;access;symbols;locks; strict;comment	@ * @;1.9date	2004.12.16.09.13.47;	author yr;	state Exp;branches;next	1.8;deltatype	text;permissions	644;commitid	60441c151c409e6;kopt	kv;filename	@serial.c@;1.8date	2004.12.14.08.14.36;	author yr;	state Exp;branches;next	1.7;deltatype	text;permissions	644;commitid	1ba841bea0e84060;kopt	kv;filename	@serial.c@;1.7date	2004.12.14.07.55.08;	author yr;	state Exp;branches;next	1.6;deltatype	text;permissions	644;commitid	1b4c41be9c573176;kopt	kv;filename	@serial.c@;1.6date	2004.12.07.08.53.29;	author laj;	state Exp;branches;next	1.5;deltatype	text;permissions	644;commitid	88441b56f5b3aab;kopt	kv;filename	@serial.c@;1.5date	2004.12.06.13.42.59;	author yr;	state Exp;branches;next	1.4;deltatype	text;permissions	644;commitid	8e441b461ce4a6e;kopt	kv;filename	@serial.c@;1.4date	2004.11.30.09.03.40;	author tarbit;	state Exp;branches;next	1.3;deltatype	text;permissions	644;commitid	d1c41ac375d1fed;kopt	kv;filename	@serial.c@;1.3date	2004.11.30.07.56.24;	author tarbit;	state Exp;branches;next	1.2;deltatype	text;permissions	644;commitid	d3c41ac27976c6b;kopt	kv;filename	@serial.c@;1.2date	2004.11.30.01.59.15;	author yr;	state Exp;branches;next	1.1;deltatype	text;permissions	644;commitid	ce041abd3ee5b38;kopt	kv;filename	@serial.c@;1.1date	2004.11.01.05.19.55;	author yr;	state Exp;branches;next	;deltatype	text;permissions	644;commitid	d404185c7771af5;kopt	kv;filename	@serial.c@;desc@@1.9log@add func_set_timer@text@#include <stdio.h>      /*标准输入输出定义*/#include <stdlib.h>     /*标准函数库定义*/#include <unistd.h>     /*Unix 标准函数定义*/#include <sys/types.h>  #include <sys/msg.h>#include <sys/ipc.h>#include <sys/stat.h>   #include <fcntl.h>      /*文件控制定义*/#include <termios.h>    /*PPSIX 终端控制定义*/#include <errno.h>      /*错误号定义*/#include <signal.h>#include <time.h>#include <string.h>#include <pthread.h>#include <sys/param.h>#include <Message.h>#include <Register.h>#include <alarm_num.h>void 	fn_operation(char *);int  	set_Parity(int, int, int, int);int  	OpenDev(char *);void 	fn_oprt_msg();void 	fn_msg_snd();void 	set_speed(int, int);void 	fn_read_port(int, char *);void    handle_func();void	func_sig_proc();void	func_msg_regst();void	func_read_alarm_set();void	func_set_timer();void	func_sigalarm_proc();void	func_sign_nack();char 	alarm_set[3] = {0xff, 0xff, 0xff};char	alarm_bit[3] = {0, 0, 0};char	alarm_num = 0;char	alarm_kind = 0;int 	main(){	func_sig_proc();	//	func_read_alarm_set();//read alarm_set from set_record file;	//set the port;	int 	fd;	fd = OpenDev("/dev/ttyS1");	set_speed(fd, 9600);		if (set_Parity(fd,8,1,'n') == 0)  	{                printf("Set Parity Error\n");                exit (0);        }	//create pthread!        int     ret;	pthread_t id_msg;	ret = pthread_create(&id_msg, NULL, (void *)fn_oprt_msg, NULL);	if(ret != 0)        {        	printf("pthread_create error!\n");                exit(1);        }	func_msg_regst();	func_set_timer();	while (1)	{		char 	recvbuf[6] = {0, 0, 0, 0, 0, 0};		fn_read_port(fd, recvbuf);		fn_operation(recvbuf);		fn_msg_snd();//		printf("In the while.....\n");	}	exit(0);}@1.8log@to merge two message into one@text@d12 1d31 3d65 1@1.7log@add alarm_kind & alarm_num@text@d33 2a34 2int	alarm_num = 0;int	alarm_kind = 0;@1.6log@to add the ! and send message to sysinfo@text@d34 1@1.5log@change the alarm_bit@text@d38 1a38 1	func_read_alarm_set();//read alarm_set from set_record file;@1.4log@modify@text@d19 1a19 1int 	fn_operation(char *);d23 1a23 1void 	fn_msg_snd(int);d29 1d31 2a32 1char 	alarm_set[4] = {0xff, 0xff, 0xff, 0};d37 3a39 2	char recvbuf[6];	int bit;d62 1a62 2		bit = 0;		bzero(recvbuf, 6);		d64 3a66 2		bit = fn_operation(recvbuf);			fn_msg_snd(bit);d68 1@1.3log@modify@text@a33 2	func_msg_regst();//regist d35 2a36 1d39 1a39 2	char *dev = "/dev/ttyS1";	fd = OpenDev(dev);a45 1//	printf("set up port successful!\n");	d55 2d59 2a60 2		int     bit = 0;		char 	recvbuf[6] = {0, 0, 0, 0, 0, 0};		a63 1//		printf("In the while.....\n");@1.2log@change goto to while and use the alarm_num.h@text@d34 4d48 1a48 2	printf("set up port successful!\n");	a57 2	a61 1a62 1	a63 1d65 1a65 2		printf("In the while.....\n");a66 1@1.1log@added@text@d1 10a10 10#include     <stdio.h>      /*标准输入输出定义*/#include     <stdlib.h>     /*标准函数库定义*/#include     <unistd.h>     /*Unix 标准函数定义*/#include     <sys/types.h>  #include     <sys/msg.h>#include     <sys/ipc.h>#include     <sys/stat.h>   #include     <fcntl.h>      /*文件控制定义*/#include     <termios.h>    /*PPSIX 终端控制定义*/#include     <errno.h>      /*错误号定义*/d12 2a13 3#include     <string.h>#include     <pthread.h>d17 3a19 1void 	set_speed(int, int);a21 1d23 2a24 2void 	fn_msg_snd(int, char *);int 	fn_operation(char *);d27 2d31 1a31 2char	alarm_arise[4] = {0, 0, 0, 0};a33 45		MSG     sendmsg;	struct sigaction act;        sigset_t blockmask;	key_t keyval0 = SERIAL_MSGQ;	int msgq_id0 = 0;	int     fd;        char *dev = "/dev/ttyS1";	int     ret;        pthread_t id_msg;	//signal processor!        //struct sigaction act;        //sigset_t blockmask;                                                                                                  sigemptyset(&blockmask);        sigaddset(&blockmask, SIGINT);        sigprocmask(SIG_BLOCK, &blockmask, NULL);                                                                                                                                     act.sa_handler = handle_func;        sigemptyset(&act.sa_mask);        sigaddset(&act.sa_mask, SIGINT);                                                                                                                                     sigaction(SIGINT, &act, NULL);                                                                                                                                     sigprocmask(SIG_UNBLOCK,&blockmask, NULL);	//regist message!!	//MSG     sendmsg;        //key_t keyval0 = SERIAL_MSGQ;        //int msgq_id0 = 0;        if(msgq_id0 == 0)                msgq_id0 = msgget(keyval0,IPC_CREAT);                                                                                                                                     sendmsg.mtype           = 100;        sendmsg.pid             = getpid();        sendmsg.from_service    = ALARM_ARISE;        sendmsg.data_type       = REGIST;        sendmsg.msg_data.answer_serv=0x00;        msgsnd(msgq_id0, &sendmsg, (sizeof(MSG) - 4), 0);	d35 2a36 2	//int 	fd;	//char *dev = "/dev/ttyS1";d47 2a48 2        //int     ret;	//pthread_t id_msg;a56 1d59 3a61 3		int     alarm_bit = 0;		unsigned char	recvbuf[6] = {0, 0, 0, 0, 0, 0};	d64 1a64 1		alarm_bit = fn_operation(recvbuf);	d66 1a66 1		fn_msg_snd(alarm_bit, recvbuf);a68 1@

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -