Pull to refresh
  • by relevance
  • by date
  • by rating

Работа с СОМ-портом на Си в linux

RUVDS.com corporate blog Programming *System Programming *Development for Linux *Manufacture and development of electronics *
Tutorial
Телетайп, на который БЭВМ могли выводить и получать данные. Фото взято здесь.

Каждый, кто постоянно занимается электроникой и программирует встраиваемые устройства, неизбежно сталкивается с необходимостью работы с СОМ-портом под линуксом. Недаром, моя статья "UART и с чем его едят" спустя 11 лет после выпуска набирает просмотры и комментарии.

Для разработчиков чаще всего появляется задача сопрячь какой-то датчик, либо удалённое устройство с одноплатником. Да что греха таить, сейчас в 2021 году UART, наверное, самый распространённый интерфейс для обмена данными, несмотря на всю его архаичность. Далеко за примером ходить не надо, внутри смартфона, лежащего у вас в кармане, будет с десяток UART интерфейсов, самый известный из которых — это подключение SIM-карты.

Поэтому умение работать с СОМ-портами в linux особенно важно. И вот, казалось бы, UART, древнейший интерфейс, всё должно быть известно и понятно, и даже опытные программисты ломают зубы, работая с ним в линуксе. Особенный цирк с конями начинается при работе с передачей сырых данных по RS-485. Не знаю ни одного программиста, который бы не хватил горя при разработке ПО для таких решений. Самое забавное, что с более новомодным i2c работать в линуксе куда проще и понятнее, чем с ортодоксальным UART. Чтобы не было путаницы дальше, всё семейство UART (RS-232, RS-485, UART 5V, UART 3,3 и т.д.) по тексту я буду называть COM-порт или UART. Мы говорим в статье не о физическом интерфейсе, а о программной стороне вопроса.

В этой статье я хочу показать, как писать свои программы, работающие с UART в ОС Linux. И неважно на каком языке вы пишете программу для работы с UART (python, c, c++, bash, php, perl и т.д.), принцип работы и грабли будут одни и те же, так как всё равно всё упирается в системные вызовы к ядру. А не понимание того, что там происходит и приводит к различным трудноуловимым багам.
Читать дальше →
Total votes 61: ↑58 and ↓3 +55
Views 8.6K
Comments 24

Рейтинг языков программирования от TIOBE: C# теряет популярность, C++ становится востребованнее

Programming *Statistics in IT
Компания TIOBE опубликовала обновленный рейтинг языков программирования.

Обновляется этот рейтинг раз в месяц, позволяя следить за динамикой популярности различных языков программирования. Данные, которые используются для оценки, собираются по всему миру, это количество разработчиков в определенной сфере, доступность курсов по конкретным языкам, решения, которые позволяют расширить возможности языка.
Читать дальше →
Total votes 16: ↑13 and ↓3 +10
Views 28K
Comments 19

Microsoft упростила доступ к API Win32 для языков Rust и C#

API *C *C# *Rust *Development for Windows *

Компания Microsoft рассказала о проекте по упрощению взаимодействия с API Win32 для языков программирования Rust и С#. Проект получил название win32metadata и доступен для предварительного просмотра на Github.

Читать далее
Total votes 28: ↑23 and ↓5 +18
Views 7.7K
Comments 18

AMD выпустила бракованные APU из Xbox Series X в виде набора 4700S без встроенной графики

Manufacture and development of electronics *Computer hardware Desktop PC's CPU IT-companies

AMD опубликовала описание набора для сборки компьютера AMD 4700S Desktop Kit, в основе которого лежит процессор AMD 4700S. Как заметил портал Tom’s Hardware, 4700S очень похож на отбракованный APU для Xbox Series X, у которого отключён графический ускоритель.

Читать далее
Total votes 16: ↑16 and ↓0 +16
Views 7.4K
Comments 11

Бельгийские газеты удалены из поискового индекса MSN

Lumber room
Дабы не последовать печальному примеру Google, бельгийское подразделение MSN начало переговоры с группой бельгийских издателей Copiepresse, недовольных бесплатным использованием своего контента на страницах поисковых сайтов.

Пока стороны не пришли к соглашению, группа издателей Copiepresse потребовала прекратить индексацию газет агентства, выходящих на французском и немецком языках. Издатели надеются, что им удастся уговорить MSN выплачивать компенсацию, после чего контент снова появится на поисковом сайте.

Бельгийский суд уже принял решение, что компания Google не имеет права использовать контент без разрешения. Рассмотрение аппеляции на этот странный вердикт состоится 24 ноября 2006 г.
Rating 0
Views 298
Comments 0

MSN тестирует собственную систему контекстной рекламы

Lumber room
На рынке контекстной рекламы скоро появится третий крупный игрок. К Google AdSense и Yahoo Publisher Network собирается присоединиться компания Microsoft, которая начала открытое тестирование платформы ContentAds.
Читать дальше →
Rating 0
Views 230
Comments 0

Web-разработка: Java vs C++

Lumber room
Назрела необходимость выбрать новую платформу для web-разработки.

Раньш был PHP. Это хорошая технология, но нужно что-то потяжелее. Серверная инфраструктура — *nix. То есть .NET отметаем (и MONO тоже)

Также отметаем все скриптовые языки (Perl, Python, Ruby, etc). Так как смысла менять шило на мыло особого нет.

Остается Java и C++. Это довольно тяжелые технологии для больших проектов. Технологии примерно одного класса.

Итак, кто что может сказать по этому поводу? Особенно хочется услышать мнение практиков.
Total votes 18: ↑12 and ↓6 +6
Views 1.7K
Comments 53

Не алфавитно-цифровые символы для тегов. Попробуйте поискать по тегу «C++»

Habr
В общем попытался поискать по тегу «C++» — ничего не находит, хотя тег такой есть (например airworker.habrahabr.ru/blog/7747.html )

Видимо нужно добавить поддержку хотя бы знака "+". Не обижать же C++ на айтишном сайте, в самом деле :)
Total votes 7: ↑5 and ↓2 +3
Views 1.4K
Comments 3

Command&Conquer 3 вышла в продажу

Lumber room

Знаменитая стратегическая серия, из первых эпизодов которой возник целый жанр, возвращается! Command & Conquer по праву считается легендой, разработчики многих современных проектов до сих пор ориентируются на стандарты, идеи и приемы, заложенные в C&C. Однако третья часть не просто возрождает давние традиции, но выводит сериал на новый уровень, провозглашая начало следующей эпохи в развитии жанра стратегий реального времени.
Читать дальше →
Total votes 5: ↑5 and ↓0 +5
Views 498
Comments 8

Новый рейтинг TIOBE. Ruby пошёл на спад?!

Website development *
Голландская компания TIOBE Software BV опубликовала рейтинг популярности языков программирования за май 2007 года. О методике расчёта рейтинга я уже рассказывал ранее.
Первая десятка не претерпела изменений по сравнению с апрелем: в жёлтой майке лидера по-прежнему Java, за ней следуют C и C++. Однако майский рейтинг выявил назревающую сенсацию — стремительный рост рейтинга языка Ruby прекратился. Более того, впервые более чем за год наметился откат: майский рейтинг Ruby оказался ниже апрельского.
Читать дальше →
Total votes 12: ↑9 and ↓3 +6
Views 3.7K
Comments 15

Взаимодействие с Virtual Server 2005 R2 через COM

IT-companies
Совсем недавно мне нужно было из программного кода на C# обратится к Virtual Server 2005 R2. Вместе с этим продуктом имеется dll'ка, через которую выполняется всякое взаимодействие.
Читать дальше →
Total votes 3: ↑3 and ↓0 +3
Views 333
Comments 0

Раздача книг: что делать с C#?

Search engines *
Уважаемые Хабралюди!

Нигма.ру проводит акцию по бесплатной раздаче книг по программированию и системному администрированию (см. www.nigma.ru/books.php ), в пункте 4.5 Соглашения с пользователями которой написано, что Нигма не раздает книги, являющиеся дополнением к документации по коммерческим продуктам.

В число таких «нераздаваемых» книг попали книги по C# наподобие такой:

CLR via C#. Программирование на платформе Microsoft .NET Framework 2.0 на языке C#

Доля C# на российском рынке — мала, поэтому Майкрософт, зарабатывающий в год более 50 миллиардов долларов, выделяет огромные деньги на продвижение этих технологий в России (например, рекламу на Хабре покупает) — такие, которые Нигма, разумеется, выделить не может — и мог бы самостоятельно оплатить книги по C# программистам, поэтому мы смело решили, что такие книги подпадают под пункт 4.5

Пожалуйста, выскажите свое мнение о нашем решении в опросе (см. следующий пост).
Total votes 11: ↑8 and ↓3 +5
Views 1.8K
Comments 1

25 лет соединяя человека с компьютером

Computer hardware
25 лет инноваций с Microsoft HardwareВ прошедшую пятницу в Большом зале Центра дизайна Artplay в Москве Hardware-подразделение компании Microsoft собирало партнеров и прессу на празднование своего 25-летия. За этот весьма долгий, по меркам отрасли, срок, Microsoft Hardware стал одним из ведущих разработчиков инновационных технологий, применяющихся в таких привычных и повседневных устройствах, как клавиатуры, мыши, джойстики и веб-камеры, сделал удобство и комфорт пользователя обязательным правилом и во многом определил то, каким образом мы сегодня управляем своим ПК. Попав в число приглашенных, я с удовольствием пообщался с этими по-настоящему увлеченными своим делом людьми, познакомился с итогами их работы и кое-какими планами на будущее.
Читать дальше →
Total votes 8: ↑5 and ↓3 +2
Views 575
Comments 3

25 лет соединяя человека с компьютером

IT-companies
25 лет инноваций с Microsoft HardwareВ прошедшую пятницу в Большом зале Центра дизайна Artplay в Москве Hardware-подразделение компании Microsoft собирало партнеров и прессу на празднование своего 25-летия.

За этот весьма долгий, по меркам отрасли, срок, Microsoft Hardware стал одним из ведущих разработчиков инновационных технологий, применяющихся в таких привычных и повседневных устройствах, как клавиатуры, мыши, джойстики и веб-камеры, сделал удобство и комфорт пользователя обязательным правилом и во многом определил то, каким образом мы сегодня управляем своим ПК. Попав в число приглашенных, я с удовольствием пообщался с этими по-настоящему увлеченными своим делом людьми, познакомился с итогами их работы и кое-какими планами на будущее.
Читать дальше →
Total votes 12: ↑6 and ↓6 0
Views 329
Comments 1

Основы Linq. Linq и n-уровневая архитектура

Lumber room
Майкрософот предоставило новое легкое в освоении и очень мощное и гибко расширение языков .NET для обработки данных под названием Linq.

Как в многоуровневых приложениях спроектировать провайдер данных так, что бы получить набор объектов?

К примеру , есть таблица tbCustomers ((Int64)CustID, (String)Name, (int32)Age) и есть класс Customers:

publicclass Customers
{
    private Int64 _CustID;
    public Int64 CustID
    {
        get { return _CustID; }
        set { _CustID = value; }
    }

    private string _Name;
    public string Name
    {
        get { return _Name; }
        set { _Name = value; }
    }

    //Тип Int32 допускающее значение null
    private Int32? _Age;
    public Int32?Age
    {
        get { return _Age; }
        set { _Age = value; }
    }

    //Инициализаторы
    public Customers()
    {
    }
   
    public Customers(Int64 CustID, string Name, Int32? Age)
    {
        _CustID = CustID;
        _Name = Name;
        _Age = Age;
    }

    //Получение набора объектов из поставщика данных
    publicstatic List<Customers> GetCustomers()
    {
        return CustomersData.GetAllCustomers();
    }
}

и необходимо получить из поставщика набор объектов Customers.

Стандартное решение этого вопроса в .NET2.0 является использование пространства имен System.Data.SqlClient:

publicstatic class CustomersData
{
    //ИспользованиеSqlClient
    public static List<Customers> GetAllCustomers()
    {
        List<Customers> lst = new List<Customers>();
        using (SqlConnection conn = new SqlConnection(«Data Source=…»))
        {
            conn.Open();
            SqlCommand cmd = new SqlCommand(«SELECT CustID, Name, Age FROM tbCustomers», conn);
            SqlDataReader reader = cmd.ExecuteReader();
            while (reader.Read())
            {
                lst.Add(new Customers((Int64)reader[«CustID»], (String)reader[«Name»], (Int32)?reader[«Age»]));
            }
        }
        return lst;
    }
}

При использовании Linqмы можем получить набор данных из анонимных типов используя инициализатор объекта, т.е.

publicstatic class CustomersData
{
    //ИспользованиеLinq
    public static List<Customers> GetAllCustomers()
    {
        LinqDcDataContext db=new LinqDcDataContext();
        IEnumerable<Customers> result = db.tbCustomers.Select(c => new Customers(c.CustID, c.Name, c.Age));
        //ПриводимнаборIEnumerable<Customers> кList<Customers>
        return new List<Customers>(result);
    }
}




Оригинал статьи Linq в n-уровневой архитектуре
Total votes 5: ↑5 and ↓0 +5
Views 1.7K
Comments 29

порт sIFR на Silverlight

Lumber room
только что нарулил в сети интересную штуку — Sistr

по сути это клон sIFR — workaround позволяющий обойти в HTML ограничения на шрифты, т.е. показать на странице блоки текста шрифтом, который не установлен у клиента.
Читать дальше →
Total votes 5: ↑5 and ↓0 +5
Views 289
Comments 14

RAID-массив из флэш-карт при помощи адаптера Addonics

Computer hardware
C помощью нового PCI-адаптера Quad CF PCI Adapter (AD4CFPRJ) от компании Addonics Technologies можно добавить в систему до четырех флэш-карт расширения Compact Flash (CF), сформировав RAID-массив.

Quad CF PCI Adapter устанавливается в слот PCI. Причем его компактность позволяет размещать новинку в корпуса уменьшенной высоты. Устройство совместимо с операционными системами DOS, Windows 98, ME, NT 4.0, 2000, XP, Vista, а также Linux kernel 2.4. Поддерживает режимы UDMA, DMA и PIO и позволяет конфигурировать подключенные карты CF как один большой том, как несколько независимых томов (по числу карточек) и как массив RAID с режимами RAID 0, 1 и 10.

Стоимость Quad CF PCI Adapter составляет $50.

via Yahoo! News
Total votes 19: ↑16 and ↓3 +13
Views 2K
Comments 16

C/C+: эти коварные наборы строк.

Designing and refactoring *
Многие «знают», что программирование на C/C++ позволяет получить программы, которые работают почти так же быстро, как программы, написанные на языке Assembler, а уж те, в свою очередь, быстры настолько, насколько это вообще возможно в теории.

На самом деле, конечно, это не совсем так (а в редких случаях — и совсем не так), но в целом программы на C/C++ действительно быстры, требуют немного памяти и запускаются мгновенно. Если их правильно написать.

Вот о том как правильно писать на C/C++ я и хотел бы немного поговорить. Сегодня я хочу обсудить вопрос о наборах строк. То есть о процедурах, позволяющих из числа получить строку, а из строки — число.

Где подобные списки встречаются? Ну, например, это могут быть списки токенов html, с которыми работает ваша программа. Или список команд, которые принимает ваш командный интерпретатор. Но, конечно, наиболее часто такие наборы возникают как списки всевозможных ошибок: strerror, gai_strerror, regerror и т.д. Думаю каждый программист встречался с подобной задачей хотя бы раз.

Хочу оговориться что дальнейшее описание впрямую применимо только к операционным системам, использующим формат ELF: Linux, MacOS, etc. В Windows или встраиваемых системах ситуация может быть слегка иной. Плюс я в этот раз ограничусь только прямой задачей (по числу получить строку) ибо она во-первых проще, а во-вторых многие решения обратной задачи содержат в себе прямую задачу как часть решения.
Читать дальше →
Total votes 40: ↑36 and ↓4 +32
Views 6.3K
Comments 94