Python + com порт

Python  – мова програмування, яка завдяки своїй ефективності та простоті стала дуже популярною в різних галузях, починаючи від веб сайтів закінчуючи, науковими обчисленнями. Не виключенням є і embedded напрям. Раніше я вже писав про програмування радіомодулів на Python. В цій статті буде приклад робочи з послідовним портом  компютера, для обміну інформацією з підключеними до комп’ютера пристроями, або їх тестування.

Щоб можна було комунікувати з підключеним до компютера пристроєм, потрібно:

1. Переконатись чи у вашому комп’ютері є COM роз’єм (DB-9), в нових компютерах він як правило відсутній. В цьому випадку можна використати перетворювач USB – RS-232USB – TTL, або купити плату розширення для стаціонарного комп’ютера. Я користуюсь ноутбуком, тому буду використовувати перетворювач USB – TTL:

SparkFun FTDI Basic Breakout

 

2. Завантажити і встановити Python з офіційного сайту.- версії 2.7.x ;
3. Завантажити і встановити бібліотеку для роботи COM портом – PySerial;
4. Зручне IDE PyCharm Community Edition (для Python воно безплатне). Можна обійтись без нього, і писати в звичайному  текстовому редакторі. Вибирайте як вам зручніше.

Демонстрація роботи

Для демонстрації обміну між ком’ютером і пристроєм я буду викистовувати логічний аналізатор(можна також використовувати осцилограф), який підключений до перетворювача. Цей пристрій дозволяє відображати інформацію яка передається по лініям , а також розшифровувати (підтримує інтерфейси I2C, SPI, CAN, UART, USB) повідомлення та відображати їх в зручному вигляді. Пристрій підключається до компютера по USB, а програмне забезпечення Saleae Logic відображає отриману інформацію.  Дуже корисна річ, рекомендую всім, а особливо тих хто займається налагодженням комунікації між різними пристроями.

Логічний аналізатор

Saleae Logic

Напишемо скрипт для роботи з портом, для цього використаємо PySerial API. Алгоритм роботи  наступний:

 Спочатку підключаємо бібліотеку:

Записуємо масив який будемо надсилати пристрою:

Створюємо обєкт класу serial та ініціалізуємо його:

закриваємо порт на випадок якщо він був відкритий іншою програмою чи скриптом, і знову відкриваємо його:

 

Виводимо масив байт, і закриваємо порт:

Повний скрипт який надсилає дані в послідовний порт:

Стоворимо новий проект, добавимо в нього скрип і запустимо його на виконання:

2014-12-30_000125

 

В програмі логічного аналізатора побачимо масив байт які надсилає компютер пристрою:

Масив байт “\x01\x03\x00\x00\x00\x01\x0a\x84” перехоплений логічним аналізатором.

 

Як видно з програми, всього кілька рядкі коду дозволяють працювати з пристроями підключеними до ком’пютера. Якщо використати Python бібліотеки для роботи з web і підключити GPS модуль, можна відображати кординати  на карті в браузері.Це тільки один із прикладів можливого застосування, все обмежується тільки фантазією.