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

📄 topology3_s1.c

📁 主要用于无线传感网络的编写的书籍.对于初学者有着很大的用处
💻 C
字号:
#include "../layers/physical/serial_connect.h"#include "../debug/debug.h"#include "../layers/network/packet.h"#include <stdio.h>   /* Standard input/output definitions */#include <string.h>  /* String function definitions */#include <unistd.h>  /* UNIX standard function definitions */#include <fcntl.h>   /* File control definitions */#include <errno.h>   /* Error number definitions */#include <termios.h> /* POSIX terminal control definitions */#include <sys/types.h>#include <sys/socket.h>#include <netinet/in.h>#include <netdb.h>#include <pthread.h>/******************************************************************* * argv[1] is the serial port,  run this program like: * ptest /dev/tts/2 *******************************************************************/#define MICA1_BAUDRATE B19200		/* MICA1 baudrate */#define MICA2_BAUDRATE B57600		/* MICA2 baudrate */#define DEFAULT_BAUDRATE B57600		/* Default is MICA2 */char *serial_port;int sfd,flag=0;char mote = 2;int sockfd, portno;struct sockaddr_in serv_addr;struct hostent *server;//networkPkt p;/* Open serial channel to mote */ void open_serial() {  struct termios tio;  sfd = open(serial_port, O_RDWR|O_NOCTTY);  if (sfd < 0) {    fprintf(stderr,"Cannot open serial device %s\n", serial_port);    exit(-1);  }  /* Serial port setting */  bzero(&tio, sizeof(tio));  tio.c_iflag &= ~(IGNPAR | BRKINT | PARMRK | ISTRIP                    | INLCR | IGNCR | ICRNL | IXON);    tio.c_cflag &= ~(CSIZE | PARENB);  if (mote == 1)    tio.c_cflag |= MICA1_BAUDRATE | CS8 | CLOCAL | CREAD;  else if (mote == 2)    tio.c_cflag |= MICA2_BAUDRATE | CS8 | CLOCAL | CREAD;  else    tio.c_cflag |= DEFAULT_BAUDRATE | CS8 | CLOCAL | CREAD;  /* Raw output_file */  tio.c_oflag &= ~OPOST;  tio.c_lflag &= ~(ECHO|ECHONL|ICANON|ISIG|IEXTEN);    /* Flush buffer; parameters take effect immediately */  tcflush(sfd, TCIFLUSH);  tcsetattr(sfd, TCSANOW, &tio);  /* Enable non-blocking IO */  fcntl(sfd, F_SETFL, O_NONBLOCK);}/* Display error messages */void error(char *msg){    perror(msg);    exit(0);}/* The client will send a packet to the server in other stargate with IP Address: 10.1.1.3 */void client(networkPkt *p){  int n;  networkPkt p1;     p1.hdr.address = p->hdr.address;     p1.hdr.port = p->hdr.port;     p1.hdr.group = p->hdr.group;     p1.hdr.length = p->hdr.length;     p1.data[0] = p->data[0];     p1.data[1] = p->data[1];     p1.data[2] = p->data[2];     p1.data[3] = p->data[3];     p1.data[4] = p->data[4];     p1.data[5] = p->data[5];     p1.data[6] = p->data[6];     p1.data[7] = p->data[7];     p1.data[8] = p->data[8];    if(flag == 0)      {	flag = 1;    portno = 8888;    sockfd = socket(AF_INET, SOCK_STREAM, 0);    if (sockfd < 0)         error("ERROR opening socket");    server = gethostbyname("10.1.1.3");    if (server == NULL) {        fprintf(stderr,"ERROR, no such host\n");        exit(0);    }    bzero((char *) &serv_addr, sizeof(serv_addr));    serv_addr.sin_family = AF_INET;    bcopy((char *)server->h_addr,          (char *)&serv_addr.sin_addr.s_addr,         server->h_length);    serv_addr.sin_port = htons(portno);    if (connect(sockfd,&serv_addr,sizeof(serv_addr)) < 0)         error("ERROR connecting");      }    n = write(sockfd,&p1,sizeof(p1));    if (n < 0)          error("ERROR writing to socket");    printf("Packet sent successfully to other Stargate through WiFi as follows:\n");    printf("The message is:\n");    printPacket(DBG_USR, CRITICAL, stdout, &p1);}int main(int argc, char *argv[]) {  networkPkt p;  frame f;  int insync = 0;  char temp = '\0';  int rc,t=0;  pthread_t threads;  setupDebug(DBG_ALL, CRITICAL);    serial_port=argv[1];  open_serial();   while(1) // wait for any packet recieved by the serial port via the radio channel of mote   {       if (readNetworkPkt(sfd, &p) != SUCCESS)       {         printf("COULD NOT READ PACKET!!!!\n");      }      else       {             printf("Packet successfully read from MOTE\n");             printPacket(DBG_USR, CRITICAL, stdout, &p);             client(&p);      }      }    closeSerialPort(sfd);  return 0;}

⌨️ 快捷键说明

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