|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
20.01.2014, 13:50 | #1 |
Пользователь
Регистрация: 20.01.2014
Сообщений: 37
|
Программирование COM-порта
Добрый день, камрады. Не знаю в верный ли подраздел форума я обращаюсь потому, как программирование на Assembler имеет к моей теме несколько косвенное отношение. Логика, которой я руководствовался при выборе данного раздела проста - т.к. вопросы мои будут касаться аппаратной части - то логично будет, что гуру в этой области обитают на этом разделе форума! Прошу строго не судить! Но вопрос у меня будет следующий. У меня есть оборудование работающее через COM-порт с ПК- а конкретно проходная на предприятии. Человек всунул пропуск в считывающее устройство, сформировался пакет(номер пропуска, направление прохода, номер прохода) - и отправился на порт ПК. ПК анализирует содержимое пакета(по целостности информации, по списку разрешённых пропусков, проверяет не пытается ли работник пройти дважды в одном направлении)-и выставляет соответствующий сигнал на линию DTR(1-запрет, 0-разрешение прохода). Выводит информацию о проходах на экран ПК,пишет в дневную базу проходов. Параллельно ПК работает со вторым COM-портом для связи со светодиодным табло(там отображается бегущая строка, текущее время, которое берётся с ПК). Плюс в программе имеется меню для работы с базой пропусков и т.д.. Но это всё лирика. Софт на ПК написан под DOS(на Assembler написан драйвер для работы с регистрами порта - файл с расширением com, на TurboPascal-основной модуль, собственно говоря я в этих исходниках и копался для определения алгоритма работы всей системы, потому как в документации к проходной, как оказалось очень много пробелов и нестыковок )- а мне хотелось бы переписать это ПО для WindowsXP(хочу заюзать C#+WindiwsForms) - потому, как DOS проблематично устанавливать на новое железо. Теперь самый интересный момент - в документации к проходной сказано, что устройство сопряжения после отправки данных на COM-порт ожидает 4 мс(миллисекунды) и считывает состояние линии DTR! Меня этот момент смутил с самого начала! Потому, как я написал тестовую болванку, которая тупо принимает данные с порта от проходной и устанавливает сигналы(запрет/разрешение) на линию DTR. Так вот ведёт себя моя прога так, словно она не успевает вовремя выставить сигнал на линию DTR! К примеру при старте программы устанавливаю DTR в 0(разрешение прохода). Затем пишу код, который при приёме пакета c порта устанавливает DTR в 1(запрещение прохода)! Всовываю пропуск - по идее после прихода данных в порт - проходная не должна меня пропустить(выставить 1 на линию), но она пускает(получается не успевает изменить линию на 1?) , всовываю второй раз - да действительно не пускает - получается линия-таки изменилась, но изменения сигнала на линии осуществились после 4 мс(требуемых для проверки сигнала устройством сопряжения согласно документации)! Затем я копнул в в сторону работы планировщика процессов в WindowsXP и нашёл весьма забавную информацию - оказывается переключение контекста процессов ОС делает с интервалом 10 мс(а максимальное время выделяемое процессу 130 мс)! Получается, что сделать надёжную систему в WindowsXP с оборудованием, у которого такие характеристики, как у моей проходной просто невозможно из-за того, что WindowsXP не является системой режима реального времени(СРВ)! Или я всё-таки заблуждаюсь? Мне бы хотелось услышать, что вы думаете по этому поводу. Может всё-таки есть какой-то способ решения? В какую сторону мне копать? За толковый совет по решению проблемы с меня пиво! Просто не знаю даже к кому обратиться с вопросами, на работе начальник и все остальные совсем далеки от таких вопросов! С уважением, ко всем...
|
20.01.2014, 13:57 | #2 |
Пользователь
Регистрация: 20.01.2014
Сообщений: 37
|
Собственно конкретный вопрос. На сколько реально написать достаточно надёжный софт управления проходной для Windows(XP, 7, Vista-линейки NT), если согласно спецификации проходная после посылки пакета ожидает от ПК максимум 4 мс(миллисекунды)? Причём этот софт будет ещё и много-поточный - один поток работает со 2-м com портом(бегущая строка), второй поток работает с первым сериал-портом(проходная) и третий поток - обслуживаетGUI?
|
20.01.2014, 15:08 | #3 |
Старожил
Регистрация: 29.09.2009
Сообщений: 9,713
|
...ставьте отдельный контроллер, связывайте его со своим датчиком и с ПК по USB. Большего советовать нельзя, ибо документации на ваш датчик нет.
Вообще системы СКУД (ридеры карт и контроль электрозамков) с успехом работают и контролируются по последовательному порту в ОС Windows, а потому у вас там что-то не так или вы неправильно понимаете работу датчика.
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation |
20.01.2014, 15:23 | #4 | |
Пользователь
Регистрация: 20.01.2014
Сообщений: 37
|
Цитата:
|
|
20.01.2014, 17:18 | #5 |
Форумчанин
Регистрация: 31.05.2009
Сообщений: 786
|
|
20.01.2014, 17:38 | #6 | |
Пользователь
Регистрация: 20.01.2014
Сообщений: 37
|
Цитата:
|
|
20.01.2014, 17:40 | #7 |
Форумчанин
Регистрация: 24.12.2012
Сообщений: 639
|
В 99.99% нельзя...
ICQ: 677936656 Gmail: ekEmbed@gmail.com
|
20.01.2014, 17:53 | #8 | |||
Старожил
Регистрация: 29.09.2009
Сообщений: 9,713
|
Цитата:
Цитата:
Цитата:
Хотите, сами паяйте, хотите из готовых берите, промПК.
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation |
|||
20.01.2014, 18:13 | #9 | |
Пользователь
Регистрация: 20.01.2014
Сообщений: 37
|
Цитата:
|
|
20.01.2014, 20:17 | #10 |
Пользователь
Регистрация: 20.01.2014
Сообщений: 37
|
По поводу сомнений в 4 мс - это действительно так. Если интересно - могу показать кусочек документации!
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Программирование LPT-порта на DELPHI | Vova777 | Компьютерное железо | 5 | 05.02.2011 19:27 |
Программирование LPT-порта на DELPHI | Vova777 | Общие вопросы Delphi | 0 | 31.01.2011 17:37 |
Программирование последовательного порта | Funker | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 7 | 27.05.2010 02:20 |
программирование lpt порта | alexs2141 | Общие вопросы Delphi | 5 | 07.06.2008 17:10 |