Подключаем наши девайсы к компьютеру. Обсуждаются: порты, протоколы, драйвера, языки программирования и т.д.
Ответить

Re: ProfiLab expert

Пт ноя 11, 2016 16:23:00

Мурик писал(а):
ART_ME писал(а):Ничего плохого в этом нет, если есть ТЗ. А вот если его нет?
Не совсем понял связь между ТЗ (техническим заданием?) и описанием переменных. Как одно с другим связанно?


Тоже интересно...На кой ТЗ к переменным ?

Добавлено after 1 minute 45 seconds:
Мурик писал(а):Сделано по таймеру и время изменения цвета соответствует одному тику таймера. Задержки нежелательны в том же потоке в котором выполняется обработчик событий окон.


Ну таймер-то прерывания вызывает ?

Re: ProfiLab expert

Пт ноя 11, 2016 16:36:16

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

Re: ProfiLab expert

Пт ноя 11, 2016 18:08:19

Мурик писал(а):Хорошо, спрошу по другому. Допустим я знаю что мне нужна переменная....

Допустим, что Вы пока еще не знаете, что Вам нужна некая переменная... У Вас что, и вправду, такой вариант в голове не укладывается?
Перед Вами коробка с 64 входами и 64 выходами. Откуда Вы заранее можете знать, что и когда на какой вход подать когда абсолютно никакой техдокументации у Вас на эту коробку нет и никогда не будет?

Добавлено after 15 minutes 40 seconds:
Мурик писал(а):
ART_ME писал(а):Легко и просто - это НЕ 150 строк. Это одна-две, ну в худшем случае три строки.
Код открывающий порт COM1 и устанавливающий логическую единицу на выходе DTR.

А можно посмотреть и проверить работу сего феномена?

Re: ProfiLab expert

Пт ноя 11, 2016 18:39:02

ART_ME писал(а):Допустим, что Вы пока еще не знаете, что Вам нужна некая переменная
Если я пишу программу то точно знаю что нужно. Если размер данных заранее неизвестен, то применяют динамические массивы или динамическое выделение памяти необходимого размера.

ART_ME писал(а):Перед Вами коробка с 64 входами и 64 выходами. Откуда Вы заранее можете знать, что и когда на какой вход подать когда абсолютно никакой техдокументации у Вас на эту коробку нет и никогда не будет?
Это как "пойди туда не знаю куда и принеси то не знаю что"?
Если ничего не известно о взаимодействии с устройством, то использовать его не получится и ProfiLab в этом не поможет.

ART_ME писал(а):А можно посмотреть и проверить работу сего феномена?
Можно https://www.purebasic.com/download.php
Русификатор найти в сети не сложно.
Запуск программы IDE - меню "Компилятор" --> "Компиляция/запуск".
Создание исполняемого файла - меню "Компилятор" --> "Создать приложение".

Re: ProfiLab expert

Пт ноя 11, 2016 18:52:49

Мурик писал(а):
ART_ME писал(а):Допустим, что Вы пока еще не знаете, что Вам нужна некая переменная
Если я пишу программу то точно знаю что нужно.

В этом и состоит разница между монтажкой (проектированием) и его конечным исполнением (распайкой).

Мурик писал(а):Если ничего не известно о взаимодействии с устройством, то использовать его не получится и ProfiLab в этом не поможет.

То есть если Вам не дали на прибор инструкцию, то Вы его выкинете?

Мурик писал(а):Можно https://www.purebasic.com/download.php
Увы, я не увидел в его системе команд команды вывода бита на Tx.

Re: ProfiLab expert

Пт ноя 11, 2016 19:02:58

ART_ME писал(а):То есть если Вам не дали на прибор инструкцию, то Вы его выкинете?
Если о приборе ничего не известно (какую функцию он выполняет и как с ним взаимодействовать) то для чего его применить?

ART_ME писал(а):Увы, я не увидел в его системе команд команды вывода бита на Tx.
Это есть https://www.purebasic.com/documentation ... tatus.html
#PB_SerialPort_TXD: Set TXD signal status (value can be 0 or 1)

Re: ProfiLab expert

Пт ноя 11, 2016 19:45:59

Мурик писал(а):Если о приборе ничего не известно (какую функцию он выполняет и как с ним взаимодействовать) то для чего его применить?

Такой прибор и называется "черный ящик", который Вы каждый раз видите перед собой после самостоятельной разработки чего-нибудь.
Т.к. вследствие ошибок Вы не в состоянии предсказать реакцию прибора на воздействия, Вам придется изучать эти реакции, но
перечень и порядок воздействий определяются по ходу получения реакций. Иными словами, Вы эти воздействия предсказать не в состоянии.

Мурик писал(а):#PB_SerialPort_TXD: Set TXD signal status (value can be 0 or 1)
И 75 строк до неё и еще 75 строк после? :))

Re: ProfiLab expert

Пт ноя 11, 2016 19:54:44

Код:
OpenSerialPort(0, "COM1", 9600, #PB_SerialPort_NoParity, 8, 1, #PB_SerialPort_NoHandshake, 1024, 1024)
SetSerialPortStatus(0, #PB_SerialPort_TXD, 1)
Delay(4000)
Сколько строк получается? :) :)))
Последнюю можно не считать.

Re: ProfiLab expert

Пт ноя 11, 2016 20:10:10

Означает ли это, что если я напишу всего лишь:
cikl:
OpenSerialPort(0, "COM1", 9600, #PB_SerialPort_NoParity, 8, 1, #PB_SerialPort_NoHandshake, 1024, 1024)
SetSerialPortStatus(0, #PB_SerialPort_TXD, 1)
OpenSerialPort(0, "COM1", 9600, #PB_SerialPort_NoParity, 8, 1, #PB_SerialPort_NoHandshake, 1024, 1024)
SetSerialPortStatus(0, #PB_SerialPort_TXD, 0)
goto cikl

то я получу на пине 3 порта COM генератор?

Re: ProfiLab expert

Пт ноя 11, 2016 20:17:30

Нет смысла постоянно отрывать порт. Достаточно сделать раз при старте программы.
Код:
OpenSerialPort(0, "COM1", 9600, #PB_SerialPort_NoParity, 8, 1, #PB_SerialPort_NoHandshake, 1024, 1024)
Repeat
  SetSerialPortStatus(0, #PB_SerialPort_TXD, 1)
  SetSerialPortStatus(0, #PB_SerialPort_TXD, 0)
ForEver

Re: ProfiLab expert

Сб ноя 12, 2016 07:17:59

Спасибо, я попробую.

Добавлено after 39 minutes 41 second:
https://www.youtube.com/watch?v=6S6BbxhAF8c

А сделайте плиз мне такие же 3-5 строк для управления пином порта LPT. А вдруг?

ЗЫ. Попробовал Ваш исходник TestComPort. Не заработал и выдал вот такое сообщение:
Снимок.JPG
(40.29 KiB) Скачиваний: 380

Re: ProfiLab expert

Сб ноя 12, 2016 11:47:37

Для LPT порта нужен драйвер... Для установки драйвера необходимы права администратора.

Установка лог. 1 на первом пине LPT1.
Код:
XIncludeFile "pbdriverio_Framework.pbi"

hDriver = OpenDriver_PB_IO()
PortOut(hDriver, $378, 1)
CloseDriver(hDriver)
Вложения
COM_LPT.zip
(58 KiB) Скачиваний: 254

Re: ProfiLab expert

Сб ноя 12, 2016 12:58:42

Код:
XIncludeFile "pbdriverio_Framework.pbi"
hDriver = OpenDriver_PB_IO()

Repeat
PortOut(hDriver, $378, 1)
PortOut(hDriver, $378, 0)
ForEver

CloseDriver(hDriver)

Так?

Re: ProfiLab expert

Сб ноя 12, 2016 13:14:52

Да.

Re: ProfiLab expert

Сб ноя 12, 2016 19:52:46

Новый TestComPort работает.
Остальное попозже.

Re: ProfiLab expert

Вс ноя 13, 2016 07:42:41

При запуске PB_LPT_Pins_pbdriverio выскакивает "Ошибка доступа к драйверу" Код ошибки 0".
Ни запуск от администратора, ни размещение драйверов в system32 эффекта не дают.
Может этот pbdriverio_x64 нужно как-то отдельно инсталлировать?
----------
Увы, все те же грабли....
Данный плагин позволит получить доступ к любому порту компьютера в обход защиты Windows.
Это например, нужно для работы с LPT портом.
В отличие от других плагинов, этот не требует других файлов, типа InpOut32.dll (плагин сам является аналогом этой библиотеки). И он работает не только на x86 (32 бита), но и на x64 (64 бита) системах.
Плагин использует для работы с портами, драйверы pbdriverio.sys и pbdriverio_x64.sys (устанавливается соответствующий разрядности системы).
Работа плагина была проверена на системах Windows 2000 / XP / 7.
Плагин и драйверы были написаны мною на PureBasic (исходники прилагаются).
Учтите, драйверы не имеют цифровой подписи майкрософт (она стоит несколько сотен вечнозеленых и для бесплатных проектов это непозволительная роскошь), поэтому в Windows 7 x64, драйвер удастся загрузить только переведя систему в тестовый режим.


.... Любопытно, а существует хоть одна программерская фирма, у которой есть подписанный у мелкомягких драйвер LPT?

Re: ProfiLab expert

Вс ноя 13, 2016 11:34:31

Если винда x64 то драйвер должен иметь цифровую подпись или тестовую, но тогда винда должна работать в тестовом режиме.

Re: ProfiLab expert

Вс ноя 13, 2016 12:16:49

Мурик писал(а):Если винда x64 то драйвер должен иметь цифровую подпись или тестовую, но тогда винда должна работать в тестовом режиме.

Ну дык я о том и спрашиваю: существует ли в мире хоть одна программерская фирма, располагающая подписанным драйвером на доступ к LPT?

Re: ProfiLab expert

Вс ноя 20, 2016 13:38:06

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

Добавлено after 5 minutes 46 seconds:
А вот это имитатор энкодера в профилабе, который работает с платой выше.
В данном случае мне оказалось неизмеримо легче использовать готовое схемное решение, чем самому писать программу.
То есть происходит сравнение ни того, что можно сделать, или того, что лучше сделать, а того, что имеется в свободном доступе - на блюдечке с голубой каемочкой.
Схем квадратурных энкодеров в инете и литературе полно, а вот программ, их эмулирующих, я не встречал ни разу.
В результате трудозатраты несоизмеримы - профилаб на коне.
Вложения
Энкодер.JPG
(77.56 KiB) Скачиваний: 384
ProfiLab_OY_2+COM_8.lay6
(116.21 KiB) Скачиваний: 231

Re: ProfiLab expert

Пн дек 05, 2016 13:25:14

Попал в исследования мощный драйвер ШД.
Ну, думаю, счас ему профилаб на степ\дир прицеплю, схему с разгоном частоты сотворю и буду ШД гонять на всяких-разных режимах.
Благо что уж очень удобен для этой цели профилаб оказался - универсальный ГУН готовым блоком имеется, и всё получается
совсем легко и просто.
Но случился облом - импульсы на выходе профилаба до такой степени вышли "грязные", что возникло сомнение в исправности ШД.
Ладно если на 15 кГц такое приключилось, на 100 Гц ШД трясет!!!
Пришлось достать из архивов платку с крутилками, которая и показала, что ШД исправен.

Отсюда вывод - профилаб в динамике абсолютно непригоден для практического использования, только в статике - супер набор тумблеров,
и не более того.
Красивая у немцев вышла... игрушка. :(
Ответить