Я работаю над приложением, в котором у меня есть часть встроенной системы Linux, передающей некоторые данные на ПК с использованием PySerial (модуль Python). Мой вопрос: есть ли альтернатива поиску ПК с разъемом RS232 для установления двусторонней связи между ПК и встроенной системой? Спасибо.
Адаптер USB-Serial сделает то, что вы хотите, он доступен и дешев. Однако они, скорее всего, будут поставляться с разъемом RS232 SUB-D и выходными уровнями напряжения RS232, которые затем потребуют преобразования.
Вы также можете найти кабели USB-Serial со штырьковыми разъемами и удобными уровнями 3,3 В, которые намного проще использовать в вашем приложении.
РЕДАКТИРОВАТЬ
Итак, вы хотите связать два устройства через USB. Поскольку вы говорите, что встроенное устройство использует Linux, оно должно иметь Python. В зависимости от пропускной способности и сложности существует множество решений.
Я запрограммировал USB-устройство на Cortex-M4, это не высшая математика, но это требует времени. Так что, если вам нужна минимально возможная стоимость, это будет лучше всего, так как все, что вам нужно, это кабель. Если это разовый или личный проект, я бы предпочел другие решения.
@peufeu находится на правильном пути, используя два адаптера USB-to-Serial. Но не хватает очень важной вещи: между ними вам понадобится «нуль-модемный» адаптер.
Для определенного типа разъема (9-контактного или 25-контактного) существует два типа проводки RS-232: «DTE» (терминальное оборудование для передачи данных), которое обычно представляет собой ПК, и «DCE» (оборудование для передачи данных), которое может быть телефонным модемом или подобным оборудованием. (Если вы молоды, вы скажете, какого черта телефонный модем!)
Таким образом, DTE (ПК) будет передавать данные на контакт 3 и получать данные на контакт 2, в то время как DCE (модем) получает данные на контакт 3 и передает данные на контакт 2.
Проблема в том, что адаптер USB-to-Serial обычно подключается как DTE, поэтому, если вы просто подключите их напрямую, они оба попытаются отправить данные на один и тот же контакт 3 и получить на один и тот же контакт 2.
Таким образом, нуль-модем — это либо кабель, либо встречно-параллельные разъемы, в которых контакты RX и TX поменяны местами, чтобы они передавали и получали данные на правильных контактах.
Кроме того, контакты квитирования меняются местами, чтобы они выглядели правильно.
Итак, суть в том, что DTE на другой стороне выглядит точно так же, как DCE, и два компьютера могут общаться друг с другом, и рукопожатие работает правильно.
Вот изображение из Википедии, которое помогает визуализировать происходящее:
Полная запись здесь: https://en.wikipedia.org/wiki/Null_modem .
Вы можете отрезать разъемы и соединить их самостоятельно. Минимальная настройка будет состоять в том, чтобы игнорировать все линии квитирования и просто соединить 3 провода: соединить контакт GND 5 вместе, а контакты 2 и 3 поменять местами (2 одного подключаются к 3 другого и наоборот). Вот и все.
Вот фрагмент рукопожатия: DTE поднимает высокий уровень RTS (запрос на отправку), а модем, если он готов к получению данных, должен поднять высокий уровень CTS (разрешение на отправку). Когда модем занят и не может принимать данные, в это время он понижает CTS.
Таким образом, в минимальной настройке ни один из этих проводов не подключен, поэтому вам придется отключить подтверждение связи в вашем ПО и предположить, что другой парень готов принимать всякий раз, когда вы передаете.
Игнасио Васкес-Абрамс
фило
Винс Патрон