Я новичок как в C, так и в тонкостях последовательной связи. Я постараюсь предоставить всю информацию об этой проблеме, которую смогу; дайте мне знать, если есть что-то дополнительное, что я должен предоставить, что помогло бы.
Я нахожусь в процессе переноса протокола связи для последовательного устройства (микроманипулятора) с C на Python для использования в приложении Python, которое разрабатывает моя лаборатория. Компания предоставила нам исходный код небольшой утилиты командной строки, используемой для взаимодействия с устройством. Используя эту логику, наш модуль Python может генерировать правильные/идентичные блоки данных, включая CRC. Однако когда блок данных (идентичный блоку данных, сгенерированному кодом C) отправляется кодом Python, он не получает ответа от устройства. Используя программу мониторинга последовательного порта (Free Serial Port Monitor), я заметил, что связь между Python и устройством в некоторых случаях отличается от утилиты, предоставляемой компанией.
Вот скриншот журнала для предоставленной утилиты, которая работает правильно. Он показывает отправку одного блока данных и его ответ, а также отправку второго блока данных и начало ответа.
А вот скриншот того, что происходит с нашим кодом Python; как вы можете видеть, он отправляет блок данных без ответа.
Что касается другой информации, которая может быть полезной, я использую стандартные последовательные библиотеки Python. Структура блока данных — 14 символов ASCII, начиная с STX и заканчивая ETX. Первые восемь символов данных соответствуют функциям, адресам, значениям и т. д., а последние четыре символа — CRC.
Как я уже сказал, я немного нуб в этом, и я действительно понятия не имею, с чего начать. Любые советы или помощь, или ресурсы, которые могут помочь мне понять это, будут очень признательны, и дайте мне знать, если есть какая-то более конкретная информация, которую я должен предоставить!