Случайны выбор дневника Раскрыть/свернуть полный список возможностей


Найдено 72 сообщений
Cообщения с меткой

vb - Самое интересное в блогах

Следующие 30  »
SoXiE

Нестандартные скорости UART MSCOMM32

Воскресенье, 18 Июня 2017 г. 17:06 (ссылка)

Удалось связаться с AVR по UART через MSCOMM32.OCX на скорости 250000 бод. Частота кварца избыточная - 16 МГц. Действительно и для Arduino. Как? Подсказка на VBForums, используем Win32 API SetCommState и GetCommState из Kernel32. Немного костылей в выборе менюшки скоростей, т.е. для галочки открываем порт на допустимой стандартной скорости 115200, а затем уже задаём любую, вплоть до 2МБит.


AVR software uart 250000 baud (452x115, 5Kb)
MSComm 250000baud (206x172, 13Kb)

Сразу оговорюсь, что UART со стороны AVR программный, поэтому скорость такая низкая. Схемотехнически у меня программный RX/TX висит на свободных ногах ATMega328P, потому как аппаратный занят шиной данных с NAND флешкой.



Итак, управляющая программа на VB6 использует компонент MSComm и разрешает из коробки подключаться только на следующих скоростях (бит/с, бод): 110, 300, 600, 1200, 2400, 4800, 9600, 14400, 19200, 28800, 38400, 57600, 115200, 128000, 256000. Успехом увенчалась попытка подключения на 128000, а 256000 уже не приводила к желанному результату увидеть ответ устройства по UART. Возможно, дело в том, что если для аппаратного приёмопередатчика UART можно запросто подобрать скорость UART в зависимоти от частоты задающего генератора, то для программного, который зависит от кучи прерываний и лагов обработчика, высокие частоты упираются уже не в последнюю милю кабеля и разводку с экранировкой, а в специфику работы программного UART. Боюсь предположить, но аппаратный UART на AVR в теории может давать бодрейт до 2 МБит/с, т.е. 2000000. Разумеется, со стороны компьютера я ловлю его не через родной COM-порт материнки, а через преобразователь CH340G, который стоит в каждой ардуине, и его предел аппаратных возможностей с подобающей обвязкой по даташиту заканчивается как раз таки на 2 Mbps. Это ограничение уже упирается в физическую реализацию последней мили - длину проводов USB, разводку на плате, конденсаторы и качество кабеля.



Что я получил на скоростях 250 КБит/с? Чтение блока с флешки (135168 байт) за 6,16 секунд. Запись, правда, до сих пор ограничивается скоростью в 135168 байт за 35,9 сек, что обусловлено моей осторожностью и программными задержками при записи в NAND flash. Однако мой любимый дисплейчик ❤️️ LCD 160x128 16 битного цвета заполняется из флешки полностью картинкой за 215 мс, то есть можно глядеть кино с FPS ~5 кадров/сек., что я считаю пределом для 16 МГц, софтварном SPI через дрыганье ногами и попутном чтении с флешки, то смею предположить, что видеобуфер (ОЗУ дисплея) составляет 40 960 байт, и по UART напрямую при скорости 250 КБит заполнится за 2 секунды. Всё равно медленно, чтение флешки размером в 1 ГБ (NAND flash K9K8G08U0M-PIB0) займёт 14 часов.


Однако команда CLS, оформленная AVR-ASM просто дёрганьем CLK дисплея при постоянной единице на шине DATA очищает 160х128 за 0,105 сек, то есть за 105 мс., что как бы намекает на непредельность скорости. То есть используя полупрограммный-полуаппаратный SPI из-за того, что 9-й бит приходится дёргать вручную, остальные 8 будет слать аппаратный SPI, при быстром ОЗУ контроллера я бы смог добиться скорости вывода одного экрана (не пустого) за 105 мс при скорости UART в 1,5...2 МБит. Без промежуточной флешки, а картинку бы формировал на стороне компьютера. Тогда и кино в 10 FPS можно было бы крутить.


AVR Parallel output for Nokia 1616 LCD (700x451, 108Kb)

А самым забавным решением было бы применение внешнего аппаратного SPI, который из параллельной шины делает последовательную, и клок дёргать вручную. Однако это то же самое, что и полупрограммный SPI, потому как совсем блокируется возможность передавать данные в обратную сторону от дисплея (читать ОЗУ дисплея, SPFD54124B это позволяет). Но это уже больная фантазия.

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
SoXiE

Как мне нравится

Пятница, 22 Апреля 2017 г. 03:51 (ссылка)

всё же по аккуратности монтаж серьёзной электроники прошлого. Редкие и крайне дорогие девайсы из любовно выточенного алюминия, МГТФ, наша элементная база - на вид так совсем конфетка. Нарвался на постик http://dimon-w.livejournal.com/190344.html Устрою-ка я мирное соревнование 2х политических систем. Гы-гы. про ГДРовский и СССРовский оптические энкодеры (датчики углового перемещения), ну красота же.



А вот вытащенный то ли из корейского ксерокса, то ли из плоттера, канувший в лету оптический энкодер на 1000 шагов. Вернее, прорезей. На диске порядка 30...40 мм в диаметре расположены 1000 тончайших прорезей и два диода с приёмниками. Всё это счастье одето в чёрный светонепроницаемый кожух и сидело на валу обычного двигателя постоянного тока.


Энкодер на 1000 шагов (525x700, 46Kb)

Но, кроме как электроэрозионной обработкой я не представляю, как сделать подобные микронные прорези. Лазер дорого, ибо каждый врез и прорезь (1000 шт.) стоит огого, несмотря на дешевизну резки контуров как таковой (для сравнения: выходная цена небольшой гнутой детали, контур которой был отфрезерован и вырезан на лазере имела отношение 650 к 252 р). Лазер сравним с ножницами, где каждый врез есть сквозной пробой материала, канцелярскими ножницами тоже бумага травмируется, если резать не с краю, а дальше по контуру уже легче идёт, подплавляя и закаляя край.



Зачем мне энкодеры? Я всё же хочу прикрутить их к станку на валы шаговых двигателей для контроля пропуска шагов. Поскольку KCam4 хоть и имеет интерфейс для входа данных о текущем местоположении (!), данный функционал нереализуем на одном LPT-порту, и весь функционал вынесен на плату MaxStepper. Плата, разумеется, продаётся Kellyware за североамериканскую валюту с доставкой из-за океана, и поэтому является товаром почти подсанкционным. Люди делают клоны на ATMega16, побайтово разбирая протокол общения, и всё ради буфера в 40 команд-фреймов, аппаратную круговую интерполяцию и отсутствие тормозов LPT-порта. Но реализации подобных клонов MaxStepper, увы, заслуживают глубокой переработки, поскольку не содержат самого нужного - интерфейса пульта и входов энкодеров, да и делает всяк кулик для своего ЧПУ, посему это не наш путь. Mach3 с доступом ко второму LPT решает проблему нехватки пинов, но это уж тем более не наш путь.


Пошукав по интернетам тему контроля фактических шагов ШД и запланированных, пришёл к неутешительному выводу, что кустари либо оставляют ШД «as is» без контроля шагов, либо ставят сервоприводы (что тоже не вариант) либо совсем уж ушлые схемотехники меряют ток на обмотках чтобы отловить холостые шаги. Некоторые предлагают использовать лазер и камеру от мышек, чтобы та сама анализировала напечатанную на принтере чёрно-белую картинку и вычисляла перемещения «мыши». Самое экстремальное решение, предложенное форумчанами заключалось в том, чтобы повесить на торец вала стрелку, а параллельно этому валу поставить ещё один шаговый двигатель попроще, тоже со стрелкой, который бы повторял шаги синхронно (электрически распараллелить) с основным. Итогом подсчёта погрешности и пропуска шагов должно составить отклонение стрелок друг от друга. Однако видимый результат увидим только в устойчивом положении остановленных двигателей, когда уже заготовка запорота.


Один из вариантов контроля шагов мне показался привлекательнее всего - оптический энкодер даёт на выходе 4 состояния (00-01-11-10) , которые с лёгкой руки готового схемотехнического решения на базе элементов ЛА7 превращаются в показания вида STEP-DIR. Которые можно легко сравнить с показаниями на входе реального STEP-DIR контроллера ШД. Причём сравнить можно и без умного контроллера, лишь счётчиками импульсов типа ИЕ11. А затем результаты подсчёта шагов сравнить чем-то вроде элементов AND или XOR, и при несовпадении хотя бы одного из битов жать кнопку E-Stop (опускать соответствующий контакт в землю). Ведь пропуск 1 шага хоть и нечувствителен, но при пропуске 200 шагов мы имеем 1 потерянный оборот ШД.


Первым минусом данной схемы является неясность с дребезгом схемы на ЛА7, временные диаграммы появления импульсов, а также предельная частота отлова импульсов счётчиком, ибо наказанием будет остановка двигателя и исполнения G-кода. Однако, непроверенная схема.


Вторым моментом является физическая реализация - на аликспрессе доступны энкодеры на 200 прорезей за 150 рублей, с диодами и приёмниками, но чтобы к этому прийти, надо погасить внутреннего еврея✡.


​ШД станка без редуктора имеет разрешение 1,8°/шаг, то есть полный оборот вала достигается 200 шагами. Энкодер на 200 прорезей кажется избыточным, поскольку выходных линий фотоприемника 2 (4 состояния), т.е. 200 прорезей в теории дают 800 состояний, разрешение растет в 4 раза. А ведь входной поток импульсов от датчиков энкодера нужно считать и соотносить с шагами аппаратно. Посему для загрубления избыточной точности можно воспользоваться для первого раза дисками энкодеров из шариковой мышки, которая как раз имеет диски с 50 прорезями.


Другое дело, что всё это полезное изобретение не будет иметь с KCam связи и будет служить либо кнопке аварийного останова, либо просто людине за станком, уж графическое представление пропущенных шагов с кнопочкой обнуления я приделаю на дисплее от Nokia 1616.




Незаметно для себя я также реализовал функционал поиска абсолютного нуля в софтине на VB6 за счёт перемещений по осям и отлавливания нажатий концевых датчиков по состоянию &H379 LPT-порта, ведь даже 3D-принтер это делает сам перед печатью каждой модели.

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
SoXiE

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

Четверг, 14 Апреля 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)КомментироватьВ цитатник или сообщество
SoXiE

Опа-на, кейлоггер

Пятница, 27 Мая 2016 г. 22:22 (ссылка)

А оказывается, лирушечка может выступать как файлохранилище. То есть не облако, но по одному файлику можно цеплять
Итак, назло злопыхателям, я таки зарегал снова свой домен. Скептики посрамлены, индексация идёт.
Сегодня я выкладываю на потеху публики свой волшебный кейлоггер, утилиту для протоколирования действий пользователя в Windows.
Не только же microsoft имеет права знать грязное бельё.

По-простому, утилита «Журналирование», «Протоколирование», «Logging», «Keylogger», «Кейлоггер» умеет записывать всё, что пользователь набирает с клавиатуры, а также какие устройства подключает по USB, в каком окне кликает мышкой, какое окно становится активным, то есть определяет не вслепую куда набивается текст. Умеет различать раскладку русскую и английскую. Умеет делать скриншоты при смене окна и нажатии ENTER.
keylogger (416x475, 44Kb)
Запускается даже без «LOG.INI» с настройками по умолчанию. Можно запускать из консоли с ключом «KEYLOGGER.EXE /?», краткая подсказка. Имеет скрытый и полускрытый режимы - окно настройки видно при запуске/не видно, значок в лотке systray видно/не видно. В процессах, естественно, всё светится ибо не троян и не ботнет. Написано всё на кондовом VB6. Показывает окошко при нажатии комбинации   Ctrl + Alt + Shift + NumLk , выключается по   Ctrl + Alt + Shift + ScrLk . Всё просто.

Итак, поскольку я не поклонник гитхабов и иных сорсфоржей, опишу здесь основные фишки:

Кейлоггер не троян. Кейлоггер - утилита локального действия, пишет журнал в указанный файл на диске и никуда его не отправляет. В ботнетах не участвует, обновления не загружает. Утилита корпоративного долговременного действия. Уехал ты в отпуск, а коллеги за твоим компом смотрят порно, лазают по твоим интимным файлам - чтобы постфактум после отпуска было как уличить или разоблачить паразитов, можно посмотреть логи.
Возможность снятия скриншотов добавлена ради того, что не влезло в текстовое содержимое окна, а скриншот по клавише ENTER - ввиду современной ориентированности персоналок на сидение в соцсетях и отправку сообщений, так мы по чуть-чуть скальпируем входящую переписку на экране, ибо с клавиатуры мы можем снять только явки-пароли и исходящую переписку со всеми вашими любимыми бэкспейсами и недописанными мыслями.
Очень удобная штука, использую сам на себе с 2011 года. Записывает таким образом всё-всё-всё, и при небольшом желании можно раскопать свои же входные данные на какой-нибудь малозначительный сайт, который даже в сохранённых паролях не остался.

Здесь приведён примерный LOG.INI:


[Logging]
LogFile=S:\X-Files\Tracking\current.log
; LogFile указание пути и имени файла. По умолчанию в папку %TEMP%
Language=RU
; Язык программы. Поддерживает RU/EN для English version.
ShowWindow=0
; Показывать ли окно настройки при запуске.
ShowTrayIcon=1
; Показывать ли значок в системном лотке
WindowX=100
WindowY=100
; Ну тут понятно, положение окна

[Debug]
Timer=1
; Таймер сканирования, 1 мс это норма.
HookLayout=1
; Отлов переключения раскладки.
HookShiftCapitals=1
; Отлов клавиш Shift/CapsLock
HookMouse=1
; Отлов нажатий кнопок мыши
HookUSB=1
; Отлов подключения USB-устройств по GUID.
SymbolsOnly=0
; Самый простой вид ведения лога - записывать только символы и цифры без регистрации и смс
Buffer=0
; Включение программного буфера записи (в кБ * 1024) для уменьшения износа твердотельных накопителей. 0 = отключён. Будьте осторожны.
HookWindows=3
; Способ отлова окон: 0 - не отлавливать, 1 - только заголовки активных окон, 2 - заголовки окон и текст внутри окон, 3 - отлавливать все окна, в т.ч. пустые. Здесь под окнами понимается любой элемент управления.

[Screenshots]
Quality=7
; Качество JPEG-снимка, в %
Enabled=0
; Разрешение 1 или запрет 0 на снятие снимков экрана при переключении окна
ShotsByEnter=1
; Снимки каждый раз при нажатии Enter
FolderPath=B:\Shots
; Путь для сохранения снимков


Известные баги:
- не учитывает в скомпилированной версии качество сохраняемых JPEG-скриншотов, всегда снимает в 100% без потерь;
- при запуске вместе с Windows и прописанной записи на сетевой диск может вылететь с ошибкой;
- при нештатном завершении и включённой программной буферизации может не записать последний кусок журнала.

Версия 1.5.0.0, пароль на Zip-архив: домен, без www в lowercase. Если вдруг тема заинтересовала или есть предложения, могу даже сырцом поделиться. Для неверующих есть утилита VB Decompiler, которая подскажет, что это риальне не ботнет и не троян.

Вложение: 4993364_logger_keylogger_win32_x86_vb6.zip

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
Аноним

Среда, 01 Декабря 1970 г. 03:00 (ссылка)

Комментарии ()КомментироватьВ цитатник или сообщество
Аноним

Среда, 01 Декабря 1970 г. 03:00 (ссылка)

Комментарии ()КомментироватьВ цитатник или сообщество

Следующие 30  »

<vb - Самое интересное в блогах

Страницы: [1] 2 3 ..
.. 10

LiveInternet.Ru Ссылки: на главную|почта|знакомства|одноклассники|фото|открытки|тесты|чат
О проекте: помощь|контакты|разместить рекламу|версия для pda