Разработал простейшую плату ввода-вывода через СОМ порт компьютера. Также разработал для нее набор подпрограмм на майкрософтовском бейсике под ДОС для создания с помощью этих подпрограмм, в свою очередь, управляющих программ для подключаемого оборудования. Таким образом получил возможность управления из ДОС и Win9x. Мне бы хотелось иметь также возможность использовать и NT образные ОСи. Я вижу это так: управляющая программа пишется на Вижуал бейсике и обращается к библиотечным процедурам для доступа к регистрам порта. Необходимо иметь доступ к любому регистру порта на запись и чтение. Например, пусть мы имеем две процедуры Get и Put. Тогда обращение должно выглядеть так: Put (port, register, data) Get (port, register, data) Где port - адрес порта, register - номер регистра, data – восьми битные данные. Проблема в том, что я совершенно не представляю, как разработать такие процедуры и оформить их в виде библиотечных. Я не знаком с низкоуровневым программированием под Win. Я вообще не программист, а только электронщик. Может быть кто-нибудь знает где можно найти подобные бесплатные библиотеки, к которым я мог бы обращаться из бейсика. Еще один вопрос, сейчас для работы под Win9х я в свойствах системы отключаю нужный СОМ порт и только тогда Винда дает мне доступ к этому порту. А в случае, например, Win10 в принципе такой доступ возможен? Заранее спасибо за возможные ответы.
Зачем низкоуровневый доступ? Чего этим хотите добиться? Понимаете что USB конвертеры работать не будут, т. к. нет регистров COM порта? Если нужно работать с COM портом, вот функции для бейсика, которые могут работать с портом в Windows, Linux и MacOS. Поддерживаются процы x86, x64 и ARM64.
Там описывается как передавать данные стандартным образом через СОМ порт, а меня интересует именно возможность записывать\читать содержимое ЛЮБОГО регистра порта. Моя плата не использует стандартный протокол, а только входы\выходы порта как независимые выводы.
Использование модульных источников питания открытого типа широко распространено в современных устройствах. Присущие им компактность, гибкость в интеграции и высокая эффективность делают их отличным решением для систем промышленной автоматизации, телекоммуникационного оборудования, медицинской техники, устройств «умного дома» и прочих приложений. Рассмотрим подробнее характеристики и особенности трех самых популярных вариантов AC/DC-преобразователей MW открытого типа, подходящих для применения в промышленных устройствах - серий EPS, EPP и RPS представленных на Meanwell.market.
Вы наверное не внимательно смотрели мою ссылку и не заметили функции GetSerialPortStatus() и SetSerialPortStatus(), которые позволяют управлять выводами порта и считывать их состояния.
Вот к примеру прошивка PIC контроллеров через COM порт, но там другая библиотека, уже устаревшая. Так же есть софт для программатора PIC на основе этого кода https://pure-basic.narod.ru/project/mpf_prog.html Прога древняя (написана во времена Windows XP) и на современной винде работать не будет из-за отсутствия цифровой подписи у драйвера LPT порта.
Все эти функции годятся только для обмена с внешними устройствами через последовательную передачу данных, т.е. стандартное использование СОМ порта. Да они позволяют считывать состояние входов DCD, DSR, CTS, RI а также устанавливать выходы RTS и DTR. Мне же, кроме того, нужно устанавливать выход TXD и считывать вход RXD так, словно это простые вход и выход с логическими уровнями. Кроме того, нужно заносить нестандартные значения во все регистры порта. А этого предложенные функции не позволяют, по крайней мере я этого не нашел.
Мне же, кроме того, нужно устанавливать выход TXD и считывать вход RXD
Устанавливать TXD можно, а вот считывание RXD не предусмотрено. То есть не поддерживается только RXD. Без него нельзя обойтись? Почему не использовать arduino или плату с STM32?
Прямая работа с портом потребует в Windows 2000 и выше, драйвер с цифровой подписью для прямого доступа к порту и может работать нестабильно из-за конфликта с драйвером винды. Будет работать только с портом на системной плате, а не с USB конвертерами.
Darmok писал(а):
Кроме того, нужно заносить нестандартные значения во все регистры порта.
Для чего?
Поставьте DOS и пишите под нее. Современные системы не дадут полный доступ к железу и получить его не так просто, т. к. нужен драйвер с цифровой подписью и нужно быть готовым к конфликтам с драйверами ОС.
То, что требуется низкоуровневый доступ к порту это цена которую приходится платить за простоту устройства. Вариантов работать через контроллер полно и даже ничего делать не нужно, можно купить готовое решение. Но разве настоящий хоббист электронщик так поступает? Нет, мы идем сложным путем. Драйвер так драйвер, знать бы еще как его написать. Требование цифровой подписи можно обойти, хотя, конечно, это нежелательно, но если другого выхода нет, то ... В ДОС и Win9х у меня и так все работает. Что касается того зачем писать во все порты, то если Вы мельком гляните в мой код, то все станет ясно.
Вариантов работать через контроллер полно и даже ничего делать не нужно, можно купить готовое решение. Но разве настоящий хоббист электронщик так поступает?
Мне вспомнилось про мышей и кактус. Зачем усложнять то что можно сделать проще?
Darmok писал(а):
Драйвер так драйвер, знать бы еще как его написать.
Обычно пишут на Си, но если очень нужно, можно на бейсике написать. Там есть готовый драйвер для x86 и x64 для доступа к портам - pbdriverio.sys и pbdriverio_x64.sys. Чтобы работал его нужно подписать, а с этим немного сложно. Нужно юридическое лицо и несколько сотен американских рублей на покупку цифровой подписи у майкрософта.
Darmok писал(а):
если Вы мельком гляните в мой код, то все станет ясно
Кода нет и не на что смотреть. Не проще в двух словах объяснить?
Некоторые сорта кактусов весьма аппетитны, из них, в том числе, делают текилу. За ссылку огромное спасибо, буду изучать, авось что-нибудь получится. С подписью даст бог справлюсь. Мой код доступен по ссылке, которую я давал. Но дам его напрямую. В двух словах объяснить сложно.
То, что требуется низкоуровневый доступ к порту это цена которую приходится платить за простоту устройства.
По-моему, проще взять готовую плату на FT232H по цене бутылки вина и получить законченное решение. Можно взять любой маленький МК с USB за 100 рублей и повторить на нём эту плату времён царя Гороха. И все они будут управляться через СОМ-порт, правда, виртуальный. Впрочем, каждый сам выбирает себе объект для секса...
Можно взять любой маленький МК с USB за 100 рублей и повторить на нём эту плату времён царя Гороха.
И я про тоже. Можно организовать связь через USB HID что позволит использовать имеющийся драйвер и будет работать начиная с Win95 (не помню была ли там поддержка USB, в 98 точно была) до текущей версии винды. Вот к примеру баромер со связью по USB HID.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения