上位机获取系统时间,通过udp发送
和sample/vio同级别,makefile没有修改
#ifdef __cplusplus #if __cplusplus extern "C" { #endif #endif #includePC python 代码#include #include #include #include #include #include #include #include #include #include "sys/time.h" #include #include #include #include "sample_comm.h" #define UDP_TEST_PORT 1864 #define UDP_SERVER_IP "192.168.0.51" struct timeval t2; int time_us; int send_udp_str(char *ip, int port, char* str,int len) { int ret = 0; if (str == NULL) { ret = -1; return ret; } struct sockaddr_in server; int sockfd = 0; // int server_len = sizeof(struct sockaddr_in); int server_len = sizeof(struct sockaddr_in); if ((sockfd = socket(AF_INET, SOCK_DGRAM, 0)) < 0) { perror("socket"); ret = -1; return ret; } bzero(&server, sizeof(server)); server.sin_family = AF_INET; server.sin_port = htons(port); server.sin_addr.s_addr = inet_addr(ip); if (sendto(sockfd, str, len, 0, (struct sockaddr *) &server, server_len) < 0) { printf("sendto errorn"); ret = -2; } close(sockfd); return ret; } int main(int argc, char* argv[]) { int ret = 0; char *ipAddr = UDP_SERVER_IP; int port = UDP_TEST_PORT; int err; // ----------------新建socket,发送UDP包到服务端线程---------------- struct sockaddr_in server; bzero(&server, sizeof(server)); server.sin_family = AF_INET; server.sin_port = htons(port); server.sin_addr.s_addr = inet_addr(ipAddr); int sockfd = 0; if ((sockfd = socket(AF_INET, SOCK_DGRAM, 0)) < 0) { perror("socket"); err = -1; return err; } // int count = 1; ipAddr = "192.168.0.51"; port = 1864; char tmpStr[4096]; int count1 = 1; while(count1 <= 10) { gettimeofday(&t2, NULL); time_us = (t2.tv_sec) * 1000000 + t2.tv_usec; ret = send_udp_str(ipAddr, port, (char *)&time_us,4); printf("count = %d; num = %d;ret = %dn", count1, time_us,ret);//发送数据 sleep(1); count1++; } SAMPLE_PRT("udp exit success!n"); return 0; } #ifdef __cplusplus #if __cplusplus } #endif #endif
上位机拆包,接收到数据逐个转换成Int,并且判断 如果接收到的全都是字母则退出程序
#!/usr/bin/python from socket import * #socket模块 import numpy as np HOST = '192.168.0.51' PORT = 1864 s= socket(AF_INET,SOCK_DGRAM) #定义socket类型,网络通信,UDP #s.bind((HOST,PORT)) #套接字绑定的IP与端口 ADDR = (HOST,PORT) s.bind(ADDR) while 1: data,addr=s.recvfrom(1024) #接受TCP连接,并返回新的套接字与IP地址 # print ('Connected by',addr) #输出客户端的IP地址 print(np.frombuffer(data, dtype=np.uint8)) if bytes.isalpha(data) : break s.close() #关闭连接