上位机获取系统时间,通过udp发送
和sample/vio同级别,makefile没有修改
#ifdef __cplusplus
#if __cplusplus
extern "C" {
#endif
#endif
#include
#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
PC python 代码
上位机拆包,接收到数据逐个转换成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() #关闭连接



