diff --git a/src/Djitellowhite/Djitellowhite.cpp b/src/Djitellowhite/Djitellowhite.cpp deleted file mode 100644 index 9ebb3b5..0000000 --- a/src/Djitellowhite/Djitellowhite.cpp +++ /dev/null @@ -1,106 +0,0 @@ -#include"Djitellowhite.h" -#include -#include - - -#include -#include -#include - -#include -#include - -using namespace cv; -using namespace std; -Tello::Tello(const char* IP) { - this->stream_on=false; - this->host = inet_addr(IP); - cout << "create successfully!" << endl; - -} -Tello::~Tello() {} -void Tello::set_conf(int socket){ - this->sock = socket; -} -void Tello::get_connect(sockaddr_in serveraddr) { - char tmp[10] = {"command"}; - send_message(tmp,serveraddr,0);// 0 -> timeout - cout << "connect successfully!" <host; -} -void Tello::takeoff(sockaddr_in serveraddr) { - char tmp[10] = {"takeoff"}; - send_message(tmp,serveraddr,0);// 0 -> timeout - cout << "takeoff successfully!" < timeout - cout << "land successfully!" <sock,buffer,strlen(buffer),0,(struct sockaddr *)&server_addr, sizeof(server_addr)); - return true; -} -void* Tello::udp_response_receiver(void* arg){ - //int m_SockServer; //创建socket对象 - //sockaddr_in serveraddr; //创建sockaddr_in对象储存自身信息(当有多个端口,可以多个绑定) - //sockaddr_in serveraddrfrom; - - //serveraddr.sin_family = AF_INET; //设置服务器地址家族 - //serveraddr.sin_port = htons(8889); //设置服务器端口号 - //serveraddr.sin_addr.s_addr = inet_addr("0.0.0.0"); - //m_SockServer = socket(AF_INET, SOCK_DGRAM, 0); //创建一个临时变量并赋值给m_SockServer - //int i = bind(m_SockServer, (sockaddr*)&serveraddr, sizeof(serveraddr)); //把名字和套接字绑定 - //std::cout << "bind:" << i << std::endl; - - int socket = *(int *)arg; - - cout << "receive start" << endl; - while(1){ - char buffer[20]; - int iret; - memset(buffer,0,sizeof(buffer)); - - iret = recv(socket, buffer,20,MSG_WAITALL); - if(iret > 0 && iret <10){ - printf("Message from tello: %s\n", buffer); - } - } -} -void Tello::get_video(sockaddr_in serveraddr){ - - char tmp[10] = {"streamon"}; - send_message(tmp,serveraddr,0); - cout << "stream_on successfully!" <stream_on = true; - - cout << "vid"; - VideoCapture cap("udp://@0.0.0.0:11111"); - cout << "cap"; - if(!cap.isOpened()){ - cout << "fuck off"; - return; - } - - Mat frame; - cout << "continue!"; - while(1){ - cap>>frame; - if(frame.empty()) - break; - imshow("video",frame); - waitKey(20); - - } - cap.release(); - - -} diff --git a/src/Djitellowhite/Djitellowhite.h b/src/Djitellowhite/Djitellowhite.h deleted file mode 100644 index b311e46..0000000 --- a/src/Djitellowhite/Djitellowhite.h +++ /dev/null @@ -1,72 +0,0 @@ -#ifndef _DJITELLOWHITE_H -#define _DJITELLOWHITE_H -#include -#include -#include -#include -#include -#include -/*Library for interacting with DJI Ryze Tello drones.*/ - - -//coding = utf - 8 - -/* """C++ wrapper to interact with the Ryze Tello drone using the official Tello api. - Tello API documentation: - [1.3](https://dl-cdn.ryzerobotics.com/downloads/tello/20180910/Tello%20SDK%20Documentation%20EN_1.3.pdf) -*/ - -#define RESPONSE_TIMEOUT 7 //in seconds -#define TAKEOFF_TIMEOUT 20 //in seconds -#define FRAME_GRAB_TIMEOUT 3 -#define TIME_BTW_COMMANDS 0.1 //in seconds -#define TIME_BTW_RC_CONTROL_COMMANDS 0.001 //in seconds -#define RETRY_COUNT 3 //number of retries after a failed command - - -//Video stream, server socket -#define VS_UDP_IP "0.0.0.0" -#define VS_UDP_PORT 11111 - -#define CONTROL_UDP_PORT 8889 -#define STATE_UDP_PORT 8890 - -#define BUFFER_SIZE 1024 -//Constants for video settings -#define BITRATE_AUTO 0 -#define BITRATE_1MBPS 1 -#define BITRATE_2MBPS 2 -#define BITRATE_3MBPS 3 -#define BITRATE_4MBPS 4 -#define BITRATE_5MBPS 5 -#define RESOLUTION_480P "low" -#define RESOLUTION_720P "high" -#define FPS_5 "low" -#define FPS_15 "middle" -#define FPS_30 "high" -#define CAMERA_FORWARD 0 -#define CAMERA_DOWNWARD 1 -//日志模块暂时不写 - -class Tello { -private: - int sock; - bool stream_on; - unsigned long host; -public: - Tello(const char* IP); - ~Tello(); - void set_conf(int socket); - unsigned long gethost(); - void get_connect(sockaddr_in serveraddr); - void takeoff(sockaddr_in serveraddr); - void land(sockaddr_in serveraddr); - bool send_message(char* msg,sockaddr_in server_addr,int timeout = RESPONSE_TIMEOUT); - static void *udp_response_receiver(void* arg); - void get_video(sockaddr_in serveraddr); -}; - - - - -#endif diff --git a/src/Djitellowhite/Hardwarelistener.h b/src/Djitellowhite/Hardwarelistener.h deleted file mode 100644 index 176cde8..0000000 --- a/src/Djitellowhite/Hardwarelistener.h +++ /dev/null @@ -1,6 +0,0 @@ -#ifndef _HARDWARELISTENER_H -#define _HARDWARELISTENER_H - -int listenkeyboard(); -int scanKeyboard(); -#endif diff --git a/src/Djitellowhite/T b/src/Djitellowhite/T deleted file mode 100755 index b2cf1f7..0000000 Binary files a/src/Djitellowhite/T and /dev/null differ diff --git a/src/Djitellowhite/Triplet.cpp b/src/Djitellowhite/Triplet.cpp deleted file mode 100644 index 1456006..0000000 --- a/src/Djitellowhite/Triplet.cpp +++ /dev/null @@ -1,45 +0,0 @@ -#include"Djitellowhite.h" -#include"Hardwarelistener.h" -#include -using namespace std; -int main(void){ - Tello T("192.168.10.1"); - int socket_fd, err; - - if((socket_fd = socket(PF_INET,SOCK_DGRAM,IPPROTO_UDP))==-1) - { - cout << "initialized error" << endl; - cout << 0; - return -1; - } - - //cout << 1 << socket_fd; - T.set_conf(socket_fd); - - pthread_t thread_receive; - err = pthread_create(&thread_receive,nullptr,T.udp_response_receiver,&socket_fd); - sleep(3); - struct sockaddr_in serveraddr; - memset(&serveraddr,0,sizeof(serveraddr)); - serveraddr.sin_family=AF_INET; - serveraddr.sin_addr.s_addr=T.gethost(); - serveraddr.sin_port=htons(CONTROL_UDP_PORT); - - - - if(err!=0) - { - cout << err << " " << "can't create thread"; - } - - T.get_connect(serveraddr); - //sleep(1); - //T.takeoff(serveraddr); - T.get_video(serveraddr); - sleep(5); - //T.land(serveraddr); - - pthread_join(thread_receive,NULL); - listenkeyboard(); - return 0; -} diff --git a/src/Djitellowhite/keyboard.cpp b/src/Djitellowhite/keyboard.cpp deleted file mode 100644 index 3006537..0000000 --- a/src/Djitellowhite/keyboard.cpp +++ /dev/null @@ -1,52 +0,0 @@ -#include -#include -#include "Hardwarelistener.h" -#include -using namespace std; -int scanKeyboard() -{ - - int in; - - struct termios new_settings; - struct termios stored_settings; - //设置终端参数 - tcgetattr(0,&stored_settings); - new_settings = stored_settings; - new_settings.c_lflag &= (~ICANON); - new_settings.c_cc[VTIME] = 0; - tcgetattr(0,&stored_settings); - new_settings.c_cc[VMIN] = 1; - tcsetattr(0,TCSANOW,&new_settings); - in = getchar(); - tcsetattr(0,TCSANOW,&stored_settings); - - return in; - -} - -//测试函数 -int listenkeyboard(){ - while(1){ - switch(scanKeyboard()) - { - case (int)'w': - cout << "forward"<< endl; - break; - case (int)'s': - cout << "back" << endl; - break; - case (int)'a': - cout << "left" < -#include -#include -#include -#include -#include -#include -#include -#define PORT 8890 - -void udp_server(int sockfd) -{ - - socklen_t len; - char buf[1024] = {0}; - struct sockaddr_in server_addr; - int n; - int opt = 1; - len = sizeof(server_addr); - memset(&buf, 0, sizeof(buf)); - server_addr.sin_family = AF_INET; - server_addr.sin_addr.s_addr = htonl(INADDR_ANY); - server_addr.sin_port = htons(PORT); - - setsockopt(sockfd, SOL_SOCKET, SO_REUSEADDR, &opt, sizeof(opt)); //当服务器非正常断开的时候重启服务器,不会进入TIME_WAIT状态 - - if (bind(sockfd, (struct sockaddr *)&server_addr, sizeof(server_addr)) < 0) { - printf("can not bind\n"); - exit(1); - } - - while (1) { - printf("========wait for client's request========\n"); - n = recvfrom(sockfd, buf, sizeof(buf), 0, (struct sockaddr *)&server_addr, &len); - buf[n] = '\0'; - printf("receive client's data: %s\n", buf); - sendto(sockfd, buf, n, 0, (struct sockaddr *)&server_addr, len); - printf("send data to client: %s\n", buf); - } - - close(sockfd); -} - -int main(int argc, char **argv) -{ - int sockfd; - - if ((sockfd = socket(PF_INET, SOCK_DGRAM, 0)) < 0) { - printf("create socket false\n"); - exit(1); - } - - udp_server(sockfd); - - exit(0); -} - - diff --git a/src/Djitellowhite/test b/src/Djitellowhite/test deleted file mode 100755 index db2feac..0000000 Binary files a/src/Djitellowhite/test and /dev/null differ