Tag Archives: Linux

Python на службе человека

Сижу, пишу проект. В проекте используется RS485 и протокол Modbus RTU.

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

У меня в ТЗ прописано, что система должна работать с частотами 2400, 4800, 9600, 19200 и 38400 Бод. Требуется вычислить временной промежуток для всех этих скоростей. Всё просто.

Случись такая задача лет 10-20 назад, я бы взял бумагу, карандаш и калькулятор и быстренько бы нашёл эти времена. Но сейчас у меня под руками совершенно иные инструменты.

Читать далее

Реклама

Debian-9

Ну вот и дождались, братья и сёстры!

Читать далее

Gnome возвращается

— Убунта, Убунта! Повернись к лесу за… 😦 повернись к лесу жо… 😦 Ну, в общем, Убунту, повернись к народу лицом!

Ну, на конец-то, Canonical (Шаттл ей в рот!) услышала просьбы трудящихся и решила-таки в грядущей версии 17.10 сделать Gnome по умолчанию:

http://www.omgubuntu.co.uk/2017/06/ubuntu-17-10-daily-builds-gnome

Одного не понимаю, нахрена было семь лет бродить по каким-то болотам?

— Семь лет, Карл! Семь!!!

Людей растеряли, репутацию подмочили…

Зарядник Ni-Cd и Ni-MH аккумуляторов. 1

В каком направлении двигаться?

За неделю я привел программы и схему зарядника в более-менее потребное состояние. Про изменения и найденные ошибки расписывать не буду — эта грязная кухня никому не интересна. А вот то, что начало получаться — уэлкам!

Читать далее

Python для иммигрантов

Когда я иммигрировал с Виндовса на Линукс, одной из первых моих проблем была проблема перекодировки моих исходников программ.

Это были не только какие-то программные наработки комповых программ на С/С++, которые не хотелось бы терять. По большей части это были исходники программ для микроконтроллеров, с комментариями и пояснениями.

Читать далее

PyQt. Автоматическая генерация кода

Вообще в программировании принято большие и сложные программы разбивать на несколько функциональных уровней.

Так например, различают уровень представления (иногда его называют фронт-энд), уровень бизнес-логики (бэк-энд), уровень данных. (Слово «бизнес» следует понимать не в узком смысле только экономики, а более широко. «Бизнес» — это производство чего-то, это какое-то дело. То есть, это именно «то», ради чего затеялась движуха.)

Разбивка программы на уровни может быть самая разнообразная. Но что это дает? Прежде всего это дает гибкость в реализации. Так же следует отметить, что разные уровни могут писаться параллельно разными разработчиками, что ускорит выход программы в свет. Ну и не надо забывать про принцип «разделяй и властвуй»!

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

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

Вы улавливаете суть разделения программы на уровни?

Читать далее

PyQt. Инсталляция

В статье речь пойдет о Qt версии 4.х, Python-2.7 и Debian-8.2. Будет рассказано о том, как установить и начать работать. О том, как написать простое стартовое приложение и убедиться, что у вас получилось это сделать и теперь можно «набрать высоту».

Статья рассчитана на тех, кто более-менее может писать yt,jkmibt программы на Python, более-менее управляется в Линуксе и хотел бы начать писать графические проги.

Я в курсе, что в мире уже давно люди работают с Qt версией 5.х. Проблема не в версии. Проблема в том, что первый шаг в неизвестность очень сложный — не понятно куда шагать, что делать. спросить не у кого…

Я попробую помочь вам на сколько смогу. Я выведу вас из тёмного ангара неведения, подведу к взлётной полосе. Затем мы вместе разбежимся и оторвёмся от земли. А куда Вам лететь и на какой высоте — это уже ваше дело. Мая задача — научить вас взлетать.

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

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

Читать далее

Как приручить свой Bluetooth. Часть 3

В этой части начнем писать код.

Вопрос в том, на чём писать — какой язык программирования выбрать? Если лет 10-15 назад я мог однозначно ткнуть пальцем с C/C++ и не ошибиться, то сегодня я уже впадаю в ступор.

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

С другой стороны, язык Python обладает минимализмом кода и весьма эффективно способствует созданию и отладке программ. Кроме того, Питоновская программа обладает еще одним существенным преимуществом, которое нам сейчас очень нужно.

Питоновские программы, как правило, распространяются в виде исходных кодов. Я не делаю секрета из программы, которую мы будем писать. Наоборот! Я говорю

— Ребята! Код открыт и прокомментирован. Изучайте работу программы и развивайте её в своем направлении. Дописывайте к ней тот функционал, который вам необходим. Я даже не претендую на авторство и не навешиваю копирайт. Подхватывайте и несите дальше.

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

Читать далее

Как приручить свой Bluetooth. Часть 1

Я собираюсь вести рассказ не столько о Bluetooth, сколько по вопросу —

как в Линуксе создать простое средство (программу) для работы с устройством, которое подключено к последовательному каналу и выполняет AT-команды.

Ну вот так длинное определение темы.

Давайте начнем наше движение с краткого введения в AT-команды.

Читать далее

Терминал, консоль, дисплей…

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

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

Вот так получилось, что подавляющее большинство людей, которые сейчас активно используют Линукс, пришло из лагеря Виндовс. И очень незначительное количество людей выросли на UNIX/Linux системах. Речь не о том — плохо ли это или хорошо. Это факт. Просто факт, которому я не буду здесь давать оценку. Просто давайте примем этот факт как некую данность, у которой есть небольшая проблема. Вот эту проблему я и попытаюсь обозначить.

Читать далее