Здравствуйте!Возникла необходимость научиться работать с com-портом под Linux.
Мой прошлый опыт в этом направлении, к сожалению, относится к далеким временам лет 15-20 назад. Разработки были под голый DOS и все было проще пареной репы: расчеты/логика на ЯВУ, работа с портами/памятью - inline вставки на ассемблере или отдельно собираемые .obj на том же ассемблере. Продукты с "доведенной" логикой прогоняли под профайлером и пару-тройку самых медленных функций тоже переписывали на ассемблере.
Интернет пестрит статьями по теме, но основная масса, насколько я понимаю, описывает процесс со стороны embedded\ARM и т.п., что мне не очень близко.
Хотелось бы советов от почтеннейшей публики - с чего мне проще начать со своим "багажом", чего остерегаться, на что обратить внимание.
В частности интересны такие вопросы:
1. Если нет особо жестких требований по времени - достаточно ли просто работы с /dev/ttySX, в частности непонятно - можно ли контролировать последовательность приема-передачи (мне важно знать, что такой-то байт был получен до или после отправки такой-то команды)?
2. Правильно ли я понимаю, что вместо того, чтобы расставлять вычисления маленькими кусочками между чтением/записью, сейчас более правильно просто "отсаживать" обмен в отдельный поток с более высоким приоритетом?
3. Важна ли сейчас разница между аппаратными реализациями? Или если ядро распознало устройство и создало в /dev ссылку, то дальнейшие различия несущественны?
4. Значительны ли отличия в работе "классических" портов и преобразователей COM-USB (возможность последних пропадать\появляться мне не важна, важны именно отличия в программировании)?
5. Что можно предпринять во избежание затрат на другие процессы? Пассивная защита (поменьше активных демонов) понятна, а активная?
Детали, если они имеют значение: архитектура - i386, скорости мизерные, единицы-десятки байт в секунду, родной софт работает на 2400, 7/1. Оборудование - немецкие промышленные весы времен царя гороха, но прекрасно работающие до сих пор, в отличие от фирмы-продавца.
Надеюсь на ваши советы, заранее благодарен!