kubtss / Mbed 2 deprecated BIRD2017

Dependencies:   mbed-rtos mbed

Committer:
shimogamo
Date:
Sun Jun 19 13:00:10 2016 +0000
Revision:
22:c85649ff834b
Parent:
21:b1419813f2d4
Child:
26:a53c3208ac35
init?write??????(write?????LocalFile???????)

Who changed what in which revision?

UserRevisionLine numberNew contents of line
shimogamo 9:d1fc0805ec7d 1 #include "mbed.h"
shimogamo 9:d1fc0805ec7d 2 #include "Global.h"
shimogamo 9:d1fc0805ec7d 3 #include "Init.h"
shimogamo 9:d1fc0805ec7d 4 #include <string>
shimogamo 9:d1fc0805ec7d 5 #include <iostream>
shimogamo 9:d1fc0805ec7d 6
shimogamo 9:d1fc0805ec7d 7 std::string Init::strbuf;
shimogamo 9:d1fc0805ec7d 8
shimogamo 9:d1fc0805ec7d 9 void Init::getSerial(){
shimogamo 12:8e39bb45c61c 10 osEvent evt = Global::initqueue.get();
shimogamo 9:d1fc0805ec7d 11 if(evt.status == osEventMessage){
shimogamo 9:d1fc0805ec7d 12 char temp = evt.value.v;
shimogamo 9:d1fc0805ec7d 13 strbuf.push_back(temp);
shimogamo 9:d1fc0805ec7d 14 if(temp == '\n'){
shimogamo 9:d1fc0805ec7d 15 std::string::size_type spaceIndex = strbuf.find(" ");
shimogamo 9:d1fc0805ec7d 16
shimogamo 9:d1fc0805ec7d 17 if (spaceIndex != std::string::npos) {//数値データがあるコマンド(" "がある場合)
shimogamo 9:d1fc0805ec7d 18 char *gomi;
shimogamo 9:d1fc0805ec7d 19 std::string command = strbuf.substr(0, spaceIndex);
shimogamo 9:d1fc0805ec7d 20 double num = strtod(strbuf.substr(spaceIndex+1, strbuf.size()-2).c_str(), &gomi);//strbuf.size()-1には'\n'が入っている
shimogamo 9:d1fc0805ec7d 21 printf("coms=%s, num=%f\n", command.c_str(), num);
shimogamo 9:d1fc0805ec7d 22 setting(command, num);
shimogamo 9:d1fc0805ec7d 23
shimogamo 9:d1fc0805ec7d 24 }else{//数値データがないコマンド(" "がない場合)
shimogamo 9:d1fc0805ec7d 25 std::string command = strbuf.substr(0,strbuf.size()-2);
shimogamo 9:d1fc0805ec7d 26 setting(command);
shimogamo 9:d1fc0805ec7d 27 }
shimogamo 9:d1fc0805ec7d 28 strbuf.clear();
shimogamo 9:d1fc0805ec7d 29 }
shimogamo 9:d1fc0805ec7d 30 if(strbuf.size() > 30)strbuf.clear();
shimogamo 9:d1fc0805ec7d 31 }
shimogamo 9:d1fc0805ec7d 32 }
shimogamo 9:d1fc0805ec7d 33
shimogamo 9:d1fc0805ec7d 34
shimogamo 9:d1fc0805ec7d 35 void Init::setting(std::string command, double num){
shimogamo 9:d1fc0805ec7d 36 if(command == "eleneu"){
shimogamo 9:d1fc0805ec7d 37 Global::setneutralpitch(num);
shimogamo 9:d1fc0805ec7d 38 }else if(command == "elemax"){
shimogamo 9:d1fc0805ec7d 39 Global::setmaxpitch(num);
shimogamo 9:d1fc0805ec7d 40 }else if(command == "elemin"){
shimogamo 9:d1fc0805ec7d 41 Global::setminpitch(num);
shimogamo 9:d1fc0805ec7d 42 }else if(command == "rudneu"){
shimogamo 9:d1fc0805ec7d 43 Global::setneutralyaw(num);
shimogamo 9:d1fc0805ec7d 44 }else if(command == "rudmax"){
shimogamo 9:d1fc0805ec7d 45 Global::setmaxyaw(num);
shimogamo 9:d1fc0805ec7d 46 }else if(command == "rudmin"){
shimogamo 9:d1fc0805ec7d 47 Global::setminyaw(num);
shimogamo 9:d1fc0805ec7d 48
shimogamo 9:d1fc0805ec7d 49 }else if(command == "eleneudeg"){
shimogamo 9:d1fc0805ec7d 50 Global::setneutralpitchdegree(num);
shimogamo 9:d1fc0805ec7d 51 }else if(command == "elemaxdeg"){
shimogamo 9:d1fc0805ec7d 52 Global::setmaxpitchdegree(num);
shimogamo 9:d1fc0805ec7d 53 }else if(command == "elemindeg"){
shimogamo 9:d1fc0805ec7d 54 Global::setminpitchdegree(num);
shimogamo 9:d1fc0805ec7d 55 }else if(command == "rudneudeg"){
shimogamo 9:d1fc0805ec7d 56 Global::setneutralyawdegree(num);
shimogamo 9:d1fc0805ec7d 57 }else if(command == "rudmaxdeg"){
shimogamo 9:d1fc0805ec7d 58 Global::setmaxyawdegree(num);
shimogamo 9:d1fc0805ec7d 59 }else if(command == "rudmindeg"){
shimogamo 9:d1fc0805ec7d 60 Global::setminyawdegree(num);
shimogamo 9:d1fc0805ec7d 61
shimogamo 9:d1fc0805ec7d 62 }else if(command == "elemaxplay"){
shimogamo 9:d1fc0805ec7d 63 Global::setmaxpitchplayratio(num);
shimogamo 9:d1fc0805ec7d 64 }else if(command == "eleminplay"){
shimogamo 9:d1fc0805ec7d 65 Global::setminpitchplayratio(num);
shimogamo 9:d1fc0805ec7d 66 }else if(command == "rudmaxplay"){
shimogamo 9:d1fc0805ec7d 67 Global::setmaxyawplayratio(num);
shimogamo 9:d1fc0805ec7d 68 }else if(command == "rudminplay"){
shimogamo 9:d1fc0805ec7d 69 Global::setminyawplayratio(num);
shimogamo 9:d1fc0805ec7d 70 }else if(command == "eletrim"){
shimogamo 9:d1fc0805ec7d 71 Global::settrimpitchrate(num);
shimogamo 9:d1fc0805ec7d 72
shimogamo 9:d1fc0805ec7d 73 }else{
shimogamo 9:d1fc0805ec7d 74 printf("Invalid Input\n");
shimogamo 9:d1fc0805ec7d 75 }
shimogamo 9:d1fc0805ec7d 76 }
shimogamo 9:d1fc0805ec7d 77
shimogamo 9:d1fc0805ec7d 78 void Init::setting(std::string command){
shimogamo 9:d1fc0805ec7d 79 if(command == "eleneu"){
shimogamo 21:b1419813f2d4 80 Global::setneutralpitch(Global::getpitch()+Global::getneutralpitch());
shimogamo 9:d1fc0805ec7d 81 }else if(command == "elemax"){
shimogamo 21:b1419813f2d4 82 Global::setmaxpitch(Global::getpitch()+Global::getneutralpitch());
shimogamo 9:d1fc0805ec7d 83 }else if(command == "elemin"){
shimogamo 21:b1419813f2d4 84 Global::setminpitch(Global::getpitch()+Global::getneutralpitch());
shimogamo 9:d1fc0805ec7d 85 }else if(command == "rudneu"){
shimogamo 21:b1419813f2d4 86 Global::setneutralyaw(Global::getyaw()+Global::getneutralyaw());
shimogamo 9:d1fc0805ec7d 87 }else if(command == "rudmax"){
shimogamo 21:b1419813f2d4 88 Global::setmaxyaw(Global::getyaw()+Global::getneutralyaw());
shimogamo 9:d1fc0805ec7d 89 }else if(command == "rudmin"){
shimogamo 21:b1419813f2d4 90 Global::setminyaw(Global::getyaw()+Global::getneutralyaw());
shimogamo 9:d1fc0805ec7d 91
shimogamo 9:d1fc0805ec7d 92 }else if(command == "eleneudeg"){
shimogamo 9:d1fc0805ec7d 93 Global::setneutralpitchdegree(Global::getpitchdegree());
shimogamo 9:d1fc0805ec7d 94 }else if(command == "elemaxdeg"){
shimogamo 9:d1fc0805ec7d 95 Global::setmaxpitchdegree(Global::getpitchdegree());
shimogamo 9:d1fc0805ec7d 96 }else if(command == "elemindeg"){
shimogamo 9:d1fc0805ec7d 97 Global::setminpitchdegree(Global::getpitchdegree());
shimogamo 9:d1fc0805ec7d 98 }else if(command == "rudneudeg"){
shimogamo 9:d1fc0805ec7d 99 Global::setneutralyawdegree(Global::getyawdegree());
shimogamo 9:d1fc0805ec7d 100 }else if(command == "rudmaxdeg"){
shimogamo 9:d1fc0805ec7d 101 Global::setmaxyawdegree(Global::getyawdegree());
shimogamo 9:d1fc0805ec7d 102 }else if(command == "rudmindeg"){
shimogamo 9:d1fc0805ec7d 103 Global::setminyawdegree(Global::getyawdegree());
shimogamo 10:0a4bf8c82493 104
shimogamo 9:d1fc0805ec7d 105 }else if(command == "show"){
shimogamo 9:d1fc0805ec7d 106 showParam();
shimogamo 22:c85649ff834b 107
shimogamo 22:c85649ff834b 108 }else if(command == "write"){
shimogamo 22:c85649ff834b 109 //ここで,ニュートラル情報をLocalFileに保存
shimogamo 22:c85649ff834b 110 Global::filewrite();
shimogamo 9:d1fc0805ec7d 111
shimogamo 9:d1fc0805ec7d 112 }else{
shimogamo 9:d1fc0805ec7d 113 printf("Invalid Input\n");
shimogamo 9:d1fc0805ec7d 114 }
shimogamo 9:d1fc0805ec7d 115 }
shimogamo 9:d1fc0805ec7d 116
shimogamo 9:d1fc0805ec7d 117 void Init::showParam(){
shimogamo 17:887cfe1d309f 118 printf("------Servo Parameter------\n");
shimogamo 17:887cfe1d309f 119 printf("elevatorNeutral(eleneu) = %f\n", Global::getneutralpitch());
shimogamo 17:887cfe1d309f 120 printf("elevatorMax(elemax) = %f\n", Global::getmaxpitch());
shimogamo 17:887cfe1d309f 121 printf("elevatorMin(elemin) = %f\n", Global::getminpitch());
shimogamo 17:887cfe1d309f 122 printf("rudderNeutral(rudneu) = %f\n", Global::getneutralyaw());
shimogamo 17:887cfe1d309f 123 printf("rudderMax(rudmax) = %f\n", Global::getmaxyaw());
shimogamo 17:887cfe1d309f 124 printf("rudderMin(rudmin) = %f\n", Global::getminyaw());
shimogamo 9:d1fc0805ec7d 125 printf("----Controller Parameter----\n");
shimogamo 17:887cfe1d309f 126 printf("elevatorNeutral(eleneudeg) = %f\n", Global::getneutralpitchdegree());
shimogamo 17:887cfe1d309f 127 printf("elevatorMax(elemaxdeg) = %f\n", Global::getmaxpitchdegree());
shimogamo 17:887cfe1d309f 128 printf("elevatorMin(elemindeg) = %f\n", Global::getminpitchdegree());
shimogamo 17:887cfe1d309f 129 printf("rudderNeutral(rudneudeg) = %f\n", Global::getneutralyawdegree());
shimogamo 17:887cfe1d309f 130 printf("rudderMax(rudmaxdeg) = %f\n", Global::getmaxyawdegree());
shimogamo 17:887cfe1d309f 131 printf("rudderMin(rudmindeg) = %f\n", Global::getminyawdegree());
shimogamo 17:887cfe1d309f 132 printf("-------Play Parameter-------\n");
shimogamo 17:887cfe1d309f 133 printf("elevatorMaxPlay(elemaxplay) = %f\n", Global::getmaxpitchplayratio());
shimogamo 17:887cfe1d309f 134 printf("elevatorMinPlay(eleminplay) = %f\n", Global::getminpitchplayratio());
shimogamo 17:887cfe1d309f 135 printf("rudderMaxPlay(rudmaxplay) = %f\n", Global::getmaxyawplayratio());
shimogamo 17:887cfe1d309f 136 printf("rudderMinPlay(rudminplay) = %f\n", Global::getminyawplayratio());
shimogamo 9:d1fc0805ec7d 137 printf("-------Trim Parameter-------\n");
shimogamo 17:887cfe1d309f 138 printf("elevatorTrimRate(eletrim) = %f\n", Global::gettrimpitchrate());
shimogamo 17:887cfe1d309f 139 printf("----------------------------\n");
shimogamo 9:d1fc0805ec7d 140 }