ubuntu上使用485通信

前段時間發現把yolov3程序弄完之後,還得把485通信加上,這樣才能與遠端進行協調,達到通信的目的。不然只能再本地上面看看,顯然是不合理的。寫了個通信demo,初步能夠485進行收發的操作。

/*************************************************************************
	> File Name: client.c
	> Author: fqlovetb
	> Created Time: Wed 21 August 2019 03:45:21 PM 
 ************************************************************************/
 
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <sys/un.h>
#include <arpa/inet.h>
#include <netinet/in.h>

//5004 is to port1 
//IP address 192.168.1.125
const int port = 5004;
const char* ip = "192.168.1.125"; 
 
int main()
{
	  //create socket 
	  int clt_sock = socket(AF_INET, SOCK_STREAM, 0); 
	  if(clt_sock < 0)
	  {

		  perror("socket");
		  return 1;
	  }
 
	  //name is socket 
	  struct sockaddr_in addr; 
	  addr.sin_family = AF_INET; 
	  addr.sin_port = htons(port); 
	  //IPv4 address
	  addr.sin_addr.s_addr = inet_addr(ip); 

          //struct sockaddr_in peer;
	  socklen_t addr_len = sizeof(addr);
	  int connect_fd = connect(clt_sock, (struct sockaddr*)&addr, addr_len);
	  if(connect_fd < 0)
	  {
		  perror("connect");
		  return 2;
	  }
	  char buf[1024];
 
	  while(1)
	  {
		  memset(buf, '\0', sizeof(buf));
		  printf("client please enter: ");
		  fflush(stdout);
		  ssize_t size = read(0, buf, sizeof(buf) - 1);
		  if(size > 0)
		  {
			  buf[size - 1] = '\0';
		  }
		  else if(size == 0)
		  {
			  printf("read is done...\n");
			  break;
		  }
		  else
		  {
			  perror("read");
			  return 4;
		  }
		 // printf("client: %s\n", buf);
          write(clt_sock, buf, strlen(buf));
		  size = read(clt_sock, buf, sizeof(buf));
		  if(size > 0)
		  {
		 	  buf[size] = '\0';
		  }
		  else if(size == 0)
		  {
			  printf("read is done...\n");
			  break;
		  }
		  else 
		  {
			  perror("read");
			  return 5;
		  }
		  printf("server: %s\n", buf);
	   }
	  close(clt_sock);
	  return 0;
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章