Jump to content
soulmare

Онлайн конструктор шкалы прибора

Recommended Posts

Может, кому-то пригодится простой онлайн конструктор шкалы прибора, позволяющий в браузере по заданным параметрам сгенерировать шкалу с делениями и цифровыми метками. Собственно, вот он: http://shopcms-moduli.com/scale_constructor/scale_constructor.php

Чтобы сохранить шкалу как рисунок, можно сделать скриншот, и потом в графическом редакторе дорисовать или подправить что нужно.

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

Лично у меня остались такие нерешенные в скрипте проблемы:

  • шкалы с нелинейным изменением
  • точная подгонка делений под снятый с показателей прибора шаблон

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

scale_constructor_example.png

scale_constructor.source.zip

Share this post


Link to post
Share on other sites
1 час назад, soulmare сказал:

можно сделать скриншот

Скрин не дает необходимой четкости. Это будет минусом программы.

Загляните еще сюда. Может, натолкнет на какую мысль для доработки Вашей программы.

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

LED-драйверы с KNX: как сэкономить до 50% электроэнергии?

Протокол KNX предлагает потребителям комплексную систему управления освещением и функциями безопасности – как центральную, так и распределенную. Компания Mean Well выпускает ряд изделий с поддержкой протокола KNX – LED-драйверы серии LCM-KN, а также блоки питания KNX-20E и KNX-40E.

Подробнее

Что на Земле мешает сделать функцию сохранения изображения? Кроме того, размеры указываются в пикселях, что совсем неудобно, когда потребуется эту шкалу напечатать и на прибор наклеить. Аналогично с линиями. Отталкиваться можно от стандартных разрешений принтеров - 600 - 720 dpi.

Если целью ставился не академический интерес поупражняться в php, можно вообще интерактивную рисовалку на JavaScript запилить.

Quote

шкалы с нелинейным изменением

Увеличивать угол не линейно, но логарифмически?

Quote

Скрин не дает необходимой четкости.

Если сохранялось в jpg, неудивительно.

Share this post


Link to post
Share on other sites

Снижена цена на DC/DC и AC/DC преобразователи Mornsun в Компэл!

Компэл снизил цены на всю продукцию Mornsun. В ассортименте – как широко известные и популярные позиции, так и новинки. Доступны AC/DC, неизолированные DC/DC-преобразователи или импульсные стабилизаторы (семейство K78/R3), изолированные DC/DC, и новейшее поколение R4.

Подробнее

Дело не в jpg, а в том, что картинка строится и сохраняется с экранным разрешением (72-96 dpi), что сводит на нет все возможности принтера. У того же Старичка картинка 600 dpi и никаких проблем с тонкими линиями нет.

зы. Гнаться за микронной точностью и 100500 делениями не имеет смысла, т.к. сами стрелочные приборы высой точностью не отличаются, как и линейностью.
Плюс к тому, бумага непредсказуемо меняет свои геометрические размеры после прохода через печку принтера и в процессе приклеивания.

Edited by Dr. West

"Я не знаю какой там коэффициент, я просто паять умею. "

Share this post


Link to post
Share on other sites

Новинки гибридных конденсаторов: преимущества технологии

Гибридные конденсаторы унаследовали от полимерных конденсаторов такие достоинства как устойчивость к импульсам тока, повышенную надежность и низкое собственное сопротивление, а также высокую емкость и низкий ток утечки, как у алюминиевых электролитов. Благодаря этому гибридные конденсаторы могут с успехом заменить традиционные алюминиевые конденсаторы.

Подробнее

Сейчас как раз дорабатываю программу в нормальный вид, сегодня или завтра выложу обновление. Некоторые замечания из сообщений выше учел еще раньше - размеры будут в миллиметрах, файл скачивается в нормальном для печати размере. Сейчас произошел небольшой затык с тем, чтобы изменить разрешение с 72 ppi на нормальное для принтера - именно циферку-метатег в результирующем файле, подсказывающую принтеру правильный масштаб печати.

Edited by soulmare

Share this post


Link to post
Share on other sites
В 9/30/2017 в 21:56, 1YHAIhwx сказал:

 

Цитата

шкалы с нелинейным изменением

Увеличивать угол не линейно, но логарифмически?

Даже не знаю, логарифмическая или какая характеристика у таких приборов - например, вот такая шкала амперметра, где до 2 ампер относительно узкий угол делений, между 2 и 6 - широкий, и дальше снова узкий. Если есть здесь одинаковая закономерность у такого типа приборов - логаримическая или другая - можно ее реализовать в коде программы. Но если для каждого прибора свои характеристики - тут разве что делать фото шаблон, и как-то пихать это изображение в программу как полупрозрачную подложку шкалы, чтобы подгонять углы делений.

 

ampermetry-i-voltmetry-e365-2.jpg

Edited by soulmare
уменьшение фото

Share this post


Link to post
Share on other sites

Эту нелинейность пытаются конструктивно компенсировать, поэтому вывести универсальную формулу расчета для таких шкал вряд ли получится.

Цитата

в приборах с электромагнитным измерительным механизмом угол поворота  подвижной части и стрелки пропорционален квадрату тока, проходящего по катушке. Поэтому такой прибор имеет неравномерную (квадратичную) шкалу. Для сглаживания этой неравномерности сердечнику придается особая лепестко-образная форма, вследствие чего форма магнитного поля и усилие, создаваемое катушкой, изменяются по мере втягивания сердечника.

 


"Я не знаю какой там коэффициент, я просто паять умею. "

Share this post


Link to post
Share on other sites

Конструктор шкалы прибора - первая полноценная версия

Только что выложил 2-ю (0.2) версию на сайт, доступна по адресу http://shopcms-moduli.com/scale_constructor/ . Исходный код во вложении. Хотел было вообще отказаться от PHP, чтобы можно было сохранить страницу у себя на компьютере и пользоваться программой без доступа к интернет. Но не вышло - PHP нужен для прописки в файле правильного разрешения при печати. Кстати, у меня дома не все программы берут к сведению значение разрешения из файла - иногда приходится вручную в диалоге печати указывать ширину изображения в миллиметрах. Поэтому при скачивании файла он именуется в виде "scale_ШИРИНАxВЫСОТА_РАЗРЕШЕНИЕ.png" - чтобы из названия файла было понятно, как его печатать.

Программа тестировалась в браузерах Chrome и Firefox. Буду признателен за сообщения об ошибках - кроме описания ошибки желательно присылать ссылку на страницу, где была ошибка, и название-версию браузера. Также приветствуются любая помощь, предложения и критика :)

Шаблоны для измерительных головок взял из рисовалки шкал автора Starichok , за что ему и разработавшим шаблоны большое спасибо.

scale_constructor.v0.2.zip

scr_scale_constructor_v0.2_resized.png

 

Известные проблемы:

Скрытый текст

- размещение изображения не по центру по вертикали при предварительном просмотре

- автомасштаб не всегда полностью умещает изображение в область просмотра

- разный размер свободных полей по вертикали и горизонтали, также иногда обрезаются элементы изображения (не нужные для печати, впрочем)

- особо большие файлы не скачиваются, выводя белый экран

 

Edited by soulmare
список багов

Share this post


Link to post
Share on other sites

А вот насчет квадратичной характеристики шкалы - не знал, это интересно. Универсальную-то формулу не придумаешь, но вполне можно сделать гибко настраиваемую - ведь подвинуть или искривить график, это лишь значит изменить в каком-то месте формулы коэффициент. На самом деле, шкала прибора из фотографии которую я прикреплял, очень похожа на график y=x2 , разве что может не симметричная.

sq_graph.png

Share this post


Link to post
Share on other sites

Уже лучше.

Quote

Эту нелинейность пытаются конструктивно компенсировать, поэтому вывести универсальную формулу расчета для таких шкал вряд ли получится.

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

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

Quote

Но не вышло - PHP нужен для прописки в файле правильного разрешения при печати

Можно не записывать разрешение в заголовок png, но отталкиваться от размера бумаги формата А4 и стандартных разрешений принтеров. Кроме того, для работы с png уже есть либа png.js, не знаю, может ли она в правку заголовков, правда. Но это привяжет приложение к формату png.

Багрепорты:

- подвал поехал, см. рисунок. basement.png.3bd376ca685483ddb8ddf302cacfea36.png (Firefox 54.0)

Фич-реквесты:

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

Share this post


Link to post
Share on other sites
14 часа назад, 1YHAIhwx сказал:

Можно не записывать разрешение в заголовок png, но отталкиваться от размера бумаги формата А4 и стандартных разрешений принтеров.

К сожалению, при выводе такого "сырого" изображения, принтер всегда решает его печатать в разрешении 72ppi, что есть очень плохо. И даже сам уменьшает это число, если картинка не влезает в формат бумаги. Если же генерировать изображение, исходя из 72ppi - оно будет печататься в правильном размере, но нечетко, кубиками - потому что нужно хотя бы 300ppi для нормального качества.

Технические проблемы (JavaScript, PHP, PNG):

Скрытый текст

Размеры результирующей картинки в пикселах вычисляются скриптом, исходя из требуемого при печати разрешения, например 300ppi. Принтер не находит в метатегах файла ничего о его физическом размере в миллиметрах, потому что встроенная JavaScript функция HTMLCanvasElement.toDataURL(), генерирующая бинарный код в формате PNG (единственный возможный формат), не прописывает такой информации в файле - ни физических размеров, ни разрешения - ничего. И печатает файл в разрешении 72ppi, если только позволяет размер бумаги.

Начитавшись инфы по теме, было решено отправлять файл на сервер, где PHP пропишет нужный заголовок (разрешение=300ppi), и отправит файл назад юзеру, что и было сделано. Но оказалось, что 4 строчками кода можно обойтись только при наличии на хостинге библиотеки ImageMagick, или же PHP версии >= 7.2.0, чего в моем случае не оказалось. Поэтому пришлось разбираться в том, как устроены заголовки PNG и решить проблему "в лоб" - сгенерировать двоичный код метатега pHYs (информация о физическом размере картинки), и вставить его в нужном месте файла. Обычно на хостингах действуют строгие ограничения на размер загружаемых файлов и используемую память, которые не всегда можно изменить в скрипте. Из-за этого получаем белый экран при попытке отправить на сервер очень большое изображение.

Указанная библиотека png.js, насколько я понял, не умеет менять метаданные изображения, и занимается лишь перекодированием файла в массив пикселей. С другой стороны, в ее коде есть разбор некоторых заголовков PNG. И это меня натолкнуло на идею: перевести процедуру вставки метатега с PHP на JavaScript "строка в строку" - и тогда абсолютно все будет делаться в браузере, и не понадобится наличия соединения с интернет для работы с программой. Предстоит проверить, реализуемо ли это на практике, ведь обрабатываемое изображение может иметь размер в несколько мегабайт.

 

Edited by soulmare

Share this post


Link to post
Share on other sites

Представляю новую версию данной  программы для создания шкал аналоговых приборов: https://soulmare.github.io/scale_master/

Возможности:

  • неограниченное количество шкал для одной стрелки
  • настройка делений и меток как группами, так и по отдельности
  • выделение секторов цветом
  • изменение положения, прозрачности, цвета и других параметров элементов изображения
  • наложение растровых изображений - для работы по сканированному шаблону, или декорации шкалы готовыми шильдиками
  • экспорт шкалы в SVG
  • загрузка родных SVG файлов для редактирования
  • экспорт в PNG для печати
  • библиотека примеров

Требования: достаточно новая версия браузера Chrome или Firefox. Пока что не тестировались Internet Explorer и Opera.

Краткая инструкция:

Скрытый текст

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

Интерфейс программы напоминает векторные графические редакторы. Слева находится список объектов с кнопками для управления ими. Порядок объектов в списке влияет на их перекрытие при наложении друг на друга. При выборе объекта вокруг него появляется рамка, а справа отображается список свойств. Если рабочая область в фокусе, стрелки клавиатуры двигают объект. Изменение масштаба - прокруткой колесика при зажатой клавише Ctrl.

Готовую шкалу можно скачать в удобном формате. SVG подходит, если изображение потом нужно загрузить в векторный графический редактор для доработки. Только этот формат является родным для программы, и такой файл можно будет в нее снова загрузить для редактирвоания. PNG подходит для печати или обработки растровыми редакторами. Чтобы распечатать шкалу в соответствии с выбранным размером, нужно чтобы совпадало разрешение экспорта с разрешением при печати. Это может быть, например, 300ppi (dpi). Если изображение занимает весь лист, возможно понадобится убрать поля для правильного масштаба.

 

 

 

scale_master_0.3.png

Edited by soulmare

Share this post


Link to post
Share on other sites

Вышла новая 0.4 версия конструктора шкал. Самое главное, что добавилось - это редактирование шкалы мышкой, перетаскиванием делений и других объектов.

Подробнее смотрите в видео примерах:

1. Самая простая шкала

2. Простая шкала по шаблону (скану или фото)

3. Шкала с неравномерно распределенными делениями, на примере амперметра

Полный список изменений в новой версии:

Скрытый текст

        ГЛАВНЫЕ ИЗМЕНЕНИЯ
    - Редактирование и перемещение элементов перетягиванием мышкой.
    - Настройка углов делений мышкой или изменением цифрового параметра, с автоматическим распределением соседних незакрепленных делений.
        ОСТАЛЬНЫЕ ИЗМЕНЕНИЯ
    - Выделение основных делений 2 и 3 уровня - длиной, толщиной и цветом.
    - Параметр "Экспонента" для настройки "квадратического" распределений делений.
    - Новые примеры со скриншотами и объяснениями принципов работы программы.
    - Кроссбраузерность: Chrome/Firefox/Opera
    - Отображение вспомогательных осей при выборе объектов.
    - Параметр "Постоянный угол" с тремя режимами (позволяет делать горизонтальный текст меток, вертикальные деления).
    - Возможность создавать угловые шкалы (например, повернутые на 90 градусов).
    - Вставка специальных символов в текстовые метки (например: Ω, ∞).

 

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

  • Сообщения


  • Электромагнит напряжением 5-24В

  • Similar Content

    • By LiSiY5
      Работаю в Mplab X 5.40, написал основной код программы для Pic16 на Си и есть небольшой код на ассемблере. Так вот, подскажите как правильно сделать переход на подпрограмму с Си на ассемблер и назад. Может на каком либо примере где-то есть. Заранее всем спасибо.
    • By tony161
      Здравствуйте. Нужна помощь в реализации идеи. У меня очень скудные знания в электронике и программировании, но я готов разбираться, если вы дадите направление куда копать.
      Есть реле, необходимо управлять его работой с компьютера из самодельной программы. В программе цикл периодического включения и отключения реле. Схему как это примерно должно выглядеть креплю.
      Как я себе это представляю: Пишу программу на си допустим из которой могу подключаться к пинам порта usb и выставлять/убирать на них напряжение. К пинам порта подключено реле 9В срабатывающее от напряжения на пинах (возможно придется два usb последовательно соединить и одновременно их включать чтоб 10В получить, звучит странно). Таким образом управляем реле с пк.
      Интересует реализуема ли подобная идея или как лучше что то подобное реализовать.
      В микроконтроллерах я 0, желательно бы без них обойтись. Из портов у меня только USB(.
      Что мне делать?
      Видел USB релейные модули (типа https://mcustore.ru/store/ispolnitelnye-moduli/relejnyj-modul-2-kanala-upravlenie-po-usb/?gclid=CjwKCAjw9vn4BRBaEiwAh0muDCAq2PAxtJGeb760LL3vmR7ExK0yiyH5DKwz0WC-60ea7Lj8WqwuJhoCTw4QAvD_BwE ) но они наверное не подходят, мне нужен контроль в моей программе, не просто включение отключение по нажатию курсором, а цикл включения отключения, а потом может и что еще сложнее. А они на МК, и как написать программу для взаимодействия с ними я не знаю. Хотя я понимаю что оптимальным вариантом наверное было бы взять такой модуль, заменить прошивку на свою и написать программу ПК по взаимодействию с МК.
       
       
       
      схема.rar
    • By МаксимD
      Скажите пожалуйста, то, что на скриншоте, это с какой программы использована схема?

    • By NiRo
      Подскажите как включить генератор синусойды в spectralab? 
    • By ShakaPiranha
      hРебят , нужна помощь  в программе .Нужно что-то изменить в коде , чтобы счетчик начал считать с 3 до 15 , сброс в 3  и опять до 15 .Требование :обязательно манипуляции с датой .Сам плохо разбираюсь в ПЛИСЕ , поэтому будьте добры ткнуть меня куда и что нужно прописать для работы .

×
×
  • Create New...