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

📄 alert_main.cpp~

📁 用linux开发的安防暴警的有关代码
💻 CPP~
📖 第 1 页 / 共 5 页
字号:
#include <stdio.h>#include <stdlib.h>#include <string.h>#include <math.h>#include <fcntl.h>#include <ftw.h>#include <unistd.h>#include <ctype.h>#include <time.h>#include <getopt.h>#include <pthread.h>#include <wait.h>#include <errno.h>#include <signal.h>#include <termios.h>#include <sys/stat.h>#include <sys/ioctl.h>#include <sys/types.h>#include <sys/ttydefaults.h>#include <sys/socket.h>#include <netinet/in.h>#include <arpa/inet.h>#include <FL/x.H>#include <FL/fl_draw.H>#include <FL/filename.H>#include <FL/Fl_Pixmap.H>#include <Flek/Fl_Toggle_Tree.H>#include "var.h"#include "mesg.h"#include "show_free.h"#include "wordlist.h"#include "alert_gui.h"#include "alert_core.h"#include "MessageBox.h"#include "iconbrowser.h"#include "main_tree.h"#include "record_tree.h"#include "wire_device_tree.h"#include "wireless_device_tree.h"#include "remote_device_tree.h"#include "Hw_Kb_Core.h"#include "NCWnd_Detail.h"#include "Call_Hw_Input.h"#include "Secret_Input.h"#include "Call_Kb_Input.h"#include "pic/icon_blue.xpm"#include "pic/icon_red.xpm"#include "pic/icon_yellow.xpm"#include "pic/wire.xpm"#include "pic/wireless.xpm"#include "pic/remote.xpm"#include "pic/id.xpm"#include "pic/tishi.xpm"#include "pic/yiwen.xpm"#include "pic/password.xpm"#include "pic/record.xpm"#include "pic/setup.xpm"#include "pic/delay_setup.xpm"#include "pic/new_device.xpm"#include "pic/Delete.xpm"#include "pic/modify.xpm"#include "pic/communication.xpm"/*#include "pic/Send.xpm"#include "pic/Inbox.xpm"#include "pic/Outbox.xpm"*/#ifdef X86	#include "/work/Xapplication/myprog/Headers/showcard.h"#else	#include "/work/Xapplication/myprog/Headers/showcard.h"#endifAtom 						alert_run_atom;extern FL_EXPORT Display 			*fl_display;Fl_Window 					*main_window;Fl_Window 					*setup_window;Fl_Window 					*record_window;Fl_Window					*device_window;Fl_Window 					*password_setup_window;Fl_Window 					*local_setup_window;Fl_Window 					*auto_dial_setup_window;Fl_Window 					*inform_center_setup_window;Fl_Window 					*delay_setup_window;Fl_Window 					*auth_window;Fl_Window 					*comm_window;Fl_Window 					*alert_window;Fl_Window 					*dialog_window;Fl_Window 					*ask_save_file_window;Fl_Window 					*register_window;Fl_Window 					*register_result_window;Fl_Window 					*AddAnswerWnd_window;Fl_Window 					*message_form_window;Fl_Toggle_Tree					*main_tree;Fl_Toggle_Tree					*record_tree;Fl_Toggle_Tree					*wire_device_tree;Fl_Toggle_Tree					*wireless_device_tree;Fl_Pixmap					* Red_Light;Fl_Pixmap					* Yellow_Light;Fl_Pixmap					* Blue_Light;Fl_Pixmap					* wire_setup;Fl_Pixmap					* wireless_setup;Fl_Pixmap					* remote_setup;Fl_Pixmap					* id_setup;Fl_Pixmap 					*inform_dialog;Fl_Pixmap 					*quest_dialog;Fl_Pixmap 					*pixmap[15];WordList 					remote_wd;WordList 					id_wd;int 						setup_item_index;int 						REG_RUN_FLAG;int						TEST_RUN_FLAG;int						AUTH_TRY_TIMES;int 						DEVICE_EDIT_MODE;Var						PREFERENCES;Var						LPREFERENCES;profile_t						PROFILES;int 						wmain[6] ={138,87,88,96,85,0};int 						w_wire_device[5] ={130,130,150,100,0};int 						w_wireless_device[5] ={130,130,150,100,0};int 						wrecord[5]={120,100,90,150,0};pthread_t  					thread_play_sound;bool						play_sound_flag=true;bool						g_SoundBusy=false;int 						record_operation_id;bool						Have_Timer=false;//////////////////////////////////////////////////////////////////////////////////////////extern int errno;static int  fd;static int sem_id;static int timer_out=0;static int task_msg_id=-1;static int task1_pid;/////////////////////////////////////////////////////////////////////////////////////////////int P(int sem_num){	int ret;	struct sembuf sem[1];	sem[0].sem_num=sem_num;	sem[0].sem_op=-1;	sem[0].sem_flg=0;	while( ((ret=semop(sem_id,sem,1))==-1)&&errno==EINTR)	{		printf("P semop EINTR error \n");		continue;        	};	if (ret==-1)	{		printf("P semop error\n");		printf("errno is %d \n",errno);		return -1;	}	 	printf("P semop %d OK\n",sem_num);	return 0;}int V(int sem_num){	int ret;	struct sembuf sem[1];	sem[0].sem_num=sem_num;	sem[0].sem_op=1;	sem[0].sem_flg=0;	while(((ret=semop(sem_id,sem,1))==-1)&&errno==EINTR)		{			printf("V semop EINTR error\n");			continue;		};	if (ret==-1){			printf("V semop error\n");			return -1;		   }	printf("V semop %d OK\n",sem_num);		return 0;}int P_T(int sem_num,int * timer_outp){	int ret;	struct sembuf sem[1];	sem[0].sem_num=sem_num;	sem[0].sem_op=-1;	sem[0].sem_flg=0;	*timer_outp=0;	alarm(2);	while(1)	{                  //while 1 start		ret=semop(sem_id,sem,1);		if (ret<0)  		{			alarm(0);			if (errno!=EINTR) 			{				* timer_outp=0;				printf("P semop %d  error \n",sem_num);				return -1;                                          }			else   			{                                          	if (*timer_outp==1) 				{					* timer_outp=0;					printf("P semop %d timer out error\n",sem_num);                                                                					return -2;				}                                                 else    				{                                                        	alarm(2);                                                        	continue;                                                        };                                        };		}		else   		{			break;		};	}  //       while 1 end	alarm(0);	printf("P semop %d OK\n",sem_num);	return 0;}uchar checksum(uchar * buf,int length){	uchar sum;	int i;	sum=0;	for(i=0;i<length;i++)	{		sum=sum+*buf;		buf++;	}	sum=sum%256;	sum=256-sum;	return sum;}		uchar bit_value(uchar order,uchar data){	uchar i;	uchar bitmask[10];	bitmask[0]=0x1;	bitmask[1]=0x2;	bitmask[2]=0x4;	bitmask[3]=0x8;	bitmask[4]=0x10;	bitmask[5]=0x20;	bitmask[6]=0x40;	bitmask[7]=0x80;	i=bitmask[order-1]&data;	if (i==0) { return 0;}	return 1;}void set_bit_value(uchar order, uchar *data,uchar value){	uchar i;	uchar bitmask[10];	bitmask[0]=0x1;	bitmask[1]=0x2;	bitmask[2]=0x4;	bitmask[3]=0x8;	bitmask[4]=0x10;	bitmask[5]=0x20;	bitmask[6]=0x40;	bitmask[7]=0x80;	switch(value)	{		case 0:			i=~bitmask[order-1];			*data=(*data)&i;			break;		case 1:			*data=(*data)|bitmask[order-1];			break;	};	}int sendmessage(struct mymsgbuf p){	int len,result;	len=sizeof(struct mymsgbuf)-sizeof(long);	do {	result=msgsnd(task_msg_id,&p,len,0);	}   while (result==-1 && errno==EINTR );	if (result==-1) 	{ 		printf("msgsnd error\n");             		return -1;	}	return 0;}int get_uart(){	int ret;	P(MUTEX1);	do {	     ret=kill(task1_pid,SIGUSR1);	}  while(ret==-1 && errno==EINTR);	if (ret!=0) {		printf("kill sigusr1 error\n");		V(MUTEX1);		return -1;	}	printf("kill sigusr1 succeed\n");	ret=P_T(MUTEX,&timer_out);	if (ret!=0) {		V(MUTEX1);		return -2;	}	return 0; }int free_uart(void){	int ret;	do {	ret=kill(task1_pid,SIGUSR2);	}  while(ret==-1 && errno==EINTR);	if(ret!=0) 	{                     printf("kill sigusr2 error\n");                     return -1;	}	 printf("kill sigusr2 succeed\n"); 	V(MUTEX);	V(MUTEX1);	return 0;}	      int handshake(){	int result;	uchar rbuf[2],tbuf[2];		tbuf[0]=0xda;	result=write(fd,tbuf,1);	if (result!=1) 	{		printf("request error\n");		return -1;	}	printf("send request sucessful\n");	timer_out=0;	alarm(2);	while(1)    	{		result=read(fd,rbuf,1);		if (result==1)		{			alarm(0);			timer_out=0;                            	printf("receive answer\n");			if (rbuf[0]!=0xd9)			{                                                       printf("request is refused\n");                                                       return -1;                                          }			printf("request is accepted\n");			return 0;		}		else 		{			if(result<0&&errno==EINTR)			{				alarm(0);				if(timer_out==1)				{					printf("timer overfllow error\n");					alarm(0);					timer_out=0;					return -1;				}  				else				{					alarm(2);				 	continue;				}			    						   			}			else						{				printf("wait for answer error\n");				alarm(0);				timer_out=0;				return -1;			}		}//end if	}//end while}int uartsend(uchar *tbuf,int length){	int result;	result=write(fd,tbuf,length);	if (result!=length) 	{		printf("send command error\n");		return -1;               }	printf("send command ok\n");	return 0;}                            int uartread(uchar *rbuf,int length){	int result;	timer_out=0;	alarm(4);	while (1)	{		result=read(fd,rbuf,length);		if (result<0)  		{			alarm(0);			if (errno!=EINTR) 			{		 		timer_out=0;				printf("read data error %d , %d  \n",errno,timer_out);				return -1;			}			else				{				if (timer_out==1) 				{					timer_out=0;					printf("read timer out error\n");						return -1;				}				else    				{					alarm(2);						continue;				};								};		}		else   		{			break;		};                       } 	alarm(0);	timer_out=0;	return result;}int uartreadframe(uchar *rbuf){	int ret;	int i,sum;	uchar ch;	ret=uartread(rbuf,1);	if (ret!=1) 	{		return -1;	}

⌨️ 快捷键说明

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