• Объявления

    • admin

      Внимание! Постить только по теме "электроника"   02.09.2016

      Внимание! В данном разделе разрешено создавать только темы связанные с электроникой. Для проблем с ПО не связанных с электроникой существует специальный раздел.
      Нарушители будут забанены на 5 суток!
soulmare

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

12 сообщений в этой теме

soulmare    1

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

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

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

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

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

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

scale_constructor_example.png

scale_constructor.source.zip

  • Одобряю 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Быстрый заказ печатных плат

Полный цикл производства PCB по низким ценам!

  • x
    мм
Заказать Получить купон на $5.00
mvkarp    3 535
1 час назад, soulmare сказал:

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
soulmare    1

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
1YHAIhwx    3

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

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

Quote

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

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

Quote

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Dr. West    1 611

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

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

Изменено пользователем Dr. West
  • Одобряю 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
soulmare    1

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

Изменено пользователем soulmare

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
soulmare    1
В 9/30/2017 в 21:56, 1YHAIhwx сказал:

 

Цитата

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

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

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

 

ampermetry-i-voltmetry-e365-2.jpg

Изменено пользователем soulmare
уменьшение фото

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Dr. West    1 611

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

Цитата

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

 

  • Одобряю 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
soulmare    1

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

Только что выложил 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

 

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

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

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

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

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

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

 

Изменено пользователем soulmare
список багов

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
soulmare    1

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

sq_graph.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
1YHAIhwx    3

Уже лучше.

Quote

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

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

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

Quote

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

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

Багрепорты:

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
soulmare    1
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 "строка в строку" - и тогда абсолютно все будет делаться в браузере, и не понадобится наличия соединения с интернет для работы с программой. Предстоит проверить, реализуемо ли это на практике, ведь обрабатываемое изображение может иметь размер в несколько мегабайт.

 

Изменено пользователем soulmare

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас


  • Похожие публикации

    • Автор: Cтепаныч
      Часы с конструктора СТАРТ 7176 работали долгие годы. Все было классно, пока кошка  не свалила их  на пол. Теперь, визуально все цело,но при включении горит 00 00 ( четыре нуля). Нет никакой реакции при нажатии на кнопки. Подскажите где искать и неисправность.  
      Схема часов прилагается.

    • Автор: ua9ypb
      Радиоконструктор СССР --электронные кубики
    • Гость Kseniya
      Автор: Гость Kseniya
      Здравствуйте, на производственной практике дали задание сформировать импульс напряжения с помощью программируемого блока питания instek psp-603, управляемого компьютером через интерфейс RS-232. Для начала скачали на сайте производителя программу управления, но при ее запуске возникает ошибка связи, хотя блок питания видит, что он подключен к компьютеру. Драйвера для com порта установлены. Подскажите, пожалуйста, в чем может быть дело?
    • Автор: alexey66

       

      Цена конструктора 4000 р.
      Почта для связи streltsov-aa@mail.ru
    • Автор: ОлегШ
      Добрый день. Занимаюсь на работе управлением некоторым количеством оборудования с изменяющимся циклом работы. Например, десять термокамер, каждую надо в определённое время вывести на определённый режим, затем в определённое время перевести на другой. И так в течение смены. Все записи ведём только в журнале, путаемся, в глазах уже рябит от цифр. Хочу сделать на компе какой-нибудь графический органайзер для визуальности процесса. Помогите, пожалуйста, может быть есть что-либо готовое?
  • Сообщения

    • Это верное замечание.  Прошу прощения я не верно нарисовал схему.    Подключение делалось по схеме 
        Что можно видеть на фотографии из параграфа "Практика" .
        Проблема можно поставить даже не в том что регуляция "отсутствует" проблема в ее недостаточной степени. Т.е. Если мы начинаем закорачивать резисторы R1 R2 ток начинает радостно расти, практически не замечая заданной LM кой отсечки.
        Еще раз. (Возможно я что то не так понимаю). Чтобы при росте напряжения в цепи, ток в ней не рос, нужно что бы это "дополнительное" напряжение где то пропадало. Как я понимаю, оно должно пропадать на схеме регулятора напряжения.    Т.е. Допустим. На V_1 мы видим: 320в,  на А_1: 0.95А (максимально допустимый стабилизатором ток). На V3 (падение напряжения на стабилизаторе) видим: 3В. Далее: мы закорачиваем резистор R1 (10ом) тем самым напряжение в цепи увеличивается на 9.5в и что соответственно должно вызвать рост тока. Соответственно в этот момент стабилизатор должен взять "дополнительное напряжение"  на себя. И на V3 мы должны увидеть как 3в -> 3в + 9.5в = 12.5в Если закоротить R1 и R2 мы должны увидеть  3в -> 3в + 9.5в  + 9.5в = 22в.  И так далее пока величина падения напряжения не превысит 37в и LM ка не сгорит. Какие падения напряжения на схеме стабилизатора я фактически наблюдаю: 1) Закоротили R1: 3в -> ~10в (A_1 скачек ~0.95A -> ~0.98A)  2) Закоротили R1 и R2: 3в -> ~10в (A_1 скачек ~0.95A -> ~1.05A)   Если 1) Еще можно назвать "Удовлетворительным" то 2) Вызывает у меня вопрос, что я не так делаю?          
    • Всем привет. Помогите определить это чудо )))
    • "Не ищи дурее себя" (с) Это так мой тесть любил говорить... Товарищи понимают Вами изрекаемое гораздо лучше, чем Вы можете себе представить. Могу сказать, что время на поиск проблем связанных с "нюансами реализации" компиляторов становится пренебрежимо малым, если  УГЛУБЛЯТЬСЯ в эти самые нюансы. ЗЫ. Эмбеддед системы отличаются тем, что по самый небалуй напичканы принципиальными противоречиями со стандартным Си. Именно поэтому в реальных проектах перенести код на иную платформу без его  переписывания заново практически невозможно.
    • Ну тогда можно попробовать иначе, наоборот, фиксировать отсутствие каких либо сигналов.
    • Тема таки снова стала актуальной.   Сварочник был вынут из закромов для починки. Может кто все ж подскажет что-то по теме? Заранее весьма благодарен!  Сделал насколько фот в полуразобранном виде. Ничего особо сильно не видно, все как-то запутанно...  Причем из корпуса без выпаивания не все и вынешь! На пример на втором фото видно, что присоединенные к мощным конденсаторам провода выходят из под них и продеты через перемычку в корпусе. Начал их вытаскивать, а провода не дают. Вероятно отпаивать/отсоединять где-то под ними надо, чтобы вытащить... 
    • @Ahneus , переделка ЗУ - не решает проблему.
      А если зарядить надо будет в гостях?
      С собой ЗУ таскать?