Category Archives: Python

Живее всех живых

Это не про Владимира Ильича (в смысле — про Ленина). В далёкие годы был такой мем про вождя мирового пролетариата.

Живее всех живых — это про последовательный порт. Разумеется, это сказано в контексте работы с микроконтроллерами.

Не смотря на присутствие в обиходе множества самых разных интерфейсов для передачи данных на все случаи жизни, древний как… не важно!… последовательный порт ещё ого-го какой востребованный!

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

Вот, так выглядит результат работы:

Вроде всё хорошо, но температура измеряется с десятыми-сотыми долями градуса и, следовательно, должна также и отображаться. То есть целое число не совсем подходит. Переходить на «плавучку» (числа с плавающей точкой) очень не хотелось. Но решение даже искать не пришлось.

Читать далее

Визуализатор. Подновление 3

Добавил HEX-отображение содержимого памяти по указателю мышинного курсора. Внешне подновление выглядит так:

Сейчас попробую дописать код чтобы подкрашивать клеточки. Если сделаю, то скриншот прилеплю сюда же.

Читать далее

Визуализатор. Подновление 2

Добавлено несколько способов отображения

1. Цветное изображение байтов (собственно, оно и было):

Читать далее

Визуализатор. Подновление 1

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

Из back-end: доработан алгоритм опроса микроконтроллера.

Читать далее

Визуализатор

Эта программка предназначена для (моей текущей) конкретной цели — графического отображения содержимого памяти микроконтроллера.

Проблема

Микроконтроллер, с которым я сейчас кувыркаюсь, STM32F429 — достаточно «жирный». На него у меня накатана FreeRTOS. На ней трудится LwIP. Ещё выше — UPC UA. И на самом верху — бизнес-логика — то, ради чего этот программный Франкенштей затевался.

Программный стек (FreeRTOS + LwIP + OPC UA) пока не работает. Какие-то непонятные срывы, падения в  HardFault и прочие радости разработчика. Понятно, что хотелось бы видеть динамическую картину распределения памяти как-то всю сразу.

Отсюда и появилась идея визуализации.

Читать далее

OPC UA: туда и обратно

Благодаря предыдущей статье мы научились получать от сервера данные. Хорошо. Теперь давайте попробуем передавать данные на сервер.

Поскольку сервер у нас (условно) является вольтметром, то пусть он теперь будет заниматься сразу двумя напряжениями. Одно напряжение V1 сервер будет «измерять» внутри себя, а другое V2 — получать от клиента.

Читать далее

А не пощупать ли нам OPC UA на практике?

— Хм? Отчего ж достопочтенным джентльменам нельзя пощупать. Давайте, господа гуссары, полапаем как следует!

Для этого дела воспользуемся Питоном, ибо он прост в применении. Будем юзать Python-3.

Для начала нужно установить на комп кое-какие пакеты.

Читать далее

Проверь свой пароль

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

Примеры самых простых паролей: 12345, 777, qwerty, password, admin и так далее. Несколько паролей посложнее, но они тоже «нестойкие»: Vasja1988, Russia, PaRoL, ну и так далее. Они тоже не стойкие против взлома.

Читать далее

Когда не хватает ног

Как часто у вас возникала проблема исчерпания ног у микроконтроллера?

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

— … сейчас мне надо раскидать 15 сигнальных цепей по ножкам (микроконтроллера). Хорошо. Заложим LQFP32. Ног вполне хватит и даже останется небольшой запас. Да, но ведь я, прожжёный (паяльником в нескольких местах) специалист, и я хорошо знаю, что потом, по мере развития проекта, ног всё равно не хватит. Поэтому заложу-ка я корпус побольше — LQFP48.

И, вот, проходит несколько месяцев, и тот же разработчик в задумчивости чешет над ухом пинцетом (или отвёрткой) и мысленно страдает:

— Эх! Надо было всё-таки заложить «кузов» на 64 ноги…

Читать далее

Делаем с удовольствием

Несколько лет назад в одной толстой книжке по Питону я прочитал весьма забавное утверждение — по какой причине следует использовать Python. Одной из причин было названо получение удовольствия. Ото ж!

Вот за что я всячески люблю и уважаю Линукс, так за то, что он доставляет массу удовольствия от работы с ним.

Вот смотрите, сейчас передо мной стоит задача — создать программно-аппаратную хрень, которая позволит дистанционно слушать эфир.

Ну, что значит «слушать эфир»? Ну, то есть слушать, что есть в эфире на частотах в диапазоне 2.4 ГГц. Для прослушивания этих частот был создан сниффер (такая коробочка с электроникой), который подключается к компу по USB. Сниффер работает на заданном канале и передает в комп «сырые» пакеты того, что он принял. Дальнейшей обработкой пакетов занимается комп.

А что значит «дистанционно»? Ну, это означает, что оператор может находиться не за тем компом, к которому подключен сниффер (где-нибудь в Воронеже), а где-нибудь далеко. Ну, скажем, в Лондоне. А ещё лучше наоборот! — Сидеть в Саратове и слушать что летает в эфире поблизости от штаб-квартиры М6. Не, ну это же прелестно, правда?

Ну, не важно! Шутки в сторону!

Читать далее