我有一个学校项目(由我自己选择),目的是使用python(或C ++)控制直升机。
我已经研究了大约两个星期,没有任何结果:-(。
我终于决定与大家分享我的问题,希望事情不会那么复杂。
Helicopter: 它共享一个开放的网络,您可以连接到它。
我的目标:我必须能够使用UDP这样的应用程序在UDP中向直升机共享网络发送命令(向上/向下/转发...): {3}}
我的问题:
我无法将计算机连接到直升机并进行控制。
提取应用程序的.apk文件后,我发现了我需要的有用信息,其中包括udp套接字必须连接的地址和端口,它们是:“ 192.168.10.123” 和端口: 60034 。
最重要的是,发送到网络以控制直升机的数据(字节数组)。
我不能放源代码,因为它很重。但是您可以下载multispy(6.6 MB),然后使用此apk提取它。在提取的Wifi.java文件夹搜索中,此类包含有用的信息。
在我了解了它的工作原理后,我开始将代码翻译为C ++ / Qt。这是一个快速示例:
void MainWindow::updateData()
{
QHostAddress host(QString("192.168.10.123"));
socket->connectToHost(host, 60034); // socket as a member
long buffer = GetPowerLeftRightValue();
char data[12];
data[0] = (char) -86;
data[1] = (char) 85;
data[2] = (char) (redContrFg| 96);
data[3] = (char) (((leavl & 7) << 5) | 21);
data[4] = (char) (((char) ((leavl >> 3) & 255)) & 255);
data[5] = (char) ((int) (buffer & 255));
data[6] = (char) ((int) ((buffer >> 8) & 255));
data[7] = (char) ((int) ((buffer >> 16) & 255));
data[8] = (char) ((((rudHeliLUpVal & 3) ^ ((rudHeliLUpVal >> 2) & 3)) << 4) | rudHeliLUpVal);
data[9] = (char) 0;
data[10] = (char) 0;
data[11] = 0;
for(int i=0; i<17; ++i)
data[11] += data[i];
socket->writeDatagram(data, 12, host, 60034);
}
redContrFg , rudHeliLUpVal ,buffer和 leavl 是我使用滑块修改的整数。每次更改滑块的值时,都会触发 updateData 方法。
但是不幸的是,这段代码对我不起作用。
我开始搜索类似这样的项目,并且发现了类似的tool。但老实说,我无法使其正常工作。
就是这样,我很抱歉,因为阅读所有这些内容真的很痛苦!
非常感谢您的任何建议,谢谢。