Робота з com портом на c в windows, blablacode

Послідовні порти полюбилися розробникам за їх простоту в обслуговуванні і використанні.

І звичайно ж писати в консоль термінальної програми це все добре, але хочеться свій додаток, яке після натиснення клавіші на екрані виконує потрібні вам дії;)







У цій статті опишу як працювати з com портом на мові Сі ++.

Рішення просте, але чомусь робочий приклад знайдений був не відразу. За сім зберігаю його тут.

Створюємо новий консольний Win32 проект.

Інклуд header файли:

Оголошуємо обробник com порту:

Я роблю це глобально, щоб не морочитися з покажчиками при передачі його в функції.

Далі починаємо формувати функцію main:

Терпіти не можу віндовскій стиль програмування. Обізвали все посвоєму і сидять радіють.

Робота з последоавательнимі портами в Windows проходить як з файлом. Відкриваємо перший кому порт для запису / читання:

Тепер потрібно налаштувати параметри з'єднання:

На msdn радять спочатку отримати параметри, а потім міняти їх. Ми ще тільки вчимося, тому робимо як просять.







Тепер оголосимо рядок, яку будемо передавати і змінні необхідні для цього:

Надсилаємо рядок. Нагадаю, що приклад найпростіший, тому ніяких особливо перевірок я не роблю:

Також я вирішив вивести для контролю розмір рядка і кількість відісланих байт:

В кінці програми робимо нескінченний цикл читання даних:

Тепер функція читання:

Ось власне і весь приклад.

Я створив віртуальний com порт. І слав з COM1 в COM2:

Робота з com портом на c в windows, blablacode

З нашої програми було відправлено "Hello from C ++", а з терміналу "hello how2.org.ua".

Здрастуйте, у мене є деякі проблеми: COM порт ніяк не хоче працювати. З самого початку, я все скидався на те, що я чайник. Але не так сталося - то було! Я багато разів намагався писати код. У підсумку, я просто скачав приклад. (У мене раніше не було можливостей) І що ж? Запускаю програму з прикладу (не зраджуючи код) і все одно не працює! Виводяться тільки помилки. Я, вибачте на слові, тупий? Або у мене що - то не так? Заздалегідь величезне спасибі!

Дякуємо. Мабуть єдиний код який завівся з пів стусана.

15 Bytes sended. o)

А чи можна обійтися без нескінченного циклу, а обробляти подія виникнення даних на СОМ порте? Як я вважаю цей цикл витрачає багато ресурсів і що то більш серйозне зробити з цим прикладом не вийде.







Схожі статті