You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
58 lines
1.0 KiB
58 lines
1.0 KiB
#include <termio.h>
|
|
#include <stdio.h>
|
|
#include "Hardwarelistener.h"
|
|
#include <iostream>
|
|
|
|
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(Tello T, sockaddr_in serveraddr){
|
|
while(1){
|
|
switch(scanKeyboard())
|
|
{
|
|
case (int)'w':
|
|
cout << "forward"<< endl;
|
|
T.forward(serveraddr);
|
|
break;
|
|
case (int)'s':
|
|
cout << "back" << endl;
|
|
T.back(serveraddr);
|
|
break;
|
|
case (int)'a':
|
|
cout << "left" <<endl;
|
|
T.left(serveraddr);
|
|
break;
|
|
case (int)'d':
|
|
cout << "right"<<endl;
|
|
T.right(serveraddr);
|
|
break;
|
|
}
|
|
}
|
|
return 0;
|
|
|
|
// while(1){
|
|
// printf("%d\n",scanKeyboard());
|
|
// }
|
|
}
|