Приводу описание форматов сообщений, которые понимает программа xSimCTRL.
Таких сообщений два, оба имеют длину 26 байт и оформлены в виде массива символов. Дальше я буду оперировать непосредственно символами.
Первое -
сообщение с текущими настройками прошивки. Первый байт = символ "{", последний = символ "}". Между ними 24 символа - 16-ричные представления чисел. Без пробелов. Байтовые параметры (например - Kp1Lo) представлены двумя символами. Параметры типа word - четырьмя.
- первая пара символов - Kp1LO
- следующая пара - Kp1HI
- следующая пара - Kp2LO
- следующая пара - Kp2HI
- следующая пара - KpTH
- следующая пара - MinDIST
- следующие 4 символа - MinPWM
- следующая пара - Sens1LO
- следующая пара - Sens1HI
- следующая пара - Sens2LO
- следующая пара - Sens2HI
Пример передаваемой посылки - "{0A
140A
1405
0000FF
02FC
02FC}"
Еще раз напоминаю - посылаются именно символьные предастваления чисел. Это означает, что если написано "0A" - значит посылается два байта подряд - '0' (ASCII код = 0x30) и 'A' (ASCII код = 0x41)
Второе возможное сообщение -
текущие величины (сенсоры, положения моторов, ШИМ). Это тоже набор (26 шт) символов, но первый и последний символ - "[" и "]"
- первая пара символов - motor1_set_position (заданная позиция)
- следующие 4 символа - motor1_get_position (реальная позиция с датчиков)
- следующие 4 символа - PWM1 value (текущее значение ШИМ)
- следующая пара - current KP1 value (текущее значение Kp1)
- следующая пара - motor2_set_position
следующие 4 символа - motor2_get_position (from feedback sensor)
- следующие 4 символа - PWM2 value
- следующая пара - current KP2 value
(Добавление)
Контроллер от компа получает команды в едином формате - 0x41, 0x42, 0xFF, a0, a1.
где - первые два байта - заголовок = "AB"
третий байт - команда (0xFF - команда пересылки новых позиций для двух осей)
четвертый и пятый байты - данные
Все остальные управляющие команды с компа на контроллер выполнены в том же формате
Список команд, которые понимает прошивка: (если отдельно не указано - данные, идущие за командой игнорируются)
Следующие 3 команды работают только в прошивке с энкодерами
0x7F : // команда для проведения цикла калибровки (по концевикам для двух энкодеров)
0x7E : // команда для проведения цикла калибровки (только для второго энкодера)
0x7D : // команда для проведения цикла калибровки (только для первого энкодера)
команды установки параметров прошивки. Значения передаются в байтах 4 и 5
0x10: // задать параметр Kp1Lo
0x11: // задать параметр Kp1Hi
0x12: // задать параметр Kp2Lo
0x13: // задать параметр Kp2Hi
0x14: // задать параметр minDist
0x15: // задать параметр Kp_Th
0x16: // задать параметр minPWM
0x17: // задать параметр Sens1Lo
0x18: // задать параметр Sens1Hi
0x19: // задать параметр Sens1Lo
0x1A: // задать параметр Sens1Hi
0x1B: // включить (данные <> 0)/ выключить( = 0) автопередачу данных на комп
0x1C: // сохранить настройки в EEPROM (данные <>0) или выслать настройки на комп (данные = 0)
0x1F: // если данные = 0x55AA - программа уходит на перезгрузку (RESET)
Вот вроде всё...