504|0

504

帖子

4

TA的资源

纯净的硅(高级)

楼主
 

【超小型 Linux 开发套件Quantum Tiny Linux】tinygl+mpu6050角度3D展示与UDP上报数据 [复制链接]

完整代码见附件

src.zip (146.34 KB, 下载次数: 0)

 

视频

9b61ba05a192d75540ecd38ec7187a08

 

b站视频


 

视频号

tinygl+mpu6050角度3D展示与UDP上报数据 (qq.com)

 

前面我们实现了角度数据的获取,显示,我们还可以将数据传输到云端,如果超过范围实现告警,实现地震,塌方,位移等地质灾害得预警。

 

板在wifi可以连接外网,我们使用udp协议上报数据,

增加udp.c udp.h 实现相关发送接口

 

Udp.c如下

#include <stdio.h>
#include <string.h>
#include <errno.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>

/* socket文件描述符 */
int sock_fd = -1;
struct sockaddr_in addr_serv;

int udp_init(char* ip, int port)
{
    if(sock_fd >= 0)
    {
        return 0;
    }

    /* 建立udp socket */
    sock_fd = socket(AF_INET, SOCK_DGRAM, 0);
    if(sock_fd < 0)
    {
        perror("socket");
        return -1;
    }

  /* 设置address */
  memset(&addr_serv, 0, sizeof(addr_serv));
  addr_serv.sin_family = AF_INET;
  addr_serv.sin_addr.s_addr = inet_addr(ip);
  addr_serv.sin_port = htons(port);

  return 0;
}

int udp_send(char* buffer, int len)
{
  int send_num;
  send_num = sendto(sock_fd, buffer, len, 0, (struct sockaddr *)&addr_serv, sizeof(addr_serv));
  if(send_num < 0)
  {
    perror("sendto error:");
    return -1;
  }
}

int udp_deinit(void)
{
    if(sock_fd >= 0)
    {
        close(sock_fd);
        sock_fd = -1;
    }
}

Udp.h如下

#ifndef UDP_H
#define UDP_H

#ifdef __cplusplus
extern "C" {
#endif

#include <stdint.h>

int udp_init(char* ip, int port);
int udp_send(char* buffer, int len);
int udp_deinit(void);

#ifdef __cplusplus
}
#endif

#endif 

上报数据

        snprintf(text,sizeof(text),"x:%f",th[0]);
        glDrawText((GLubyte *)text, 0, 0, 0xFF0000);
        udp_send(text, strlen(text));
        snprintf(text,sizeof(text),"y:%f",th[1]);
        glDrawText((GLubyte *)text, 0, 12, 0x00FF00);
        udp_send(text, strlen(text));
        snprintf(text,sizeof(text),"z:%f",th[2]);
        glDrawText((GLubyte *)text, 0, 24, 0x0000FF);
        udp_send(text, strlen(text));

完整代码见附件

 

 

编译

gcc tinygl/src/*.c cube.c lcd.c mpu6050.c mpu6050_itf.c udp.c -I tinygl/include/ -o cube -lm

 

运行

先连接wifi,

确认服务端ip地址 我这里是192.168.31.236

 

sudo python ~/WorkSpace/System/net/connect_wifi.py CMCC-bdgQ cqmygysdss

 

./cube 192.168.31.236 8243

 

 

测试效果见测试

 

 

点赞 关注

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表