大疆妙算3

简单连接方式及demo

SDK

两种方式:

  • 一种是通过USB-C直接供电+网络传输
  • 一种是通过无人机

使用USB-C一定要使用推荐的扩展坞!需要65W供电!

to connect

连接

通过路由器查看ip:

dji connect

通过ssh连接到妙算3

dji ssh

demo运行

创建应用

create app

create app info

发送右键以激活应用

create app send email

应用已经激活

create app activate

下载SDKhttps://github.com/dji-sdk/Payload-SDK/releases

编译对应文件

cd Payload-SDK-3.16.0/
mkdir build
cd build
cmake ..
make

demo exec

通信

py connect

客户端

import socket
import threading

HOST = '192.168.1.9'
PORT = 6000

client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client.connect((HOST, PORT))

# 接收线程
def recv_thread():
    while True:
        try:
            data = client.recv(1024)
            if not data:
                break
            print("\n[recv]:", data.decode())
        except:
            break

threading.Thread(target=recv_thread, daemon=True).start()

# 主线程负责发送
while True:
    msg = input(">> ")
    if not msg:
        break
    client.sendall(msg.encode())

client.close()

服务端

dji@tegra-ubuntu:~/demo$ ls
py_server.py
dji@tegra-ubuntu:~/demo$ cat py_server.py

import socket
import threading

def handle_client(conn, addr):
    print(f"Connected: {addr}")

    # 接收线程
    def recv_thread():
        while True:
            try:
                data = conn.recv(1024)
                if not data:
                    break
                print(f"\n[{addr} recv]: {data.decode()}")
            except:
                break

    threading.Thread(target=recv_thread, daemon=True).start()

    # 服务端也可以主动发送
    while True:
        msg = input(f"[send to {addr}] >> ")
        if not msg:
            break
        conn.sendall(msg.encode())

    conn.close()

server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.bind(('0.0.0.0', 6000))
server.listen(5)

print("Server started")

while True:
    conn, addr = server.accept()
    threading.Thread(target=handle_client, args=(conn, addr)).start()

comment: