![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Работа с COM портом. [D5, Win95/98]
Alexsys © (2003-03-15 16:12:00)Подскажите, плиз, чем бы мне послушать COM порт? Надо сделать, чтобы прога ловила азбуку Морзе и выдавала ее же. А вот как мне выйти на COM порт, не соображу...
Anatoly Podgoretsky (2003-03-25 10:18:00) [1]В WinApi есть функции контроля управляющих входов-выходов DTR/DSR/CTS/RTS, используй любую пару.
А точка/тире отличаются именно длительностью, твоя задача реализовать алгоритм распознования длительности и анализ. Кроме длительности посылки надо распознавать длительность паузы.
В свое время существовали электронные ключи, от туда можешь взять алгоритм или найти старинные программные реализации.
Можно разработать и самому они не сложные.
Alexsys (2003-03-25 04:49:00) [2]wal © (24.03.03 11:22)
Например EscapeCommFunction(Handle, SETDTR)-Установит сигнал DTR в лог. 1. С сигналами TxD, RxD такой номер не пройдет
А можно ли этим сделать так: короткая 1 - точка, длинная 1 - тире? Задача именно такая. И с какого контакта тогда снимать то, что приходит? Нет ли такой же функции для проверки состояния сигнала?
Спасибо всем за ответы. Навели на размышления.
SoftOne (2003-03-25 02:59:00) [3]2 Vad © (24.03.03 06:40)
> Отслеживать длительность сигнала и квалифицировать его
>как точку или тире совсем не сложно.
Да, скореее всего не сложно, если работать в ДОС"е или писать свой драйвер порта. В противном случае, имхо, возможны ошибки.
wal (2003-03-24 11:22:00) [4]Например EscapeCommFunction(Handle, SETDTR)-Установит сигнал DTR в лог. 1. С сигналами TxD, RxD такой номер не пройдет
Vad (2003-03-24 06:40:00) [5]>По сабжу, врядли подойдет использование одного бита
>(RI или др.). Ведь у азбуки Морзе три состояния -> "точка", "тире", "пауза".
У азбуки морзе два состояния: есть сигнал и нету.
Или мы говорим про разные азбуки?
Отслеживать длительность сигнала и квалифицировать его
как точку или тире совсем не сложно.
SoftOne (2003-03-24 02:19:00) [6]2 Vad © (23.03.03 11:32)
По сабжу, врядли подойдет использование одного бита (RI или др.). Ведь у азбуки Морзе три состояния - "точка", "тире", "пауза".
2 Alexsys © (23.03.03 07:59)
Если хочешь работать с COM-портом, то обрати внимание на мой пост "SoftOne © (16.03.03 01:46)".
Учти при этом, что минимальный по времени сигнал, т.е. "точка" - должен быть >= 2/3 длительности бита для заданной скорости.
Далее - "тире" в стандарте, может превышать длительность "точки" в 9 раз. Если более, или точка слишком большая, то стоит "грамотно отслеживать" ошибку "framing error".
Vad (2003-03-23 11:32:00) [7]Нужно использовать другие сигналы на COM порту
например RI.
Когда я делал подобную штуку я использовал порт джойстика.
Там есть 4 контакта для кнопок - как раз то, что надо.
Alexsys (2003-03-23 07:59:00) [8]Сорри, уезжал в командировку и не заглядывал сюда.
Так как, никто не знает компонентика, чтобы выставил на кокой-нибудь ноге 1 или 0, в зависимости от текста, и их же там и ловил? А насчет скорости, так некоторые ограничения все-таки есть - длина точки, длина тире, длина пауз между символами и словами. Хотя это и не очень точные значения и придется повозиться с их распознанием, а пока мне нужно только снять (выдать) сигнал с порта (на порт).
Всем спасибо!
Jack128 (2003-03-17 17:18:00) [9]wal © (17.03.03 13:45)
Так если она(скорость) не регламентируется, то какая разница, с какой скоростью работать???
wal (2003-03-17 13:45:00) [10]
> Точки и тире говорите? Ну а если за точку, к примеру, принять
> байт FEh, а за тире, опять же к примеру, байт E0h?
А в СОМ-порте еще и скорость обмена есть, а азбуке Морзе, насколько я (радиолюбитель) знаю, скорость обмена не регламентируется.
jack128 (2003-03-16 15:05:00) [11]тут проблема в уровнях сигнала.
В вашем примере сигнал - "+12 вольт",
"ноль" - "-12 вольт".
А вот что принимает за ноль и сигнал внешнее устройство - это вопрос.
SoftOne (2003-03-16 01:46:00) [12]2 jack128 © (15.03.03 18:10)
Точки и тире говорите? Ну а если за точку, к примеру, принять байт FEh, а за тире, опять же к примеру, байт E0h?
GEN (2003-03-16 00:50:00) [13]Удалено модератором
Примечание: Личная переписка
jack128 (2003-03-15 18:10:00) [14]э-э, как это?? Азбука Морзе это ж вроде тире и точки, то есть длинный, по времени, сигнал и короткий сигнал... и как это через ком порт сделать?? У него ж старт биты, стоп биты будут мешать формированию этих сигналов ...
Через ком порт цифровые данные передавать надо...
Вот если договариться что 0 - точка, 1 - тире, то другое дело..