Форум программистов, компьютерный форум, киберфорум
Наши страницы
КИП, датчики
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.69/13: Рейтинг темы: голосов - 13, средняя оценка - 4.69
седьмой
42 / 41 / 1
Регистрация: 11.07.2012
Сообщений: 1,015
1

Как из com порта получить сигнал?

28.07.2016, 19:45. Просмотров 2705. Ответов 28
Метки нет (Все метки)

Здравствуйте уважаемые форумчаны и форумчанки. Мне нужно из СОМ порта получить данные, но не опрашивать порт периодически, а прочитать его по аппаратному прерыванию под виндой, как это примерно можно сделать сделать? Как прочитать значение данных в порту на с# я примерно понял из вот этой темы Работа с монохроматором МХД-2 через COM-порт а вот каким образом выполнять на компьютере какой то длительный процесс, а потом его прервать по прерыванию СОМ порта, проанализировать на C# и отправить на пример в другой порт, как отправить я тоже знаю. Я не понимаю как мне поймать прерывание по СОМ порту и запустить по нему программу на с# для обработки этого кода? Драйвер нужно какой то писать? Или что нужно делать?, винда 7- 64 количество процессоров (ядер) несколько, буду признателен за помощь.
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.07.2016, 19:45
Ответы с готовыми решениями:

Получить сигнал с СОМ-порта
Здравствуйте.Собсно поставлена такая задача - получить по COM-порту код,преобразовать в число и...

PyQt как получить сигнал из потока
у меня не получается получить сигнал из созданного потока. # -*- coding: utf-8 -*- import sys...

Может ли получить сигнал потомок от родителя, если сигнал: посылается всем (kill(0,SIGTERM) а потомок был добавлен в группу
Может ли получить сигнал потомок от родителя, если сигнал: посылается всем (kill(0,SIGTERM)) а...

питание ОУ или как из +5В получить разнополярный сигнал
Привтствую созедатели и творцы микроэлетронного сообщества. вопрос такой есть AVR 16мега. собран...

Как получить событие от COM или LPT порта?
Возникла проблемка! Хотелось бы создать обработчик события, которое приходит на COM или LPTпорт....

28
Витальич
1277 / 1183 / 175
Регистрация: 02.12.2013
Сообщений: 4,886
29.07.2016, 08:24 2
Это уровень драйверов, первое кольцо защиты винды https://ru.wikipedia.org/wiki/%D0%9A...B8%D1%82%D1%8B не встречал что бы драйвера писали на шарпе
1
седьмой
42 / 41 / 1
Регистрация: 11.07.2012
Сообщений: 1,015
29.07.2016, 09:29  [ТС] 3
Я же написал, что в терминологии могу ошибиться, однако мне показалось что по смыслу вопрос в теме понятен, я уже понял, что лучше Агурова перечитать, чем на форум обращаться, думал будет и быстрее и точнее, все модераторы в ветках практики, однако на один ответ по собственной приближенной статистике получается 5 ответов с пальцезагибанием, такое ощущение что у людей даже уверенных в себе, я про специалистов отвечающих в темах - много проблем с собственной личностью, это и понятно, человек который сутками сидит за компом, забывает видимо что есть просто человеческое общение, причем без наездов, но это уже не мое дело, так что я на такие ответы не обижаюсь, мне просто вас по человечески жаль. PS это я не лично Вам Виталич, это я про те 80% ответов на форуме. Извините если не получилось помягче.
0
Витальич
1277 / 1183 / 175
Регистрация: 02.12.2013
Сообщений: 4,886
29.07.2016, 10:53 4
Если есть конкретный вопрос, есть конкретный ответ.
Если вопрос общий, то и ответ такой.
Написание драйверов достаточно сложная тема и в двух словах не описать как это делается.
2
29.07.2016, 10:53
седьмой
42 / 41 / 1
Регистрация: 11.07.2012
Сообщений: 1,015
29.07.2016, 15:45  [ТС] 5
Да мне всего то и нужно было для начала понять как в винде можно работать с ком портом из за того что не знал что спрашивать не мог и конкретно спросить что нужно. Пока что понял, что под виндой можно пойти двумя путями 1й это в потоке, в асинхронном режиме ждать прихода данных на сом порт и второй вариант писать свой драйвер для ядра. Второй вариант конечно сложнее, но работать он будет быстрее, так срабатывать будет по аппаратному прерыванию. Со структурой драйвера разобрался пока поверхностно, буду писать драйвер, если в потоке получится слишком большая задержка для моего задания. По драйверу, пока не очень понял на чем можно писать драйвер, и инете говорят что на СИ, но не понял на каком именно, еще надо посмотреть пакет WDK что там еще есть, вот пока все что нарыл, но по крайней мере стало понятно куда двигаться. Еще понял что есть некоторые программы которые могут проконтролировать в графическом интерфейсе, что будет происходить в системе в момент приема и передачи данных из сом порта, может вы и правы, привык уже что на форуме подается все на блюдечки и мозги можно особо не включать, спросил, получил ответ и дальше нырнул в код.

Добавлено через 10 минут
А может вы так можете навскидку, какая может быть задержка при получении 1 бита с сом порта в режиме ожидания в потоке и передаче этого же бита в lpt порт, хотя бы какой порядок мкс, мс, нс, пс? Или надо пробовать?

Добавлено через 48 минут
И еще кстати, в MS VS 2015 можно уже писать драйвера хоть на c#, хоть vb, c++
0
Витальич
1277 / 1183 / 175
Регистрация: 02.12.2013
Сообщений: 4,886
30.07.2016, 07:52 6
Цитата Сообщение от седьмой Посмотреть сообщение
А может вы так можете навскидку, какая может быть задержка при получении 1 бита...
В этом вся проблема винды, время из 4 кольца защиты не предсказуемо
Такой эксперимент ни разу не проводил.
ИМХО: Перевод последовательного потока в параллельный решается на любом МК с предсказуемым временем трансляции.
Цитата Сообщение от седьмой Посмотреть сообщение
И еще кстати, в MS VS 2015 можно уже писать драйвера хоть на c#, хоть vb, c++
Потом покажите драйвер на VB когда создадите
1
Олег_
47 / 51 / 3
Регистрация: 30.10.2014
Сообщений: 188
31.07.2016, 01:00 7
Цитата Сообщение от седьмой Посмотреть сообщение
но не опрашивать порт периодически
Оригинальго.... опрашивать порт переодически.........
Можно просто событие использовать.
https://msdn.microsoft.com/ru-ru/lib...(v=vs.90).aspx

Цитата Сообщение от седьмой Посмотреть сообщение
нужно было для начала понять как в винде можно работать с ком портом
Как два пальца об асфальт, если ждёте что то из порта (слейв), пользуете событие порта.
Если прибор опрашиваете сами (мастер), проще в отдельном потоке отправить запрос и ждать ответ через SerialPort.ReadLine() или подобное.
1
седьмой
42 / 41 / 1
Регистрация: 11.07.2012
Сообщений: 1,015
31.07.2016, 18:16  [ТС] 8
Витальич мне нужно настраивать реалтаймовую программу для подключения к другим интерфейсным сигналам некоторого устройства. На 2х портах я просто хотел проанализировать как это примерно будет работать в упрощенном варианте или другими словами как это примерно может работать. Поскольку с первоначальным вопросом меня продинамили на форуме, то я сделал выводы, что копнул не в ту степь. Поэтому скорректировал немного поиски и вышел на поток с асинхронным ожиданием, это думаю реализовать не очень трудно по функциям win api. МК для проекта мне не подходит так как ответная часть с интерфейсом на операционке на базе ПК. Драйвер на VB наверно вам не смогу показать по этому проекту, так как склоняюсь к решению, если поток не подойдет, то нужно будет писать драйвер на линуксе, там прерывания 64 бита и цифровые, а не динамические наименования прерываний как в винде и система должна работать стабильнее. Еще есть 3й вариант использовать операционку реального времени QNX, но этого зверя я не слышал и не видел, тут надо смотреть совсем с нуля. Писать драйвер наверно для начала лучше на си, это более универсальный язык и примеров на нем наверно тоже больше, хотя конечно не факт, кто то пишет и на дельфи, дальше наверно надо читать Windows Driver Kit (WDK).

Добавлено через 9 минут
Олег это я уже понял, что написать скорее всего будет не очень трудно, но есть опасение что в реальной работе (а не в пробной для 2х портов) мне не подойдет стабильность временных задержек, мне они нужны постоянные, что бы можно было оценить относительную погрешность отставания сигнала от момента получения, до момента передачи, но Виталич уже объяснил, что ни о какой стабильности в винде речи идти не может, следовательно попробовать конечно можно, но просто для статистики. Значит предложения пока наиболее доступные 2 - 1. драйвер на линуксе и 2е. прерывание на QNX, раз она работает в режиме реального времени, значит ее можно тупо настроить по прерыванию. Так получается или еще что то можно подкорректировать?
0
Rius
Эксперт .NET
6213 / 4042 / 970
Регистрация: 25.05.2015
Сообщений: 12,230
Записей в блоге: 12
Завершенные тесты: 4
31.07.2016, 18:53 9
В некоторых SoC имеется нормальный процессор ARM с нормальной операционкой, и независимое встроенное ядро для работы в реальном времени и на RTOS. На это независимое ядро и вешаются задачи, требующие реального времени. Вы могли бы для этого применить внешний микроконтроллер или что-то посложнее.

Линуксы тоже не реалтаймовые ОС в общем. Для них есть специальные реалтаймовые ядра.
1
седьмой
42 / 41 / 1
Регистрация: 11.07.2012
Сообщений: 1,015
31.07.2016, 19:17  [ТС] 10
Rius спасибо, далеко не все понял из вашего ответа, например не понял зачем иметь внешний МК, если операционка сама по себе уже работает в реальном режиме времени, получается что мне достаточно просто тупо написать обработку входящих сигналов например на си и отправить в нужное время их обратно в это устройство, зачем тогда использовать внешний МК?

Линуксы тоже не реалтаймовые ОС в общем. Для них есть специальные реалтаймовые ядра. и еще вот это, специальное железо вы имеете в виду?
0
Rius
Эксперт .NET
6213 / 4042 / 970
Регистрация: 25.05.2015
Сообщений: 12,230
Записей в блоге: 12
Завершенные тесты: 4
31.07.2016, 19:41 11
седьмой, обычная операционка в реальном времени не работает. QNX может быть, и специальные ядра Linux. Но никак не обычные десктопные операционки, даже с драйверами.
Внешний МК, DSP или платы сбора данных - они независимы от загрузки операционки на ПК и её прихотей.
Цитата Сообщение от седьмой Посмотреть сообщение
специальное железо вы имеете в виду?
Нет, ядро Linux, рассчитанное на работу в реальном времени. Поищите про Realtime Linux Kernel.
1
седьмой
42 / 41 / 1
Регистрация: 11.07.2012
Сообщений: 1,015
31.07.2016, 20:03  [ТС] 12
Спасибо Rius информации пока достаточно, буду искать. седьмой, обычная операционка в реальном времени не работает это я понял, я имел в виду QNS конечно. Но теперь посмотрю еще и Realtime Linux Kernel, спасибо огромное за помощь!

Добавлено через 19 минут
Помогите еще пожалуйста понять вот это на сайте QNX ( Платформа QNX® Разработка программного обеспечения 6.6.0 - Хосты Windows , ОСРВ Software Development Platform 6.6 включает в себя ОСРВ QNX Neutrino 6.6 и QNX Momentics Tool Suite 6.6. Используйте этот двоичный файл для установки QNX SDP в среде принимающих Windows.) Получается, что QNX я могу поставить и на линукс и на винду и у меня получится реальное время?
0
ФедосеевПавел
Модератор
5539 / 2812 / 1138
Регистрация: 01.02.2015
Сообщений: 9,137
Записей в блоге: 1
01.08.2016, 10:30 13
QNX - это отдельная ОС. Как DOS, как Windows, как Linux, как iOS, как KolibriOS, как VxWorks.
Скорее всего, в вашей цитате идёт речь о кроссплатформенной разработке ПО для QNX.

Судя по описанию на Wiripedia, стоимость лицензии очень высокая. Т.е. для разовой поделки - несоизмеримая с прибылью. По ссылке http://embeddedpro.ucoz.ru/app_notes/realtime_operating_systems.html приводятся цены.

Поэтому я также рекомендую пересмотреть структуру системы в пользу управления внешним устройством на МК или готовым PLC, а ПК использовать лишь для визуализации. Хотя, конечно, можно идти по пути изучения новой ОС.
1
Витальич
01.08.2016, 10:33
  #14

Не по теме:

Цитата Сообщение от ФедосеевПавел Посмотреть сообщение
Судя по описанию на Wiripedia, стоимость лицензии очень высокая.
Раньше для не коммерческого использования можно было бесплатно скачать, но поменялся владелец, сейчас не знаю, да и знать не хочу.

0
ФедосеевПавел
Модератор
5539 / 2812 / 1138
Регистрация: 01.02.2015
Сообщений: 9,137
Записей в блоге: 1
01.08.2016, 10:38 15
И ещё - постарайтесь уже забыть о COM-порте (о настоящем RS-232). Его уже давно нет на ноутбуках, непросто встретить на десктопах, а скоро и совсем не будет. Да, есть переходники USB-COM, но уровни сигналов на них не ±12V, а ±5V, при которых некоторая аппаратура не связывается.
0
Витальич
1277 / 1183 / 175
Регистрация: 02.12.2013
Сообщений: 4,886
01.08.2016, 10:42 16
Цитата Сообщение от ФедосеевПавел Посмотреть сообщение
И ещё - постарайтесь уже забыть о COM-порте
Вы с промышленным оборудованием походу не работаете, так что не будучи в теме, не делайте выводы за всех, плз.
2
ФедосеевПавел
Модератор
5539 / 2812 / 1138
Регистрация: 01.02.2015
Сообщений: 9,137
Записей в блоге: 1
01.08.2016, 10:50 17

Не по теме:

Сейчас на сайте предлагают бесплатную версию на 30 дней. Сильно в лицензии не вчитывался, но, возможно, что это и есть для некоммерческого использования.

Пусть ТС для себя разберётся, что ему нужно в итоге. Может быть и задержка в 1 секунду или минуту будет удовлетворительной.



Добавлено через 5 минут
Цитата Сообщение от Витальич Посмотреть сообщение
Вы с промышленным оборудованием походу не работаете, так что не будучи в теме, не делайте выводы за всех, плз.
Работаю, к сожалению. Потому и говорю, что есть проблемы с обменом по RS-232. Я вполне представляю, что RS-485 и многие устройства, подключаемые по USB, на ПК определяются как COM-порты. Но эти устройства работают через распространённые на сегодня интерфейсы.
0
Витальич
1277 / 1183 / 175
Регистрация: 02.12.2013
Сообщений: 4,886
01.08.2016, 10:57 18
Цитата Сообщение от ФедосеевПавел Посмотреть сообщение
подключаемые по USB
Вы таки точно работаете, хуже интерфейса для пром приложений на мой взгляд нет, имхо. А вот работа с rs-232 с программной точки зрения практически ни чем не отличается от работы RS-485, RS-422, а они умирать что то не думают.
0
ФедосеевПавел
01.08.2016, 11:17
  #19

Не по теме:

Я имел ввиду подключение к компьютеру.
--------------------------------------------
Возможно, мы по разному воспринимаем слово "работа". Для меня это кратковременное подключение для конфигурирования. Для вас, судя по всему, именно написание управляющих программ для интенсивной работы с внешними устройствами, возможно, что даже через платы расширения с портами 485/422/232.
Тогда да - программную модель COM-порта необходимо знать и она ещё долго будет здравствовать.

0
седьмой
42 / 41 / 1
Регистрация: 11.07.2012
Сообщений: 1,015
01.08.2016, 11:38  [ТС] 20
Да вы правы, даже для промышленного компьютера QNX удовольствие дорогое, но вопрос цены это немного другая тема , поэтому пока хочется разобраться с технологиями, что подходит, что нет для решения какой то задачи, сом порт пока тоже оставим, уже выяснили, теоретически он может присутствовать, использовать его или нет зависит от решения общей задачи в целом. Пока из операционок остается сборка Realtime Linux Kernel , она наверно бесплатная? Линукс же открытая операционная система. И если можно использовать эту операционку, То я все же не понимаю зачем использовать внешний МК. Если бы допустим у меня было внешнее устройство, с которого мне нужно получить какие то сигналы, тогда да можно было бы взять какой то МК написать в нем код обработки данных и вывести на комп дисплей и какое то управление типа кнопок включения, выключения и включения каких то режимов, если это нужно. Но в данном случает, мне нужно подключиться к устройству, которое само уже находится в ПК на PCI шине, поэтому использовать внешний МК, там что то рассчитывать и забирать в ПК мне кажется будет излишне. Проще просто написать код в самом ПК на Realtime Linux Kernel и данные отравить в эту плату по системной шине самого ПК, или я ошибаюсь?
0
01.08.2016, 11:38
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.08.2016, 11:38

Как программно получить адрес СОМ порта?
Пишу программу для прошивки Flash памяти прибора через СОМ порт. Выяснилось, что при ошибке...

как можно получить данные из ком-порта?
Пожалуйста, напомните, В Вижуал Бейсик как можно получить и отправить даннқе на адреса порт. В...

Как получить сигнал с клавиатуры, если активно другое приложение
Всем привет. Хочу реализовать вызов приложения, которое в данный момент не является активным....


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

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

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