鸿蒙大疆无人机,鸿蒙HarmonyOS 结合 大疆Tello TT无人机 开启智能家居物联网新模式...

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74#include

#include

#include

#include

#include "udp_client_test.h"

#include "net_common.h"

static char response[128] = "";

void UdpClientTest(const char* host, unsigned short port)

{

ssize_t retval = 0;

int sockfd = socket(AF_INET, SOCK_DGRAM, 0); // UDP socket

struct sockaddr_in toAddr = {0};

toAddr.sin_family = AF_INET;

toAddr.sin_port = htons(port); // 端口号,从主机字节序转为网络字节序

if (inet_pton(AF_INET, host, &toAddr.sin_addr) <= 0) { // 将主机IP地址从“点分十进制”字符串 转化为 标准格式(32位整数)

printf("inet_pton faiLED!\r\n");

goto do_cleanup;

}

// UDP socket 是 “无连接的” ,因此每次发送都必须先指定目标主机和端口,主机可以是多播地址

//从这里开始给无人机发送SDK中的指令,控制无人机

retval = sendto(sockfd, "command", sizeof("command"), 0, (struct sockaddr *)&toAddr, sizeof(toAddr));

printf("send UDP message {%s} %ld done!\r\n","command", retval);

osDelay(500);

retval = sendto(sockfd, "takeoff", sizeof("takeoff"), 0, (struct sockaddr *)&toAddr, sizeof(toAddr));

printf("send UDP message {%s} %ld done!\r\n","takeoff", retval);

osDelay(800);

retval = sendto(sockfd, "up 50", sizeof("up 50"), 0, (struct sockaddr *)&toAddr, sizeof(toAddr));

printf("send UDP message {%s} %ld done!\r\n","up 50", retval);

osDelay(500);

retval = sendto(sockfd, "flip r", sizeof("flip r"), 0, (struct sockaddr *)&toAddr, sizeof(toAddr));

printf("send UDP message {%s} %ld done!\r\n","flip r", retval);

osDelay(800);

retval = sendto(sockfd, "cw 360", sizeof("cw 360"), 0, (struct sockaddr *)&toAddr, sizeof(toAddr));

printf("send UDP message {%s} %ld done!\r\n","cw 360", retval);

osDelay(800);

retval = sendto(sockfd, "ccw 360", sizeof("ccw 360"), 0, (struct sockaddr *)&toAddr, sizeof(toAddr));

printf("send UDP message {%s} %ld done!\r\n","ccw 360", retval);

osDelay(500);

retval = sendto(sockfd, "flip r", sizeof("flip l"), 0, (struct sockaddr *)&toAddr, sizeof(toAddr));

printf("send UDP message {%s} %ld done!\r\n","flip r", retval);

osDelay(800);

retval = sendto(sockfd, "left 80", sizeof("left 80"), 0, (struct sockaddr *)&toAddr, sizeof(toAddr));

printf("send UDP message {%s} %ld done!\r\n","left 80", retval);

osDelay(500);

retval = sendto(sockfd, "right 80", sizeof("right 80"), 0, (struct sockaddr *)&toAddr, sizeof(toAddr));

printf("send UDP message {%s} %ld done!\r\n","right 80", retval);

osDelay(500);

retval = sendto(sockfd, "land", sizeof("land"), 0, (struct sockaddr *)&toAddr, sizeof(toAddr));

printf("send UDP message {%s} %ld done!\r\n","land", retval);

struct sockaddr_in fromAddr = {0};

socklen_t fromLen = sizeof(fromAddr);

// UDP socket 是 “无连接的” ,因此每次接收时前并不知道消息来自何处,通过 fromAddr 参数可以得到发送方的信息(主机、端口号)

retval = recvfrom(sockfd, &response, sizeof(response), 0, (struct sockaddr *)&fromAddr, &fromLen);

if (retval <= 0) {

printf("recvfrom failed or abort, %ld, %d!\r\n", retval, errno);

goto do_cleanup;

}

response[retval] = '\0';

printf("recv UDP message {%s} %ld done!\r\n", response, retval);

printf("peer info: ipaddr = %s, port = %d\r\n", inet_ntoa(fromAddr.sin_addr), ntohs(fromAddr.sin_port));

do_cleanup:

printf("do_cleanup...\r\n");

close(sockfd);

}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
《项目介绍》 基于Python实现大疆特洛多机编队飞行多视频流获取源码+说明文档.zip基于Python实现大疆特洛多机编队飞行多视频流获取源码+说明文档.zip - 支持使用所有的tello命令 - 轻松获取视频流 - 接受并解析状态包 - 操控多架无人机 - 编队飞行时获取多架无人机的视频流 - 支持Python3.6以上版本 简单示例 ```python from djitellopy import Tello tello = Tello() tello.connect() tello.takeoff() tello.move_left(100) tello.rotate_counter_clockwise(90) tello.move_forward(100) tello.land() ``` 提示 - 如果你使用 ```streamon``` 命令时返回 ```Unknown command```,你需要通过Tello app升级固件。 - 挑战卡识别与导航只支持Tello EDU - 必须在明亮的环境下识别挑战卡 - 只有Tello EDU支持连接一个已存在的wifi - 当连接一个已存在wifi时视频流不可用 【注】 1.项目代码均经过功能验证ok,确保稳定可靠运行。欢迎下载使用体验! 2.主要针对各个计算机相关专业,包括计算机科学、信息安全、数据科学与大数据技术、人工智能、通信、物联网等领域的在校学生、专业教师、企业员工。 3.项目具有丰富的拓展空间,不仅可作为入门进阶,也可直接作为毕设、课程设计、大作业、初期项目立项演示等用途。 4.当然也鼓励大家基于此进行二次开发。在使用过程中,如有问题或建议,请及时沟通。 5.期待你能在项目中找到乐趣和灵感,也欢迎你的分享和反馈!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值