Чтение из COM-порта
Задача простая, - отправить пакет данных по RS232, дождаться пока придет ответный пакет и считать его.
Второй день бьюсь, весь МСДН и кучу форумов перелопатил - результат 0.
В порт данные пишутся нормально, нормально отрабатывает функция WaitCommEvent. Только вот ничего не читается!!!!
После того, как WaitCommEvent дожидается символа конца пакета данных, ReadFile ничего не читает.
Пробовал использовать компонент TComPort - он нормально читает данные, но с ним не получается реализовать функцию ожидания конца пакета. И вообще, не хочется пользоваться этим компонентом.
Буду бесконечно благодарен за работающую функцию или класс.
В нете есть компонент TMS_Async32_v1.2 - работает хорошо
держи!
Подскажите, пожалуйста, как работать с RS485? Буду признателен за наглядный пример :)
Цитата: narcotic
Подскажите, пожалуйста, как работать с RS485? Буду признателен за наглядный пример :)
Насколько я сталкивался, устройства с интерфейсом RS-485 подключаются к компьютеру через конвертер (типа ADAM'а или ICPCON'а). И программа работает уже с простым СОМ-портом. Поэтому не вижу принципиальных отличий в программировании RS-232 и RS-485.
P.S. может я что не так понял, тогда прошу уточнить :)
P.P.S. кстати, поздравьте меня, это мое первое сообщение на этом форуме (только что зарегистрировался)
Абсолютно верно. Такой преобразователь можно собрать и самому. Для преобразования в RS-485 существуют специализированные микросхемы AMD485. По сути это оу для преобразования диф сигналов в уровни относительно общего провода. Также и в РС422, 423, только 485 - полудуплекс, а 422- полный дуплекс. Таким образом, 422 - это тот-же 232, только использует дифференциальные сигналы в линии передачи для большей помехоустойчивости. Используется в промышленности.
А 485-й не может одновременно принимать и передавать данные, так как полудуплекс. И скорее всего на это при программировании надо учитывать для избежания конфликтов использования линии.
(тогда вообще ничего не надо делать - со стороны компа все выглядит как работа с 232) , или по сигналу RTS (тут немного придется повозиться - поставить в dcb управление rts).
Встроенные в порты 485 переключают направление по сигналу RTS того порта.
Про работу с COM и в этой ветке и в API в последние полтора месяца много написано и все расжевано .
В msdn надо только ReadFile WriteFile CreateFile SetCommState SetCommTimeouts PurgeComm SetupComm EscapeCommFunction и описание двух структур dcb и commtimeout и все! :))))
Цитата: Ухух
Про работу с COM и в этой ветке и в API в последние полтора месяца много написано и все расжевано .
В msdn надо только ReadFile WriteFile CreateFile SetCommState SetCommTimeouts PurgeComm SetupComm EscapeCommFunction и описание двух структур dcb и commtimeout и все! :))))
Подскажите пожалуйста а как работать если скорость передачи 1.2 Мбит/с и поток идет непрерывный. Точнее как правильно принимать этот поток и записать на винчестер без потери информации или потерять но как можно меньше !! Заране сенкс !!!
maestro_ufa, Salivan поделитесь считкой из com в С++ Builder, плиз. Пасиб! Горю. Препод - зверюга.