-Музыка

Музейности и VB6 пост

Дневник

Четверг, 13 Апреля 2017 г. 03:03 + в цитатник
Месяц не писал, занят😬. Ха, идеальный смайл))
Чем поделиться? Находкой, списанной. Предыстория такова, что работаючи в ЦАПе в начале 2010-х, как новобранцу, мне досталась машинка Compaq DeskPro какая-то там в десктоп форм-факторе, на ней была наклейка мол Windows 98 compatible и ключ этой самой винды. Так как в почтовом ящике в принципе не предусмотрены каналы связи (и да, теперь я в этом секу, ибо безопасники местные были профаньё по меркам тех людей, с кем сейчас общаюсь, судя по методам отлова любителей интернетов на рабочих местах), о левых операционках на рабочих машинах знать не знали ни мокрый софт, ни даже органы. К чему это всё? На ней давно стояла XP, внутри был Pentium III 700 MHz (Coppermine) 128 SDRAM133 и 80ГБ НЖМД, но что самое удивительное, так это nVidia Quadro 64 МБ какая-то там пассивная. Датировалась машинка изготовлением 2000 года, в ней села батарейка и каждый день я в противовес нефединскому голосу включал её, и она издавала полуваттным динамиком весьма недвусмысленные намёки на сброс настроек BIOS. Херня вопрос, через время я сменил батарею и видеокарту на двухголовую, а к чему вся эта речь? Суть в том, что эта вот DeskPro сейчас кажется рухлядью, даже в далёком 2010 уже таковым являлось, поскольку 2...4 ГБ ОЗУ на 775 сокете являлось стандартом де-факто (жирные годы и долгоиграющая платформа), а представьте, 2000 год. Вот выбито свежее финансирование, и в госконтору ставят вожделенные после Pentium I и автокада/пикада для доса с галиматейным спулером на LPT-принтеры нормальные современные машины. И для сравнения - в 1999 году родители обновили мне комп (буквально за год до описываемых событий) на ASUS P2B с Celeron 333 и 64 МБ ОЗУ + 5 ГБ НЖМД и двухмегабайтной немощной видеокартой. В новом корпусе, однако апдейт 70% железа уже считай новый комп, но у него оставался 4x Creative CD-ROM + ISA SB16 (!), 5,25" флопповод и 400 МБ НЖМД от «четвёрки». В 2002-ом году он успешно дал дуба от моих кривых рук накануне Комтека, и взамен был приобретён Celeron Tualatin 1000 МГц с 256 ОЗУ на мамке Epox (я его мебелировал в конце, и он с переменным успехом показывал нам с лярвой киношки, а я боролся за бесшумность). Но это потом он обзавёлся 40 ГБ НЖМД (потом 120...), 512 ОЗУ и той самой двухголовой Radeon 8500 64МБ. Представьте себе, насколько топовой машинкой был DeskPro в своём 2000-м, когда средний размер жёсткого диска был 20 ГБ, а о 64 МБ видео можно было во снах грезить.

Но нет, читатель, это всё лишь вступление.

Досталась недавно причудливая машинка из встроенной техники - комплекса радиоконтроля, на мамке ASUS TX97E первый пентиум MMX, года 1998 сборки, вполне по тем временам оправданная штука. С двумя LPT-портами, АЦП в виде звуковой карты, подключающаяся к AT и ATX БП, с каркасом на винтах ГОСТ 17473. На ней работала радиософтина, которую я уже не увидел. Но самым необычным для меня стало вот это:
_MG_2610 (700x556, 102Kb)
_MG_2614 (700x466, 235Kb)
_MG_2618 (267x700, 78Kb)
COMPAL LM-LT220 (700x466, 122Kb)
COMPAL TVC02 GKRTVC02 LM-LT220 (700x548, 132Kb)
Это видеопара Compal TVC02 и LCD-дисплей Compal LM-LT220. Однозначно в музей ибо время на включение и проверку работоспособности надо где-то найти. С проприетарным разъёмом и шиной передачи данных в дисплей (VGA тоже поддерживается). Питание тоже по шине. Видимо, какое-то бюджетное решение, однако, 1998 год и это самая ранняя ЖК-панель, которую я держал в руках (вру, ноутбук 486 с ч/б пассивной матрицей был). Умельцы приделали к ней вывод неизвестно чего, скорее всего это продублированные кнопки управления (матрица работала в составе комплекса), что интересно - в интернетах, кроме как на eBay, упоминаний про Compal совсем немного, и решение, выходит, совсем не бытовое. Драйверов нет, если только не на дискетках, фирмы уже нет, и вот он закрадывается вопрос - панель всё же ЖК, цветная, это ж каких бабок она стоила в 1998 и сколько в итоге стоил подобный комплекс? Однозначно в музей или на дачу, а может как информационный дисплей/стенд, но шина связывает руки - вариант запихнуть в Atom 525 как метеостанцию (пха!) сразу же отметаю ибо Atom может позволить себе современную ОС Win10. Вот такие чудеса.


По VB6, как в заголовке поста, хочу рассказать об одном успехе. Программа KCam 4 при всей своей пригодности и простоте, является топорной прогой на VB6, где люди рисуют лишь эскизы, и оная один из них. Суть моей претензии проста: раз есть у меня возможность подключить к ПК множество устройств по COM-порту или переходникам USB-COM, которые позволяют отсылать всё, что угодно, а не просто дёргать пины LPT, почему бы не прикрутить больше функционала к станку? Например, очень не хватает аппаратного Keyboard jog (пульт управления), ибо когда ты находишься далеко от терминала и ловить 0 заготовки неудобно с клавиатуры, выручает пульт. Большинство китайских контроллеров станка (STEP-DIR) имеют пины для подключения пультов, но пульты эти оказываются неконтроллируемы персональным компьютером и KCam, ибо координата не меняется в программе. Разве что использовать MaxStepper от Kellyware или его клоны. Он действительно полностью работает по UART и даже доставляет памятью команд (независимость от тормозов и зависаний LPT), но это не наш метод. Даже Arduino GRBL не наш путь - будем писать всё своё.
Увы, KCam4 не предусматривает расширяемость, а равно это тупо мышкой по экрану елозить без горячих клавиш управления. Дело усугубляет подключение к станку по RDP, и аппаратная PS/2 клавиатура, подключенная прямо к станку, будет слать символы в экран входа (пока работает RDP), и хотя в KCam предусмотрена работа под Game-порту, джойстика отродясь не было, да ещё и не работает оно. Даже самое простое - при перестановке заготовки не хватает зелёной кнопки повторения G-кода (PLAY). Я просил у Kellyware обратить внимание на эту проблему, но кажется, автор молчит уже сколько-то времени. И вот успех нашёл меня.
Сделано было следующее: в станке стоит моя плата с USB-UART CH340G на борту, релюшками для переключения питания шпинделя, общего питания и подсветки, а также заделом под тахометр и иные фенечки типа ваттметра, которая может помочь реализовать вышеописанное - зелёную кнопку на одном из пинов (их число, кстати, очень ограничено, ATMega8 всё же). Эта плата анализирует кнопки, и если нажата аппаратная PLAY, запустить G-код повторно. Но кнопка PLAY в KCam не содержит ни хоткея, который бы SendKeys мог сэмулировать, ни пункта меню - тупо графическая кнопка TButton без заголовка!
Итак, плата сканирует клаву, посылает нужный символ в UART-COM-порт компьютера, а моя самописная прога отлавливает команду и должна что-то сделать. А делает она это следующим образом: в WinAPI всё же есть функции работы с окнами: FindWindowX, SendMessageS, EnumChildWindows, apiGetWindowText, GetParent, PostMessage, сырцы могу дать, с помощью этих заклинаний мы находим процесс KCam, посылаем ему F4 (модальное окно CNC Controls), а затем циклом перечисляем все имеющиеся кнопки в окне, попутно записывая их порядковые номера (instances, как это делает Au3info), получаем hWnd каждой из них - делается один раз на весь сеанс, и путём подсчёта номеров от кнопок с текстом (Caption, GetWindowText) находим желанную кнопку. Запоминаем её hWnd и путём PostMessage посылаем ей WM_LBUTTONDOWN и WM_LBUTTONUP. При этом кнопка в программе KCam оказывается в нажатом и поднятом положении. SendMessage здесь не пляшет, поскольку ожидает отклика от программы, а PostMessage посылает сообщение в пустоту. Не виснет нажатие кнопки в чужом окне.
Таким образом, при длительном удержании аппаратной кнопки "влево", мы посылаем в UART 2 события: нажатие и отпускание, например «L» и «l» одним (тремя) байтом. Отлавливаем их, и на основе каждого события шлём в hWnd чужого окна PostMessage WM_LBUTTONDOWN и WM_LBUTTONUP. Вуаля. Так что даже самый неудобный интерфейс можно обуздать, ибо это не переписывание KCam снуля. При должной аккуратности обращения с KCam можно действительно безглючно управлять кареткой с пульта и ловить ноль заготовки. Лебедев говорит софтверизация, я выбираю обратный путь.
KCam4 helper (563x345, 49Kb)
Рубрики:  здесь и сейчас

Метки:  

 Страницы: [1]