Page 1 of 2

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

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

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

PostPosted: 27 Mar 2019, 19:57
by IvanLis
jane_wild wrote:Как поступить в данном случае. Спасибо.


Не знаю для чего планируется использовать, но я бы поставил между ними контроллер, который принимал бы эти символы и по Enter отправлял бы в ПК.
Все равно у Вас используется прослойка в виде адаптера, одной больше одной меньше. И сдается мне, что это именно он таким образом инфу шлет, а не железяка.
А вообще как-нибудь напрямую подключиться, минуя адаптер.

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

PostPosted: 27 Mar 2019, 21:21
by jane_wild
Микрометер такой подключен к адаптеру вот таким кабелем Подключится напрямую? Я нашла в инете немного информации... там используется какой то не совсем понятный протокол SPC...
Хотелось бы пойти более простым путем и как то выловить данные когда я нажимаю вот на эту кнопку
Mitutoyo.PNG

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

PostPosted: 27 Mar 2019, 22:08
by Alex Dem
Нашел такие переходники, вроде бы понятно работа с ними описана. Денег конечно стоят, но...
http://www.microridge.com/ftp/gw_sm/gageway_sm_users_guide.pdf
Если есть кому собрать, вот видео самодельного переходника и устройства для считывания и отображения результатов измерений, там же ссылка на код для ардуино, схему и плату.

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

PostPosted: 07 Apr 2019, 19:51
by taras_33
Если еще актуально....
Не знаю для чего планируется использовать, но я бы поставил между ними контроллер, который принимал бы эти символы и по Enter отправлял бы в ПК.

была такая же задача пару лет назад и была решена, как советовал IvanLis. Только я не использовал адаптер, а подключил микрометр напрямую к микроконтроллеру, а тот в свою очередь по USB к компьютеру. Jane, посмотрите в приложении документ, в свое время он сильно мне помог. Если коротко, то я делал так. Вход REQ (5 pin) - запрос, подключаем к GND, это заставит Mitutoyo посылать данные непрерывно (можно и транзистор поставить) Поскольку выхода, как data, так и clock с открытым коллектором, то в контроллере конфигурируем два входа и включаем на них подтяжку к питанию "pullup". Далее в прерывании по спадающему фронту от clock, читаем вход data и записываем в массив. Посылка состоит из тринадцати цифр/символов, каждая из которых состоит из четырех бит - итого 52 бита. Получили 52 бита, проверили что первые 16 все единицы, значит все Ок, отбросили их, а остальные распарсили и далее по необходимым хотелкам…. Необходимо обратить внимание вот на что. Посылка, длится около 28 mS ( между посылками около 80 mS) т.е. достаточно медленно. Поэтому обращайте внимание на приоритет задач, если они используются, а также приоритет прерываний.

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

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

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

PostPosted: 09 Apr 2019, 15:43
by dadreamer
jane_wild wrote:Раньше на портале я видела тему, кажется с чтением данных из сканера штрих кода, там что то похожее было. Пыталась найти и посмотреть как там решили проблему, но поиск на портале не работает...

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

Возможно, на самом деле проще приобрести/изготовить промежуточное устройство, которое будет конвертировать данные в удобный формат. Может быть, существует конвертор SPC -> RS-232?

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

PostPosted: 09 Apr 2019, 20:24
by jane_wild
to: dadreamer, Да тема эта - почитаю.
Может быть, существует конвертор SPC -> RS-232?
Конечно существуют, только это реальный RS232
вот такой
MitutoyoRS232.PNG

А в PC, где планируется его использовать такого порта нет, т.е. еще нужно конвертер в USB искать... Вообщем буду разговаривать с схемотехниками, по поводу контроллера, посмотрим что они скажут. В любом случае Спасибо - доходчиво объяснили.

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

PostPosted: 09 Apr 2019, 21:11
by jane_wild
to: taras_33,
Поэтому обращайте внимание на приоритет задач, если они используются, а также приоритет прерываний.

Не могли бы Вы более детально пояснить насчет прерываний... народ тут у нас интересуется. Спасибо.

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

PostPosted: 09 Apr 2019, 21:40
by dadreamer
jane_wild wrote:А в PC, где планируется его использовать такого порта нет, т.е. еще нужно конвертер в USB искать...

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

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

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

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

PostPosted: 10 Apr 2019, 05:42
by taras_33
Не могли бы Вы более детально пояснить насчет прерываний...

В контроллере крутится несколько задач ADC, USB, GUI - графический интерфейс с тачскрином (emWin), а также чтение и парсинг данных с микрометра. У каждой задачи свои прерывания. И если одно имеет более высокий приоритет, то другое с более низким приоритетом, даже если оно произошло чуть ранее, будет ждать своей очереди. В результате когда она дойдет, входной сигнал может быть уже другим, как результат данные будут неверные. Поэтому нужно играться с настройками, что бы и тач был отзывчивым, график на LCD рисовался не дергаясь и данные передавались исправно по USB. В моем случае идея была использовать устройство как с компом, так и без. В вашем случае будет проще, две задачи - USB и разбор данных с микрометра. Так что проблем скорее всего не будет. Возьмите самый дешевый контроллер с аппаратным USB и вперед. Удачи!

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

PostPosted: 10 Apr 2019, 15:28
by jane_wild
dadreamer, Спасибо за программку - в хозяйстве пригодится. Сделала скриншот, первые идут данные с микрометра, затем я нажала пробел и ввела те же значения с клавиатуры в конце нажала Enter. Не вижу никаких отличий, за исключением скорости ввода и нажатием Enter - Mitutoyo "нажимает" его на цифровой клавиатуре.
Vk.PNG

taras_33, спасибо за объяснение. Написала в личку.
Ребята спасибо - всем по плюсику, будем думать к каком направлении двигаться дальше.

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

PostPosted: 15 Apr 2019, 10:56
by 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. Если не будет хватать каких-то библиотек - говорите, я их подтяну.

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

PostPosted: 15 Apr 2019, 18:06
by jane_wild
Да, еще актуально. Попробовала Вашу програмку. Да данные сохраняются в текстовый файл в фоновом режеме (без его открытия). Вот как он выглядит
keys.txt
(60 Bytes) Downloaded 10 times

Спасибо за готовность помочь.

P.S. Windows 7-64

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

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