Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.01.2014, 13:50   #1
TELEPUZ
Пользователь
 
Регистрация: 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 не является системой режима реального времени(СРВ)! Или я всё-таки заблуждаюсь? Мне бы хотелось услышать, что вы думаете по этому поводу. Может всё-таки есть какой-то способ решения? В какую сторону мне копать? За толковый совет по решению проблемы с меня пиво! Просто не знаю даже к кому обратиться с вопросами, на работе начальник и все остальные совсем далеки от таких вопросов! С уважением, ко всем...
TELEPUZ вне форума Ответить с цитированием
Старый 20.01.2014, 13:57   #2
TELEPUZ
Пользователь
 
Регистрация: 20.01.2014
Сообщений: 37
По умолчанию

Собственно конкретный вопрос. На сколько реально написать достаточно надёжный софт управления проходной для Windows(XP, 7, Vista-линейки NT), если согласно спецификации проходная после посылки пакета ожидает от ПК максимум 4 мс(миллисекунды)? Причём этот софт будет ещё и много-поточный - один поток работает со 2-м com портом(бегущая строка), второй поток работает с первым сериал-портом(проходная) и третий поток - обслуживаетGUI?
TELEPUZ вне форума Ответить с цитированием
Старый 20.01.2014, 15:08   #3
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,742
По умолчанию

...ставьте отдельный контроллер, связывайте его со своим датчиком и с ПК по USB. Большего советовать нельзя, ибо документации на ваш датчик нет.

Вообще системы СКУД (ридеры карт и контроль электрозамков) с успехом работают и контролируются по последовательному порту в ОС Windows, а потому у вас там что-то не так или вы неправильно понимаете работу датчика.
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 20.01.2014, 15:23   #4
TELEPUZ
Пользователь
 
Регистрация: 20.01.2014
Сообщений: 37
По умолчанию

Цитата:
Сообщение от raxp Посмотреть сообщение
...ставьте отдельный контроллер, связывайте его со своим датчиком и с ПК по USB. Большего советовать нельзя, ибо документации на ваш датчик нет.

Вообще системы СКУД (ридеры карт и контроль электрозамков) с успехом работают и контролируются по последовательному порту в ОС Windows, а потому у вас там что-то не так или вы неправильно понимаете работу датчика.
Дело в том, что у меня есть документация к проходной! Она, конечно, не даёт полное и точное описание работы системы, но руководствоваться ей можно. Так вот там явно указано, как работает система в целом. И есть совершенно точная цифра в 4 мс - время, которое устройство сопряжения ждёт от ПК команду на разрешение/запрещение прохода. Я понимаю, что эти системы успешно работают в ОС Windows, но там видимо совсем другие характеристики! Моя проходная поддерживает 31 проход! И естественно для такой системы очень критично время на ответ от ПК! А Windows многозадачная и насколько я понял порывшись на форумах - не может гарантированно обеспечивать приложение своими ресурсами на таких коротких интервалах! Вариант с контроллером не рассматриваю - игра не стоит свеч. Проще найти старенький комп и ставить DOS...
TELEPUZ вне форума Ответить с цитированием
Старый 20.01.2014, 17:18   #5
alexcoder
Форумчанин
 
Регистрация: 31.05.2009
Сообщений: 786
По умолчанию

http://citforum.ru/operating_systems/rtos/14.shtml
Помощь с программами:
vk.com/alexcoder1
e-mail: informatik101@mail.ru
alexcoder вне форума Ответить с цитированием
Старый 20.01.2014, 17:38   #6
TELEPUZ
Пользователь
 
Регистрация: 20.01.2014
Сообщений: 37
По умолчанию

Цитата:
Сообщение от alexcoder Посмотреть сообщение
Да я в курсе по поводу RTX. Но туда соваться хочется в последнюю очередь. Можно ли с такими характеристиками(максимальное время ожидания устройства сопряжения 4 мс) на XP написать ПО? Или это в принципе не возможно? Вот этот вопрос для меня наиболее важен!
TELEPUZ вне форума Ответить с цитированием
Старый 20.01.2014, 17:40   #7
Ezhik Kihze
Форумчанин
 
Регистрация: 24.12.2012
Сообщений: 639
По умолчанию

В 99.99% нельзя...
ICQ: 677936656 Gmail: ekEmbed@gmail.com
Ezhik Kihze вне форума Ответить с цитированием
Старый 20.01.2014, 17:53   #8
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,742
По умолчанию

Цитата:
Дело в том, что у меня есть документация к проходной!
а у меня нет. Вот думаю, ставить кучу восклицательных знаков или не ставить. Нет, пожалуй не буду в крик срываться и вам уподобляться

Цитата:
Моя проходная поддерживает 31 проход! И естественно для такой системы очень критично время на ответ от ПК!
все зависит от реализации, если конечно вешать все на один провод и его коммутировать на все каналы, то конечно критично. Но ведь можно и распараллелить, как оно там у вас - неизвестно, ни схемы, ни доков.

Цитата:
RTX
гложат большие сомнения, что в данной задаче дергать с такими малыми таймаутами нужно. Винды ОС конечно не реалтайм, но и обсуждаем пока сферического коня. Так что лучший вариант - внешняя простенькая железка-контроллер, которая сама по себе будет работать автономно, дергать что надо и за сколько надо.

Хотите, сами паяйте, хотите из готовых берите, промПК.
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 20.01.2014, 18:13   #9
TELEPUZ
Пользователь
 
Регистрация: 20.01.2014
Сообщений: 37
По умолчанию

Цитата:
Сообщение от raxp Посмотреть сообщение
а у меня нет. Вот думаю, ставить кучу восклицательных знаков или не ставить. Нет, пожалуй не буду в крик срываться и вам уподобляться

все зависит от реализации, если конечно вешать все на один провод и его коммутировать на все каналы, то конечно критично. Но ведь можно и распараллелить, как оно там у вас - неизвестно, ни схемы, ни доков.

гложат большие сомнения, что в данной задаче дергать с такими малыми таймаутами нужно. Винды ОС конечно не реалтайм, но и обсуждаем пока сферического коня. Так что лучший вариант - внешняя простенькая железка-контроллер, которая сама по себе будет работать автономно, дергать что надо и за сколько надо.

Хотите, сами паяйте, хотите из готовых берите, промПК.
По поводу изменения электрических схем, либо перепрограммирования контроллера на устройстве сопряжения-не вариант((( Проще ставить DOS и всё будет работать
TELEPUZ вне форума Ответить с цитированием
Старый 20.01.2014, 20:17   #10
TELEPUZ
Пользователь
 
Регистрация: 20.01.2014
Сообщений: 37
По умолчанию

По поводу сомнений в 4 мс - это действительно так. Если интересно - могу показать кусочек документации!
TELEPUZ вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программирование 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