Данные и команды на трекер идут. а обратно?
Не въезжаю.. "Обратно" - это откуда и куда?
Александр, не взглянете "в сырцах" формат строки, что трекер передает на контроллер? Как отвечает на запрос С или С2.
В каких сырцах? RotorCraft-а? Так я их не изучал. Тупо скомпилил бинарник и всё.
К сожалению, подробности уже не помню..
Вот фрагмент кода (моего), который общается с RotorCraft
//++++++++++++++++++++++++++++++++++++++++++++++++++
if (SerialSF.available()>0) {
// get the new byte:
char inChar = (char)SerialSF.read();
// add it to the inputString:
inputString += inChar;
// if the incoming character is a newline, set a flag
// so the main loop can do something about it:
if (inChar == '\n') {
stringComplete = true;
}
}
if (stringComplete) {
if(inputString.startsWith("C")) {
SerialSF.print("+0");
if(trx.state.lastAngle < 100) SerialSF.print("0");
if(trx.state.lastAngle < 10) SerialSF.print("0");
SerialSF.println(CAngle);
}
if(inputString.startsWith("R")) {
if(trx.state.ErrorDirect != 1) trx.ExecCommand(cmdTurnRight,0);
} else if(inputString.startsWith("L")) {
if(trx.state.ErrorDirect != -1) trx.ExecCommand(cmdTurnLeft,0);
} else if(inputString.startsWith("M")) {
start_pos = CAngle;
stop_pos = string_to_int(inputString.substring(1));
int offset = 0;
int koeff = 1;
offset = (stop_pos - 145) - (start_pos - 145);
if ((start_pos > 145 && stop_pos < 145) || (start_pos < 145 && stop_pos > 145)) koeff = koeff*-1;
if (offset*koeff < 0)
{
trx.ExecCommand(cmdTurnLeft,0);
flagset = 1;
}
else
{
trx.ExecCommand(cmdTurnRight,0);
flagset = 1;
}
}
inputString = "";
stringComplete = false;
}
//+++++++++++++++++++++++++++++++++++++++++++++++++
SerialSF - это software RS232 (ардуино).
CAngle - это угол азимута (элевации нет), считанный из AS5600 и скорректированный для правильного отображения.
На число "145" не обращайте внимания. Это "0 градусов" для моей поворотки.