Чтение данных с Mitutoyo

Простейшие вопросы в области инженерной разработки
Аватара пользователя
jane_wild
master
master
Сообщения: 459
Зарегистрирован: 30 июн 2016, 02:11
Версия LabVIEW: 2020
Благодарил (а): 83 раза
Поблагодарили: 15 раз
Контактная информация:

Чтение данных с Mitutoyo

Сообщение jane_wild »

Доброго всем здравия. Испытываю трудности с чтением данных c микрометра. Суть вот в чем: Имеется микрометр, который через IT-012U USB адаптер подключен к PC. Компьютер его распознает как USB Input Device, т.е. по сути как клавиатуру. Значит, если открыть блокнот, Excel либо установить фокус ввода в numeric (LabVIEW) и нажать кнопку на адаптере, то числовое значение с микрометра там появится. Как будто вы его напечатали с клавиатуры. Ключевое здесь "установить фокус", ведь нельзя же все время держать фокус, ожидая прихода новых данных. Собственно вопрос как перехватить данные с этого адаптера и отобразить их? После передачи цифр имитируестя нажатие ввода и если активно что то, кроме поля ввода, то поведение может быть непредсказуемым. Как поступить в данном случае. Спасибо.
Аватара пользователя
IvanLis

Activity Professionalism Tutorials Gold Man of the year 2012
Автор
guru
guru
Сообщения: 5461
Зарегистрирован: 02 дек 2009, 17:44
Награды: 7
Версия LabVIEW: 2015, 2016
Откуда: СССР
Благодарил (а): 27 раз
Поблагодарили: 86 раз

Re: Чтение данных с Mitutoyo

Сообщение IvanLis »

jane_wild писал(а):Как поступить в данном случае. Спасибо.
Не знаю для чего планируется использовать, но я бы поставил между ними контроллер, который принимал бы эти символы и по Enter отправлял бы в ПК.
Все равно у Вас используется прослойка в виде адаптера, одной больше одной меньше. И сдается мне, что это именно он таким образом инфу шлет, а не железяка.
А вообще как-нибудь напрямую подключиться, минуя адаптер.
Аватара пользователя
jane_wild
master
master
Сообщения: 459
Зарегистрирован: 30 июн 2016, 02:11
Версия LabVIEW: 2020
Благодарил (а): 83 раза
Поблагодарили: 15 раз
Контактная информация:

Re: Чтение данных с Mitutoyo

Сообщение jane_wild »

Микрометер такой подключен к адаптеру вот таким кабелем Подключится напрямую? Я нашла в инете немного информации... там используется какой то не совсем понятный протокол SPC...
Хотелось бы пойти более простым путем и как то выловить данные когда я нажимаю вот на эту кнопку
Mitutoyo.PNG
Alex Dem
assistant
assistant
Сообщения: 119
Зарегистрирован: 06 май 2015, 22:24
Версия LabVIEW: 2014, 2018
Благодарил (а): 1 раз
Поблагодарили: 1 раз
Контактная информация:

Re: Чтение данных с Mitutoyo

Сообщение Alex Dem »

Нашел такие переходники, вроде бы понятно работа с ними описана. Денег конечно стоят, но...
http://www.microridge.com/ftp/gw_sm/gag ... _guide.pdf
Если есть кому собрать, вот видео самодельного переходника и устройства для считывания и отображения результатов измерений, там же ссылка на код для ардуино, схему и плату.
Аватара пользователя
taras_33

Activity
professional
professional
Сообщения: 391
Зарегистрирован: 31 окт 2009, 18:25
Награды: 1
Версия LabVIEW: 2019
Поблагодарили: 13 раз
Контактная информация:

Re: Чтение данных с Mitutoyo

Сообщение taras_33 »

Если еще актуально....
Не знаю для чего планируется использовать, но я бы поставил между ними контроллер, который принимал бы эти символы и по Enter отправлял бы в ПК.
была такая же задача пару лет назад и была решена, как советовал IvanLis. Только я не использовал адаптер, а подключил микрометр напрямую к микроконтроллеру, а тот в свою очередь по USB к компьютеру. Jane, посмотрите в приложении документ, в свое время он сильно мне помог. Если коротко, то я делал так. Вход REQ (5 pin) - запрос, подключаем к GND, это заставит Mitutoyo посылать данные непрерывно (можно и транзистор поставить) Поскольку выхода, как data, так и clock с открытым коллектором, то в контроллере конфигурируем два входа и включаем на них подтяжку к питанию "pullup". Далее в прерывании по спадающему фронту от clock, читаем вход data и записываем в массив. Посылка состоит из тринадцати цифр/символов, каждая из которых состоит из четырех бит - итого 52 бита. Получили 52 бита, проверили что первые 16 все единицы, значит все Ок, отбросили их, а остальные распарсили и далее по необходимым хотелкам…. Необходимо обратить внимание вот на что. Посылка, длится около 28 mS ( между посылками около 80 mS) т.е. достаточно медленно. Поэтому обращайте внимание на приоритет задач, если они используются, а также приоритет прерываний.
Вложения
Mitutoyo.jpg
Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots.
So far, the Universe is winning!
Аватара пользователя
jane_wild
master
master
Сообщения: 459
Зарегистрирован: 30 июн 2016, 02:11
Версия LabVIEW: 2020
Благодарил (а): 83 раза
Поблагодарили: 15 раз
Контактная информация:

Re: Чтение данных с Mitutoyo

Сообщение jane_wild »

Если еще актуально....
Да еще все актуально. К сожалению с микроконтроллерами я на "Вы", поэтому надеялась что возможно обойтись только средствами LabVIEW. Если в диспетчере микрометер видится как HID "USB Input Device", то думала что есть способ на системном уровне перехватить посылаемые данные... Когда я вижу как посылаются данные в блокнот или Excel, создается впечатление что кто то очень бысто печатает на том конце...
Раньше на портале я видела тему, кажется с чтением данных из сканера штрих кода, там что то похожее было. Пыталась найти и посмотреть как там решили проблему, но поиск на портале не работает...
Аватара пользователя
dadreamer

Activity Professionalism Автор
professor
professor
Сообщения: 3926
Зарегистрирован: 17 фев 2013, 16:33
Награды: 4
Версия LabVIEW: 2.5 — 2022
Благодарил (а): 11 раз
Поблагодарили: 126 раз
Контактная информация:

Re: Чтение данных с Mitutoyo

Сообщение dadreamer »

jane_wild писал(а):Раньше на портале я видела тему, кажется с чтением данных из сканера штрих кода, там что то похожее было. Пыталась найти и посмотреть как там решили проблему, но поиск на портале не работает...
Эта тема?
По запросу "hid" usb site:ni.com можно много тем найти, связанных с коммуникацией :labview: и HID-устройств (пример). Так или иначе данные можно достать через Визу или разношёрстные врапперы WinAPI. Можно и собственную обёртку написать. Однако от такого перехвата устройство не перестанет быть HID-совместимым, что значит, что оно по-прежнему будет печатать а ля клава, и программа, имеющая фокус, также примет введённые данные. С помощью хуков такие события можно фильтровать, но реализация не будет самой простой.

Возможно, на самом деле проще приобрести/изготовить промежуточное устройство, которое будет конвертировать данные в удобный формат. Может быть, существует конвертор SPC -> RS-232?
Аватара пользователя
jane_wild
master
master
Сообщения: 459
Зарегистрирован: 30 июн 2016, 02:11
Версия LabVIEW: 2020
Благодарил (а): 83 раза
Поблагодарили: 15 раз
Контактная информация:

Re: Чтение данных с Mitutoyo

Сообщение jane_wild »

to: dadreamer, Да тема эта - почитаю.
Может быть, существует конвертор SPC -> RS-232?
Конечно существуют, только это реальный RS232
вот такой
MitutoyoRS232.PNG
А в PC, где планируется его использовать такого порта нет, т.е. еще нужно конвертер в USB искать... Вообщем буду разговаривать с схемотехниками, по поводу контроллера, посмотрим что они скажут. В любом случае Спасибо - доходчиво объяснили.
Аватара пользователя
jane_wild
master
master
Сообщения: 459
Зарегистрирован: 30 июн 2016, 02:11
Версия LabVIEW: 2020
Благодарил (а): 83 раза
Поблагодарили: 15 раз
Контактная информация:

Re: Чтение данных с Mitutoyo

Сообщение jane_wild »

to: taras_33,
Поэтому обращайте внимание на приоритет задач, если они используются, а также приоритет прерываний.
Не могли бы Вы более детально пояснить насчет прерываний... народ тут у нас интересуется. Спасибо.
Аватара пользователя
dadreamer

Activity Professionalism Автор
professor
professor
Сообщения: 3926
Зарегистрирован: 17 фев 2013, 16:33
Награды: 4
Версия LabVIEW: 2.5 — 2022
Благодарил (а): 11 раз
Поблагодарили: 126 раз
Контактная информация:

Re: Чтение данных с Mitutoyo

Сообщение dadreamer »

jane_wild писал(а):А в PC, где планируется его использовать такого порта нет, т.е. еще нужно конвертер в USB искать...
Можно и PCI-плату воткнуть типа такой или аналогичной (не знаю, как сейчас, но года три назад в ДНС продавались).

К своему предыдущему посту: можете сравнить вывод от обычной клавы и от микрометра с помощью программы ViewKeyCode (режим WH_KEYBOARD_LL), вдруг что интересное увидите - flags, ExtraInfo. Если ничего такого не будет, то отличить этот девайс от стандартной клавиатуры не представится возможным.

upd: В принципе, вот здесь представлен концепт, о котором я изначально говорил: используется хук на события от клавиатуры, чтобы получить возможность принять или отклонить событие, в комбинации с RawInput (прямой ввод данных), чтобы сопоставить конкретное событие с ID устройства, пославшего событие (так как сам хук таких данных не предоставляет). Думаю, в :labview: можно заменить Raw Input на :vi: с вкладки Connectivity -> Input Device Control. Но для реализации хука по-прежнему нужно писать небольшую DLL. Также существует ряд "подводных камней", о которых написано в приведённой ссылке.
Последний раз редактировалось dadreamer 10 апр 2019, 10:01, всего редактировалось 1 раз.
Аватара пользователя
taras_33

Activity
professional
professional
Сообщения: 391
Зарегистрирован: 31 окт 2009, 18:25
Награды: 1
Версия LabVIEW: 2019
Поблагодарили: 13 раз
Контактная информация:

Re: Чтение данных с Mitutoyo

Сообщение taras_33 »

Не могли бы Вы более детально пояснить насчет прерываний...
В контроллере крутится несколько задач ADC, USB, GUI - графический интерфейс с тачскрином (emWin), а также чтение и парсинг данных с микрометра. У каждой задачи свои прерывания. И если одно имеет более высокий приоритет, то другое с более низким приоритетом, даже если оно произошло чуть ранее, будет ждать своей очереди. В результате когда она дойдет, входной сигнал может быть уже другим, как результат данные будут неверные. Поэтому нужно играться с настройками, что бы и тач был отзывчивым, график на LCD рисовался не дергаясь и данные передавались исправно по USB. В моем случае идея была использовать устройство как с компом, так и без. В вашем случае будет проще, две задачи - USB и разбор данных с микрометра. Так что проблем скорее всего не будет. Возьмите самый дешевый контроллер с аппаратным USB и вперед. Удачи!
Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots.
So far, the Universe is winning!
Аватара пользователя
jane_wild
master
master
Сообщения: 459
Зарегистрирован: 30 июн 2016, 02:11
Версия LabVIEW: 2020
Благодарил (а): 83 раза
Поблагодарили: 15 раз
Контактная информация:

Re: Чтение данных с Mitutoyo

Сообщение jane_wild »

dadreamer, Спасибо за программку - в хозяйстве пригодится. Сделала скриншот, первые идут данные с микрометра, затем я нажала пробел и ввела те же значения с клавиатуры в конце нажала Enter. Не вижу никаких отличий, за исключением скорости ввода и нажатием Enter - Mitutoyo "нажимает" его на цифровой клавиатуре.
Vk.PNG
taras_33, спасибо за объяснение. Написала в личку.
Ребята спасибо - всем по плюсику, будем думать к каком направлении двигаться дальше.
Аватара пользователя
Vitekkz88

Activity Silver Автор
expert
expert
Сообщения: 1100
Зарегистрирован: 21 янв 2014, 15:45
Награды: 3
Версия LabVIEW: 12,13,14
Откуда: Томск
Контактная информация:

Re: Чтение данных с Mitutoyo

Сообщение Vitekkz88 »

jane_wild, если еще актуально и хочется разрулить программно, то давайте попробуем хуками.
Запустите от имени администратора(а можно попробовать и без, может отработать)Hook_key.exe и отправьте данные с Вашего устройства. Если данные будут сохраняться в файл keys.txt, то далее попробую помочь Вам доработать ПО, чтобы фильтровать данные с конкретного устройства по его VID и PID.
В текущем варианте данные не фильтруются по VID и PID, программа построена на использовании функции SetWindowsHookEx и событий KEYDOWN.
Если всё отработает корректно, то можно продумать алгоритм использования текущей реализации в таком ключе:
Запустили программу, запустили Hook_key.exe в фоновом режиме, проверяем содержимое файла раз в секунду(или чаще, как хотите).
Если данные появились в файле, то вычитываем их и сохраняем в регистре до следующей проверки. Сам файл очищаем с помощью Set File Size.vi(задав размер = 0). Поскольку хук без фильтрации, то в файле получите все события нажатия кнопок на клавиатуре от момента нажатия и до считывания/очистки :crazy: .
Исходники логера у меня есть, собирал в QT Creator 4.5.0 x32, проверял в Win10 x64. Если не будет хватать каких-то библиотек - говорите, я их подтяну.
Вложения
Hook_key.zip
(576.75 КБ) 79 скачиваний
Инженер - это открыто светящийся интеллект, свободный и не обидный юмор, это легкость и широта мысли...Это воспитанность, тонкость вкусов, хорошая речь, плавно согласованная и без сорных словечек...
-А. И. Солженицын
Аватара пользователя
jane_wild
master
master
Сообщения: 459
Зарегистрирован: 30 июн 2016, 02:11
Версия LabVIEW: 2020
Благодарил (а): 83 раза
Поблагодарили: 15 раз
Контактная информация:

Re: Чтение данных с Mitutoyo

Сообщение jane_wild »

Да, еще актуально. Попробовала Вашу програмку. Да данные сохраняются в текстовый файл в фоновом режеме (без его открытия). Вот как он выглядит
keys.txt
(60 байт) 89 скачиваний
Спасибо за готовность помочь.

P.S. Windows 7-64
Аватара пользователя
dadreamer

Activity Professionalism Автор
professor
professor
Сообщения: 3926
Зарегистрирован: 17 фев 2013, 16:33
Награды: 4
Версия LabVIEW: 2.5 — 2022
Благодарил (а): 11 раз
Поблагодарили: 126 раз
Контактная информация:

Re: Чтение данных с Mitutoyo

Сообщение dadreamer »

Vitekkz88, я правильно понимаю, что раз события не фильтруются, то они уходят тем окнам/контролам, у которых был фокус в момент нажатия? Если так, то анализировать VID/PID надо непосредственно в колбэке LowLevelKeyboardProc, чтобы иметь возможность отделить нажатия микрометра от нажатий обычной клавы и не дать им пройти дальше. В предыдущем своём сообщении я ссылку кидал, там чел долго возился, чтобы похожую штуку реализовать, т.е. блок нажатий одних кнопок на одной клаве и блок нажатий других кнопок на другой клаве (обе одновременно подключены, ессно). Получилось, но с рядом нюансов, т.е. решение не на 100% надёжное, к сожалению.
Ответить
  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Для чайников»