Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
2 / 2 / 0
Регистрация: 20.01.2014
Сообщений: 7
1

Программирование последовательного порта

20.01.2014, 14:54. Показов 1567. Ответов 4
Метки нет (Все метки)

Добрый день, камрады. Не знаю в верный ли подраздел форума я обращаюсь! Прошу строго не судить! Но вопрос у меня будет следующий. У меня есть оборудование работающее через 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 не является системой режима реального времени(СРВ)! Или я всё-таки заблуждаюсь? Мне бы хотелось услышать, что вы думаете по этому поводу. Может всё-таки есть какой-то способ решения? В какую сторону мне копать? За толковый совет по решению проблемы с меня пиво! Просто не знаю даже к кому обратиться с вопросами, на работе начальник и все остальные совсем далеки от таких вопросов! С уважением, ко всем...

Добавлено через 36 секунд
Собственно конкретный вопрос. На сколько реально написать достаточно надёжный софт управления проходной для Windows(XP, 7, Vista-линейки NT), если согласно спецификации проходная после посылки пакета ожидает от ПК максимум 4 мс(миллисекунды)? Причём этот софт будет ещё и много-поточный - один поток работает со 2-м com портом(бегущая строка), второй поток работает с первым сериал-портом(проходная) и третий поток - обслуживаетGUI?
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.01.2014, 14:54
Ответы с готовыми решениями:

Чтение и проверка троек байт с последовательного порта, serialPort.Read()
Доброго времени суток! Буду рад Вашему совету о дальнейшем направлении разработки. Читаю...

c# SerialPort.ReadExisting Чтение байтов из последовательного порта
Доброе время суток. Подскажите пожалуйста каким образом используя SerialPort.ReadExisting прочитать...

Программирование COM-порта, порт некорректно отвечает на запросы
Добрый день форумчане. По долгу службы нужно написать софт для работы с gsm сетями. Использую...

Программирование последовательного порта.
Здраствуйте. Помогите кто чем может в поиске литературы, исходников по программированию...

4
3 / 3 / 1
Регистрация: 09.01.2014
Сообщений: 10
20.01.2014, 15:29 2
Все очень даже реально.... нужно только делать)))
З.Ы. Ну и вопрос же у тебя))))) нужно как то по-короче)))
0
2 / 2 / 0
Регистрация: 20.01.2014
Сообщений: 7
20.01.2014, 15:56  [ТС] 3
Цитата Сообщение от Tuki_Tip Посмотреть сообщение
Все очень даже реально.... нужно только делать)))
З.Ы. Ну и вопрос же у тебя))))) нужно как то по-короче)))
Да я то всё и сделал. остался один момент непонятный. Вот и думаю - для XP 4 мс - это видимо маловато для гарантированного ответа в связи с организацией вытесняющей многозадачности оси(((
0
3 / 3 / 1
Регистрация: 09.01.2014
Сообщений: 10
21.01.2014, 07:02 4
4 мс для микроконтроллера работающего на частоте 16МГц - это много.. а для скоростей компа - это вообще вечность!!! Так что, не маловато!!!
0
2 / 2 / 0
Регистрация: 20.01.2014
Сообщений: 7
21.01.2014, 13:28  [ТС] 5
Цитата Сообщение от Tuki_Tip Посмотреть сообщение
4 мс для микроконтроллера работающего на частоте 16МГц - это много.. а для скоростей компа - это вообще вечность!!! Так что, не маловато!!!
Ну так у меня не микроконтроллер, а ПК на котором стоит ОС WindowsXP, в которой есть планировщик задач, который осуществляет проверку очередей потоков согласно их приоритету, и осуществляет переключение контекстов потоков раз в 10 мс. А это уже заставляет задуматься)) Вот что меня беспокоит больше всего http://www.dtf.ru/articles/read.php?id=39888
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.01.2014, 13:28

Программирование кнопок с использованием последовательного порта
Здраствуйте! Мне нужно создать программу для контроля кнопок на геймпаде, используя...

Мониторинг последовательного порта
Добрый день коллеги, работаю сейчас над проектом, где надо мониторить все устройства,...

приемник последовательного порта
как реализовывается приемник последовательного порта ???? и передатчик (= если не лень на...

Настройка последовательного порта
Добрый день. Возникла проблема с настройкой и, соответственно, использованием последовательного...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.