Вопрос по com порту

evalove

ситуация: есть офисная АТС, она вываливает логи о звонках через ком-порт на комп. На компе крутится прога, которая эти логи с ком-порта читает и пишет в текстовый файл.
проблема: скорость, с которой АТС пишет в ком-порт составляла 9600, а скорость с которой com sniffer читал данные - 19200. Как следствие, в файл писалась белиберда. Как только поставили скорости одинаковые - стало всё ок.
внимание, вопрос: возможно ли восстановить данные, которые были прочитаны на скорости 19200?

bleyman

Нет.
Потому что из каждого посланного байта принималась половина, зато растянутая - и это только в том случае, если случайно так получалось, что "принимался" правильный бит чётности и стоповый бит (то есть фактически если четвёртый бит данных был нулевым, как-то так иначе результат просто игнорировался.

evalove

вот как это должно выглядеть?
Пишется байт: 0010 0100
А ком сниффер читает какую половину байта? чо будет на выходе?

bleyman

Стандартный протокол rs232 состоит в следующем: есть два провода, наличие на них напряжения считается 1, отсутствие - 0 (в технические детали вдаваться не буду, потому что не помню =) Возможно, как раз наоборот, неважно). Контроллер периодически измеряет напряжение и получает поток битов.
Основное состояние провода - 0. Передача одного байта выглядит так: на провод выставляется 1 (стартовый бит следующие 8 битов считаются битами данных, ещё один - чётности, затем провод обратно возвращается в 0 на некоторое время (один, полтора или два бита как минимум).
В результате твой байт 0010 0100 упаковывается в 1,00100100,0,0 (если мне не изменяет память, бит чётности вычисляется как дополнение к сумме остальных битов)
А работающий на вдвое большей частоте приёмник его видит как
1100001100001100000000
и преобразует в
1,10000110,0,0, чётность не совпадает, посылка игнорируется.
Затем он пропускает ещё один как бы "пустой бит", видит следующую единицу, пытается принять байт
10000000, 0 чётности, стопбит - и опять не совпадает чётность.
Конечно, в протоколе допускается ещё отсутствие бита чётности, тогда данные будут приниматься намного чаще, но смысла в них не появится.
Оставить комментарий
Имя или ник:
Комментарий: