В моем Adv. C++
В классе мы работаем с роботами Finch, которые являются маленькими USB-роботами, которые имеют множество различных функций, встроенных в аппаратное обеспечение, например, цвет клюва, управление двигателем и множество датчиков.
Нам «дали» C++
Функциональное меню Finch Test построить из GUI
от. Мы должны использовать Visual Studio 2017, и C++
создать форму Windows, которая запускает команды из функций Finch, другими словами MyForm.h
запускает команды из main.cpp
,
Теперь мы (весь класс разбит на четыре группы) полностью остановились, нам нужно выяснить, как запускаться из формы Windows (MyForm.h
) вместо командной строки (main.cpp
) все еще используя код внутри main.cpp
,
У нас также есть доступ к Finch.cpp
, который я не смог уместить в этом посте, который, как я вижу, просто связывает зяблик с компьютером, но я подумал, что добавлю его в любом случае на всякий случай.
Мы спросили профессора, как мы должны это делать, и он сказал, «Это то, что вы пытаетесь выяснить» поэтому здесь я прошу всей вашей помощи в попытке выяснить это.
Спасибо всем за ваше время!
#include "./Finch/Finch.h"#include <iostream>
using namespace std;
void printMenu() {
std::cout << "Finch Test Menu: \n"<< "A - print accelerometer values\n"<< "o - print orientation state\n"<< "L - print light sensor values\n"<< "I - print IR sensor values\n"<< "T - print temperature\n"<< "S - print if Finch has been shaken\n"<< "t - print if Finch has been tapped\n"<< "B - turn on buzzer\n"<< "b - turn off buzzer\n"<< "M - turn on Motors\n"<< "X - motor stop\n"<< "O - set beak LED\n"<< "m - print menu\n"<< "Q - quit program\n";
}
int main(int /*argc*/, char* /*argv*/[]) {
Finch myFinch;
if (!myFinch.isInitialized()) {
return -1;
}
double* accel = 0;
int* lightSense = 0;
int* obstacles = 0;
char option = 0;
double temperature;
int leftSpeed, rightSpeed;
int rLED, gLED, bLED;
int frequency;
int shaken, tapped;
int duration;
printMenu();
while(option != 'Q') {
cout << "Enter desired command: ";
cin >> option;
if (cin.fail()) {
// End of input
break;
}
cin.ignore(10000, '\n');
switch(option) {
case 'A':
accel = myFinch.getAccelerations();
cout << "X: " << accel[0]
<< ", Y: " << accel[1]
<< ", Z: " << accel[2] << '\n';
delete [] accel;
accel = 0;
break;
case 'o':
cout << "Level: " << myFinch.isFinchLevel() << '\n'
<< "Beak Up: " << myFinch.isBeakUp() << '\n'
<< "Beak Down: " << myFinch.isBeakDown() << '\n'
<< "Upside Down: " << myFinch.isFinchUpsideDown() << '\n'
<< "Left Wheel Down: " << myFinch.isLeftWingDown() << '\n'
<< "Right Wheel Down: " << myFinch.isRightWingDown() << '\n';
break;
case 'L':
lightSense = myFinch.getLightSensors();
cout << "Left: " << lightSense[0]
<< ", Right: " << lightSense[1] << '\n';
delete [] lightSense;
lightSense = 0;
break;
case 'I':
obstacles = myFinch.getObstacleSensors();
cout << "Left: " << obstacles[0]
<< ", Right: " << obstacles[1] << '\n';
delete [] obstacles;
obstacles = 0;
break;
case 'T':
temperature = myFinch.getTemperature();
cout << temperature << " Celcius\n";
break;
case 'S':
shaken = myFinch.wasShaken();
cout << "Shaken state: " << shaken << '\n';
break;
case 't':
tapped = myFinch.wasTapped();
cout << "Tapped state: " << tapped << '\n';
break;
case 'B':
cout << "Enter frequency in Hz: ";
cin >> frequency;
cin.ignore(10000, '\n');
myFinch.noteOn(frequency);
break;
case 'b':
myFinch.noteOff();
break;
case 'M':
cout << "Enter left wheel speed (-255 to 255): ";
cin >> leftSpeed;
cout << "Enter right wheel speed (-255 to 255): ";
cin >> rightSpeed;
cin.ignore(10000, '\n');
myFinch.setMotors(leftSpeed, rightSpeed);
break;
case 'Z':
cout << "Enter left wheel speed (-255 to 255): ";
cin >> leftSpeed;
cout << "Enter right wheel speed (-255 to 255): ";
cin >> rightSpeed;
cout << "Enter duration in ms: ";
cin >> duration;
cin.ignore(10000, '\n');
myFinch.setMotors(leftSpeed, rightSpeed, duration);
break;
case 'X':
myFinch.setMotors(0, 0);
break;
case 'O':
cout << "Enter red color value (0-255): ";
cin >> rLED;
cout << "Enter green color value (0-255): ";
cin >> gLED;
cout << "Enter blue color value (0-255): ";
cin >> bLED;
cin.ignore(10000, '\n');
myFinch.setLED(rLED, gLED, bLED);
break;
case 'c':
cout << myFinch.counter() << '\n';
break;
case 'm':
printMenu();
break;
default:
break;
}
}
return 0;
}
Задача ещё не решена.
Других решений пока нет …