Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <sys/socket.h>
- #include <netinet/in.h>
- #include <arpa/inet.h>
- #include <unistd.h>
- #include <string.h>
- double RPI(double val, double m_time) {
- // logging
- FILE *log = fopen("/home/czajos/MOS/log.txt", "a+");
- if (log == NULL) {
- return -1;
- }
- // time log
- fprintf(log, "time %f\r\n", m_time);
- int sd, portno, n;
- struct sockaddr_in serv_addr;
- struct hostent *server;
- char buffer[256];
- // Create a socket point
- sd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
- if (sd < 0) {
- fprintf(log, "opening socket FAILED\r\n");
- return 1;
- }
- // setup socket
- serv_addr.sin_family = AF_INET;
- serv_addr.sin_addr.s_addr = inet_addr("192.168.0.14");
- serv_addr.sin_port = htons(8888);
- // connect
- if (connect(sd, (struct sockaddr*)&serv_addr, sizeof(serv_addr)) < 0) {
- fprintf(log, "connecting FAILED\r\n");
- return 1;
- }
- // turn led on/off depending on the value
- int slen = sprintf(buffer, "%d", (int)(val) % 2) + 1;
- // send value to RPI
- int bwrote = write(sd, buffer, slen);
- if (bwrote < 0) {
- fprintf(log, "writing to socket FAILED\r\n");
- }
- // shutdown write ops.
- shutdown(sd, SHUT_WR);
- // receive RPI temperature
- double temp = -1;
- int bread = read(sd, buffer, 256);
- if (bread > 0) {
- fprintf(log, "%d received\r\n", bread);
- temp = atof(buffer);
- } else if (bread == 0) {
- fprintf(log, "none received\r\n");
- } else {
- fprintf(log, "receive FAILED\r\n");
- }
- // shutdown read ops.
- shutdown(sd, SHUT_RD);
- // close socket
- int result = close(sd);
- if (result == 0) {
- fprintf(log, "close OK\r\n");
- } else {
- fprintf(log, "close FAILED\r\n");
- }
- // optional sleep
- usleep(100*1000);
- // return temperature
- return temp;
- }
Add Comment
Please, Sign In to add comment