diff --git a/app b/app1 similarity index 64% rename from app rename to app1 index 30d7d7d7ee3fe0543326c4ae6df15bf0550dac29..76975a27e331406cfb380e310c319e4237c00bde 100755 Binary files a/app and b/app1 differ diff --git a/app1.c b/app1.c new file mode 100644 index 0000000000000000000000000000000000000000..4c3e467857ece14f916f5840057726f3941b201f --- /dev/null +++ b/app1.c @@ -0,0 +1,130 @@ +#include <fcntl.h> +#include <unistd.h> +#include <stdlib.h> +#include <stdio.h> +#include <string.h> +#include <math.h> +#include <errno.h> +#include <time.h> +#include <arpa/inet.h> + +#include <sys/socket.h> +#include <sys/ioctl.h> +#include <sys/types.h> +#include <sys/sysmacros.h> + +#define SMOKE_DEV_PATH "/dev/smoke_dev" +#define BUZZER_DEV_PATH "/dev/buzzer_dev" +#define HYDRO_DEV_PATH "/dev/hydro_dev" + +#define IOCTL_HYDRO_MAGIC_NUMBER 'h' + +#define INTERVAL 50000 +#define BUFF_SIZE 50 + +typedef struct{ + int hydro_int; + int hydro_double; + int temp_int; + int temp_double; +}HYDRO; + +#define IOCTL_CMD_HYDRO _IOR(IOCTL_HYDRO_MAGIC_NUMBER, 0, HYDRO) +int main(void) +{ + int client_socket; + struct sockaddr_in server_addr; + char buff[BUFF_SIZE+5] = "*Humidity:"; + char buff2[BUFF_SIZE+5] = "Temperature"; + + client_socket = socket(PF_INET, SOCK_STREAM, 0); + if(client_socket == -1) { + printf("socket fail\n"); + exit(1); + } + + memset(&server_addr, 0, sizeof(server_addr)); + server_addr.sin_family = AF_INET; + server_addr.sin_port = htons(4029); + server_addr.sin_addr.s_addr = inet_addr("192.168.10.6"); + + if(connect(client_socket, (struct sockaddr *)&server_addr, sizeof(server_addr)) == -1) { + printf("connect error\n"); + return 1; + } + __pid_t pid; + int smoke_dev, smoke_data; + int buzzer_dev, buzzer_data = 400; + int hydro_dev; + HYDRO hydro_info; + char Temp[20], Hum[20]; + smoke_dev = open(SMOKE_DEV_PATH, O_RDONLY); + buzzer_dev = open(BUZZER_DEV_PATH, O_RDWR); + hydro_dev = open(HYDRO_DEV_PATH, O_RDONLY); + + if(smoke_dev < 0) { + printf("fail to open smoke detection sensor device\n"); + return 1; + } + + if(buzzer_dev < 0) { + printf("fail to open buzzer sensor device\n"); + return 1; + } + + if(hydro_dev < 0) { + printf("fail to open hydro sensor device\n"); + return 1; + } + + int count = 0; + + pid = fork(); + + if(pid) { + while(1) { + read(smoke_dev, &smoke_data, sizeof(int)); + printf("data : %d\n", smoke_data); + if(smoke_data > 600) { + write(buzzer_dev, &buzzer_data, sizeof(int)*2); + } + sleep(1); + } + } + else { + while(1) { + ioctl(hydro_dev, IOCTL_CMD_HYDRO, &hydro_info); + printf("temperature is %d.%d%%, humidity is %d.%d%%\n",hydro_info.temp_int, hydro_info.temp_double, hydro_info.hydro_int, hydro_info.hydro_double); + + if(hydro_info.temp_double > 100) + hydro_info.temp_double /= 100; + else if(hydro_info.temp_double > 10) + hydro_info.temp_double /= 10; + + if(hydro_info.hydro_double > 100) + hydro_info.hydro_double /= 100; + else if(hydro_info.hydro_double > 10) + hydro_info.hydro_double /= 10; + + sprintf(Temp, "%d.%dC", hydro_info.temp_int, hydro_info.temp_double); + sprintf(Hum, "%d.%d%%", hydro_info.hydro_int, hydro_info.hydro_double); + strcat(buff, Hum); + strcat(buff2, Temp); + printf("%s %s\n", Temp, Hum); + write(client_socket, buff2, strlen(buff2) + 1); + write(client_socket, buff, strlen(buff) + 1); + strcpy(buff, "*Humidity:"); + strcpy(buff2, "Temperature"); + //buff = "**Humidity:", buff2 = "Temperature"; + sleep(5); + + } + } + + close(client_socket); + close(smoke_dev); + close(buzzer_dev); + close(hydro_dev); + + return 0; +}