📄 user_define_func.c,v
字号:
void func_set_timer(){ struct itimerval new; new.it_interval.tv_sec = 7200; new.it_interval.tv_usec = 0; new.it_value.tv_sec = 7200; new.it_value.tv_usec = 0; setitimer(ITIMER_REAL, &new, NULL); }//------------------------------------------------------------------------------------------------------------void fn_oprt_msg(){ MSG rcvmsg_alarm; MSG rcvmsg_serial; int status; int msgid_serial; //set up MSGQ_SERIAL if((msgid_serial = msgget(SERIAL_MSGQ, IPC_CREAT)) == -1) { printf("SERIAL_MSGQ get error!\n"); exit(1); }// printf("msgid_serial = %d\n",msgid_serial); while (1) { //to judge "the SERIAL_MSGQ has a message !" struct msqid_ds *msgq_buf; msgq_buf = (struct msqid_ds *)malloc(sizeof(struct msqid_ds)); do { msgctl(msgid_serial, IPC_STAT, msgq_buf); usleep(1000); }while(msgq_buf->msg_cbytes == 0); free(msgq_buf); // printf("in the pthread!\n"); //receive the message if(msgrcv(msgid_serial, (MSG *)&rcvmsg_serial, 80, 0, 0) == -1) { printf("rcvmsg_alarm rcv error!\n"); exit(1); } //以后,这里可以用switch,对不同的data_type作不同的处理; if (rcvmsg_serial.data_type == 7) { alarm_set[0] = rcvmsg_serial.msg_data.alarm[0]; alarm_set[1] = rcvmsg_serial.msg_data.alarm[1]; alarm_set[2] = rcvmsg_serial.msg_data.alarm[2];// printf("In the serial!\n");// printf("The message from SERIAL_MSGQ data_type:%x\n",rcvmsg_serial.data_type);// printf("The message from SERIAL_MSGQ alarm[0]:%x\n",rcvmsg_serial.msg_data.alarm[0]);// printf("The message from SERIAL_MSGQ alarm[1]:%x\n",rcvmsg_serial.msg_data.alarm[1]);// printf("The msssage from SERIAL_MSGQ alarm[2]:%x\n",rcvmsg_serial.msg_data.alarm[2]); } } }//-----------------------------------------------------------------------------------------------------------void func_read_alarm_set(){ int i; FILE *fp2; if((fp2 = fopen("./temp/set_record", "r")) == NULL) { printf("can't open file fp2!\n"); exit(1); } fread(alarm_set, 1, 3, fp2); fclose(fp2);}//-----------------------------------------------------------------------------------------------------------void fn_read_port(int fdcom, unsigned char *buffer){ int readlen, fs_sel; int i; unsigned char sign_1 = 0xf6; unsigned char sign_2 = 0xf9; unsigned char sign_err_1 = 0xfa; unsigned char sign_err_2 = 0xf7; unsigned char sign_ack = 0xf8; unsigned char sign; fd_set fs_read; while(1){ FD_ZERO(&fs_read); FD_SET(fdcom, &fs_read); fs_sel = select(fdcom+1, &fs_read, NULL, NULL, NULL); if(FD_ISSET(fdcom, &fs_read)) { if(read(fdcom, &sign, 1) > 0){ if(sign == 0xf5){ write(fdcom, &sign_1, 1); printf("0xf5 successful!\n"); break; } else if(sign == sign_ack){ printf("sign_ack received, The 485 is ok!\n"); func_set_timer(); } else{ write(fdcom, &sign_err_1, 1); printf("0xf5 failed!\n"); } } }}while(1){ FD_ZERO(&fs_read); FD_SET(fdcom, &fs_read); fs_sel = select(fdcom+1, &fs_read, NULL, NULL, NULL); if(fs_sel) { readlen = read(fdcom, buffer, 6); } if(readlen == 6){ write(fdcom, &sign_2, 1); printf("readlen == 6 successful!\n"); for(i = 0; i<6; i++) { printf("the data is:%x\n",buffer[i]); } break; } else{ printf("readlen != 6\n"); write(fdcom, &sign_err_2, 1); }} }//------------------------------------------------------------------------------------------------------------void fn_operation(char * buffer){// char alarm_bit[3]; switch (buffer[0]) { case 0xd2: alarm_bit[0] = alarm_set[0] & 0x01; alarm_num = RESCUE_ONE; alarm_kind = 1; break; case 0xe8: alarm_bit[0] = alarm_set[0] & 0x02; alarm_num = RESCUE_TWO; alarm_kind = 1; break; case 0xd3: alarm_bit[0] = alarm_set[0] & 0x04; alarm_num = SMOKE_ONE; alarm_kind = 2; break; case 0xdb: alarm_bit[0] = alarm_set[0] & 0x08; alarm_num = SMOKE_TWO; alarm_kind = 2; break; case 0xe9: alarm_bit[0] = alarm_set[0] & 0x10; alarm_num = SMOKE_THREE; alarm_kind = 2; break; case 0xd5: alarm_bit[0] = alarm_set[0] & 0x20; alarm_num = GAS_ONE; alarm_kind = 3;break; case 0xea: alarm_bit[0] = alarm_set[0] & 0x40; alarm_num = GAS_TWO; alarm_kind = 3;break; //无0x80 case 0xd8: alarm_bit[1] = alarm_set[1] & 0x01; alarm_num = DOOR_MAG_ONE; alarm_kind = 4;break; case 0xed: alarm_bit[1] = alarm_set[1] & 0x02; alarm_num = DOOR_MAG_TWO; alarm_kind = 4;break; case 0xd9: alarm_bit[1] = alarm_set[1] & 0x04; alarm_num = WIN_MAG_ONE; alarm_kind = 5;break; case 0xde: alarm_bit[1] = alarm_set[1] & 0x08; alarm_num = WIN_MAG_TWO; alarm_kind = 5;break; case 0xee: alarm_bit[1] = alarm_set[1] & 0x10; alarm_num = WIN_MAG_THREE; alarm_kind = 5;break; case 0xd6: alarm_bit[1] = alarm_set[1] & 0x20; alarm_num = INFRARED_ONE; alarm_kind = 6;break; case 0xdc: alarm_bit[1] = alarm_set[1] & 0x40; alarm_num = INFRARED_TWO; alarm_kind = 6;break; case 0xeb: alarm_bit[1] = alarm_set[1] & 0x80; alarm_num = INFRARED_THREE; alarm_kind = 6;break; case 0xd7: alarm_bit[2] = alarm_set[2] & 0x01; alarm_num = CURTAIN_ONE; alarm_kind = 7;break; case 0xdd: alarm_bit[2] = alarm_set[2] & 0x02; alarm_num = CURTAIN_TWO; alarm_kind = 7;break; case 0xec: alarm_bit[2] = alarm_set[2] & 0x04; alarm_num = CURTAIN_THREE; alarm_kind = 7;break; case 0xda: alarm_bit[2] = alarm_set[2] & 0x08; alarm_num = QUAKE_ONE; alarm_kind = 8;break; case 0xef: alarm_bit[2] = alarm_set[2] & 0x10; alarm_num = QUAKE_TWO; alarm_kind = 8;break; //无0x20,0x40 case 0xdf: alarm_bit[2] = alarm_set[2] & 0x80; alarm_num = AROUND_PROTECT; alarm_kind = 9;break; } // return alarm_bit;}//------------------------------------------------------------------------------------------------------------void fn_msg_snd(){ MSG sndmsg_sysinfo; MSG sndmsg_network; MSG rcvmsg_arise; int msgid_sysinfo; int msgid_network; int i; FILE *fp1; if(alarm_bit[0] || alarm_bit[1] || alarm_bit[2]) { //send message to sys_info(indmain)! sndmsg_sysinfo.mtype = 1; sndmsg_sysinfo.data_type = SYSINFO; sndmsg_sysinfo.msg_data.sys_info = ALARM; if((msgid_sysinfo = msgget(SYSINFO_MSGQ, 0)) == -1) { printf("SYSINFO_MSGQ get error!\n"); exit(1); } if(msgsnd(msgid_sysinfo, (MSG *)&sndmsg_sysinfo, sizeof(MSG)-4, IPC_NOWAIT) == -1) { printf("sndmsg_sysinfo msgsnd error!\n"); exit(1); } //send kind message to network sndmsg_network.mtype = 1; sndmsg_network.data_type = ALARM_SEND; sndmsg_network.msg_data.alarm_send[0] = alarm_kind; sndmsg_network.msg_data.alarm_send[1] = alarm_num; if((msgid_network = msgget(NETWORK_MSGQ, 0)) == -1) { printf("NETWORK_MSGQ get error!\n"); exit(1); } if(msgsnd(msgid_network, (MSG *)&sndmsg_network, sizeof(MSG)-4, IPC_NOWAIT) == -1) { printf("sndmsg_network msgsnd error!\n"); exit(1); } //write to arise_record, which record the alarm happened! if((fp1 = fopen("./temp/arise_record", "w")) == NULL) { printf("can't open file fp1!\n"); exit(1); } fwrite(alarm_bit, 1, 3, fp1); printf("write to arise_record!\n"); fclose(fp1); } else printf("The device is unsetted!\n"); alarm_num = 0;//reset the alarm_num! alarm_bit[0] = 0; alarm_bit[1] = 0; alarm_bit[2] = 0; }//-----------------------------------------------------------------------------------------------------------@1.12log@add func_set_timer@text@d196 1a196 1 sendmsg.mtype = 100;@1.11log@to merge two message into one@text@d14 1d224 32d330 1a331 1d333 1a333 1 d348 5a352 1 else{ d354 2a355 2 printf("0xf5 failed!\n"); } @1.10log@add alarm_kind & alarm_num@text@d26 2a27 2extern int alarm_num;extern int alarm_kind;d415 1a415 2 MSG sndmsg_alarm_num; MSG sndmsg_alarm_kind;d441 4a444 3 sndmsg_alarm_kind.mtype = 1; sndmsg_alarm_kind.data_type = ALARM_KIND_SEND; sndmsg_alarm_kind.msg_data.alarm_kind = alarm_kind;d451 1a451 1 if(msgsnd(msgid_network, (MSG *)&sndmsg_alarm_kind, sizeof(MSG)-4, IPC_NOWAIT) == -1)d453 1a453 1 printf("sndmsg_alarm_kind msgsnd error!\n");a455 12 //send num message to network sndmsg_alarm_num.mtype = 1; sndmsg_alarm_num.data_type = ALARM_NUM_SEND; sndmsg_alarm_num.msg_data.alarm_num = alarm_num; if(msgsnd(msgid_network, (MSG *)&sndmsg_alarm_num, sizeof(MSG)-4, IPC_NOWAIT) == -1) { printf("sndmsg_alarm_num msgsnd error!\n"); exit(1); }@1.9log@send alarm_send to network@text@d27 1a27 1d358 14a371 7 case 0xd2: alarm_bit[0] = alarm_set[0] & 0x01; alarm_num = RESCUE_ONE; break; case 0xe8: alarm_bit[0] = alarm_set[0] & 0x02; alarm_num = RESCUE_TWO; break; case 0xd3: alarm_bit[0] = alarm_set[0] & 0x04; alarm_num = SMOKE_ONE; break; case 0xdb: alarm_bit[0] = alarm_set[0] & 0x08; alarm_num = SMOKE_TWO; break; case 0xe9: alarm_bit[0] = alarm_set[0] & 0x10; alarm_num = SMOKE_THREE; break; case 0xd5: alarm_bit[0] = alarm_set[0] & 0x20; alarm_num = GAS_ONE; break; case 0xea: alarm_bit[0] = alarm_set[0] & 0x40; alarm_num = GAS_TWO; break;d374 28a401 15 case 0xd8: alarm_bit[1] = alarm_set[1] & 0x01; alarm_num = DOOR_MAG_ONE; break; case 0xed: alarm_bit[1] = alarm_set[1] & 0x02; alarm_num = DOOR_MAG_TWO; break; case 0xd9: alarm_bit[1] = alarm_set[1] & 0x04; alarm_num = WIN_MAG_ONE; break; case 0xde: alarm_bit[1] = alarm_set[1] & 0x08; alarm_num = WIN_MAG_TWO; break; case 0xee: alarm_bit[1] = alarm_set[1] & 0x10; alarm_num = WIN_MAG_THREE; break; case 0xd6: alarm_bit[1] = alarm_set[1] & 0x20; alarm_num = INFRARED_ONE; break; case 0xdc: alarm_bit[1] = alarm_set[1] & 0x40; alarm_num = INFRARED_TWO; break; case 0xeb: alarm_bit[1] = alarm_set[1] & 0x80; alarm_num = INFRARED_THREE; break; case 0xd7: alarm_bit[2] = alarm_set[2] & 0x01; alarm_num = CURTAIN_ONE; break; case 0xdd: alarm_bit[2] = alarm_set[2] & 0x02; alarm_num = CURTAIN_TWO; break; case 0xec: alarm_bit[2] = alarm_set[2] & 0x04; alarm_num = CURTAIN_THREE; break; case 0xda: alarm_bit[2] = alarm_set[2] & 0x08; alarm_num = QUAKE_ONE; break; case 0xef: alarm_bit[2] = alarm_set[2] & 0x10; alarm_num = QUAKE_TWO; break;d403 2a404 1 case 0xdf: alarm_bit[2] = alarm_set[2] & 0x80; alarm_num = AROUND_PROTECT; break;d415 2a416 1 MSG sndmsg_network;d440 5a444 7
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -