Какво е пристанище за котка на компютър. Какви са пристанищата на персонален компютър? И какви са те? Как да деактивирате USB портове, когато изключите компютъра

Описание на интерфейса RS-232, формата на използваните конектори и присвояването на изходите, сигналите, протокола за обмен на данни.

общо описание

Интерфейсът RS-232, съвсем официално наречен "EIA / TIA-232-E", но по-известен като интерфейс "COM порт", преди това е един от най-често срещаните интерфейси в компютърен специалист. Той все още се среща настолни компютриВъпреки появата на повече скорости и "интелигентни" интерфейси като USB и Fireware. Неговите предимства от гледна точка на радио аматьори могат да се дължат на ниската минимална скорост и простота на прилагането на протокола в домашно приготвеното устройство.

Физическият интерфейс се осъществява чрез един от двата вида конектори: DB-9M или DB-25M, последният в наличните в момента компютри е практически не е намерен.

Назначаване на 9-пинови заключения


9-пинов DB-9M тип щепсел
Номера за контакт на пин
Посоката на сигналите е посочена по отношение на хост (компютър)
Контакт. \\ T Сигнал Посока Описание
1 CD. вход Зареждането е открито
2 RXD. вход Приети данни
3 TXD. Изход Предавани данни
4 DTR. Изход Готов домакин
5 GND. - Обща тел
6 DSR. вход Устройството е готово
7 RTS. Изход Гост готов за предаване
8 CTS. вход Устройството е готово за получаване
9 Ri. вход Беше намерено предизвикателство

Назначаване на 15-пинови заключения на съединителя

Контакт. \\ T Сигнал Посока Описание
1 Щит - Екран
2 TXD. Изход Предавани данни
3 RXD. вход Приети данни
4 RTS. Изход Гост готов за предаване
5 CTS. вход Устройството е готово за получаване
6 DSR. вход Устройството е готово
7 GND. - Обща тел
8 CD. вход Зареждането е открито
9 - - Резерв
10 - - Резерв
11 - - Не се използва
12 SCD. вход Носител е открит. # 2
13 SCTS. вход Устройство, готово за приемане # 2
Контакт. \\ T Сигнал Посока Описание
14 Stxd. Изход Предавани данни # 2
15 Пост вход Приемане на предавателя
16 Srxd. вход Приети данни # 2
17 RCC. вход Такт за приемник
18 Lloop. Изход Локален цикъл
19 SRTS. Изход Гост готов за предаване # 2
20 DTR. Изход Готов домакин
21 Rloop. Изход Външен контур
22 Ri. вход Беше намерено предизвикателство
23 ДРД. вход Определя се скоростта на данните
24 TRCO. Изход Вземете външния предавател
25 Тест вход Тестов режим

Таблицата показва, че 25-пин интерфейсът се отличава с наличието на пълноправен втори приемник (сигнали, посочени "# 2"), както и многобройни допълнителни сигнали за управление и управление. Въпреки това, често, въпреки присъствието в компютъра "широк" конектор, допълнителни сигнали просто не са свързани върху него.

Електрически характеристики

Логически нива на предавателя: "0" - от +5 до +15 волта, "1" - от -5 до -15 волта.

Логически нива на приемника: "0" - над +3 волта, "1" - под -3 волта.

входно съпротивление приемник най-малко 3 com.

Тези характеристики се определят от стандарта като минимум, като гарантират съвместимостта на устройството, обаче, действителните характеристики обикновено са значително по-добри, което позволява, от една страна, да захранват устройства с ниска мощност от порта (например, многобройни кабели за домашно приготвени данни са предназначени за мобилни телефони), а от друга - да се подчини на пристанището на пристанището обърнати TTL ниво вместо биполярен сигнал.

Описание на основните сигнали за интерфейс

CD. - Устройството задава този сигнал, когато открие носача в получения сигнал. Обикновено този сигнал се използва от модеми, които по този начин съобщават на хоста на откриването на работния модем на другия край на линията.

RXD. - Получаване на данните за хоста от устройството. Описани подробно в раздела "Протокол за обмен на данни".

TXD. - Линия за прехвърляне на данни за устройството. Описани подробно в раздела "Протокол за обмен на данни".

DTR. - Хостът определя този сигнал, когато е готов за обмен на данни. Всъщност, сигналът е зададен, когато отворите пристанището на комуникационната програма и остава в това състояние през цялото време, докато пристанището е отворено.

DSR. - устройството настройва този сигнал, когато е активиран и готов за обмен на данни с хост. Това и предишни (DTR) сигнали трябва да бъдат инсталирани за обмен на данни.

RTS. - Хостът поставя този сигнал, преди да започне прехвърлянето на данни към устройството, а също така сигнализира готовността за получаване на данни от устройството. Използва се, когато хардуерният контрол на обмена на данни.

CTS. - устройството задава този сигнал в отговор на предишната инсталация на хост (RTS), когато е готова да приеме данни (например, когато предишните данни за хост, изпратени данни, се предават на линията, или има свободно пространство в междинното съединение буфер).

Ri. - устройството (обикновено модем) поставя този сигнал при получаване на повикване от отдалечената система, например, когато получавате телефонно обажданеАко модемът е конфигуриран да получава повиквания.

Протокол за обмен на данни

Протоколът RS-232 съществува два метода за управление на данни: хардуер и софтуер, както и два режима на предаване: синхронни и асинхронни. Протоколът ви позволява да използвате някой от методите за управление заедно с всеки режим на предаване. Разрешено е и работа без контрол на потока, което предполага постоянна готовност на гостоприемника и устройството за получаване на данни, когато връзката е зададена (DTR и DSR сигналите са инсталирани).

Метод за контрол на хардуера Тя се изпълнява с помощта на RTS и CTS сигнали. За да прехвърлите хост данни (компютър), задава сигнала на RTS и изчаква да се инсталира CTS сигнал, след което се стартира данните, докато се зададе CTS сигнал. CTS сигналът се проверява от хоста незабавно преди започване на предаването на следващия байт, така че байт, който вече е започнал да се предава, ще бъде предаден напълно независимо от стойността на ЦТ. В режим Half-Duplex обмен на данни (устройството и хост предават данни на свой ред, в режим на пълен дуплекс, те могат да го направят в същото време) RTS сигнал отстраняване от страна на хоста означава преход към режима на приемане.

Метод на управление на софтуер Това е да прехвърлите множеството специални спиртни символи (символ с код 0x13, наречен XOFF) и подновяване (символ с код 0x11, наречен XON). Когато получавате тези знаци, предаването трябва да спре предаването съответно или да го възобнови (ако има данни, които чакат за предаване). Този метод обаче е по-лесен по отношение на прилагането на оборудването, обаче, осигурява по-бавна реакция и съответно изисква предавателното уведомление за предавателя, когато свободното пространство се намалява в приемащия буфер до определен лимит.

Синхронен режим на предаване Това предполага непрекъснат обмен на данни, когато битовете следват един след друг без допълнителни паузи при дадена скорост. Този режим на пристанището не се поддържа.

Асинхронен режим на предаване Това е, че всеки байт за данни (и контрол на паритета, в случай на негово присъствие), "се оказва" синхронизираща последователност на един нулев стартов бит и един или повече единични спирки. Диаграмата на потока от данни в асинхронния режим е представена на фигурата.

Един от възможните алгоритми на приемника след:

  1. Очаквайте "0" ниво на сигнала за приемане (RXD в случай на хост, TXD в случай на устройство).
  2. Пребройте половината от продължителността на батерията и проверете дали нивото на сигнала все още е "0"
  3. Пребройте пълната продължителност на битовете и текущото ниво на сигнала пишете на по-младата партида за данни (бит 0)
  4. Повторете предишния елемент за всички други битове за данни
  5. Пребройте пълната продължителност на битовете и текущото ниво на сигнала, за да проверите коректността на приемането, като използвате контрола на паритета (виж по-долу)
  6. Стиснете пълната продължителност на бита и се уверете, че текущото ниво на сигнала "1".

Когато се изчислява, серийният порт е сериен комуникационен интерфейс, чрез който информацията се предава или издава в даден момент. За по-голямата част от историята на персоналните компютри данните се предават чрез серийни портове на устройства, като модеми, терминали и различни периферни устройства.

Въпреки че интерфейсите като Ethernet, FireWire и USB, всички изпращат данни като последователен поток, терминът "сериен порт" обикновено се идентифицират хардуер, повече или по-малко съвместими с RS-232 стандарта, предназначен да взаимодейства с модем или с подобна комуникационна връзка.

Модерните компютри без серийни портове могат да изискват преобразуватели със сериен интерфейс, за да се осигури съвместимост с RS-232 серийни устройства. Серийните пристанища все още се използват в приложения като системи за индустриална автоматизация, научни устройства, системи за продажби и някои промишлени и потребителски стоки. Сървърните компютри могат да използват сериен порт като управленска конзола или диагностика. Мрежовото оборудване (например, рутери и превключватели) често използва серийната конзола за конфигурацията. Серийните пристанища все още се използват в тези зони, тъй като те са прости, евтини и техните конзолни функции са силно стандартизирани и широко разпространени.

PORT PINOUT (RS232)

Има 2-ри сортове на COM порт, 25-пинов стар конектор и заместваха по-новия 9-пинов конектор.

По-долу е дадена диаграма на стандартен стандартен 9-пинов RS232 конектор със съединители, този тип съединител също се нарича DB9 конектор.

  1. Откриване на носител (DCD).
  2. Получаване на данни (RXD).
  3. Прехвърляне на данни (TXD).
  4. Готовност за обмен от приемника (DTR).
  5. Земята (GND).
  6. Готовност за обмен от източника (DSR).
  7. Искане за прехвърляне (RTS).
  8. Готовност за предаване (CTS).
  9. Сигнал за повикване (Ri).

RJ-45 до DB-9 информация за изхода на последователния пристанищен адаптер за превключвател

Конзолата е серийният интерфейс RS-232, който използва съединителя RJ-45 за свързване към устройството за управление, като например компютър или лаптоп. Ако няма DB-9 Pin щифт на вашия лаптоп или компютър и искате да свържете лаптоп или компютър към превключвателя, използвайте комбинацията RJ-45 и DB-9.

DB-9.RJ-45.
Получаване на данни2 3
Трансфер на данни3 6
Обмен на готовност4 7
Земя5 5
Земя5 4
Обмен на готовност6 2
Заявка за трансфер7 8
Готовност за предаване8 1

Телни цветове:

1 Черно
2 Браун
3 червени
4 оранжев
5 жълто
6 зелени
7 Blue.
8 сиво (или бяло)

Понякога трябва да решите комуникационната задача електронно устройство С компютър, независимо дали е просто обменян данни или дистанционно управление. Тази статия описва как това може да се изпълни с помощта на сериен порт. Основното му предимство е този стандартен софтуер интерфейс на Windows. (API) ви позволява да контролирате директно изходните линии, давате директен контрол върху тях и има функция да изчакате определено събитие, свързано с COM порта. Също така, стандартът RS-232, за който са направени COM портовете, ви позволява да се свържете и изключвате кабелите по време на работа на устройствата (горещ щепсел).

Описание

COM порт (сериен порт) - двупосочен интерфейс, предаващ данни в последователна форма (битка отвъд) чрез протокол RS-232. Това е доста общ протокол, използван за комуникация едно устройство (например компютър) с други проводници до 30 метра. Логическите сигнали са различни тук от стандарт: нивото на логическото устройство е от +5 до + 15V, нивото на логическа нула е от -5 до -15V, което изисква допълнителни трансформации на веригата, но осигурява добър шум на шум.

Помислете за 9-пинов конектор (DB-9M). По-долу е неговата Pinout:

Изход №. Име Сигнален характер Сигнал
1 DCD. Вход Откриване на носител на данни.
2 RXD. Изход Предават данни.
3 TXD. Вход Получават данни.
4 DTR. Изход Терминал за данни е готов
5 GND. - Земя
6 DSR. Вход Комплект за данни е готов
7 RTS. Изход Заявка за изпращане.
8 CTS. Вход Ясно за изпращане.
9 Ri. Вход Показател на пръстена

Преди всичко ще се интересуваме от PINS 2 (прехвърляне на данни), 3 (приемане на данни) и 5 \u200b\u200b(земя). Това е минимален комплект за възможността за двустранни уреди.

Подробности за описанието на протокола няма. За това има ГОСТ и други подобни. Затова ще отидем по-далеч и ще не говорим за това как да управляваме този звяр.

Приложение

Както вече споменахме, нивата на RS-232 се различават от стандартните TTL нива. Ето защо, трябва по някакъв начин да конвертирате стойностите на напрежението. Тези. Направете 5V от + 15V и 0V от -15V (и обратно). Един от начините (и, вероятно най-лесният) - използването на специален MAX232 микроцирци. Лесно е да се разбере и в същото време може да конвертира два логически сигнала.

По-долу е схемата за включването му:


Мисля, че не трябва да има трудности. Това е едно от използването на този чип: предаване на данни от микроконтролер на компютър и обратно. Предаваният сигнал идва върху краката t х.В от една страна и на r х.В другата страна. Входните сигнали се отстраняват от t х.И R. х.Съответно.

Програмиране

За да започнем, да поговорим за програмните пристанища на ниско ниво. Така ще бъде по-правилно. Прекарах много нерви, занимавайки се с този интерфейс, докато започнах да се ровя в принципа на своята работа на по-ниско ниво, отколкото по-скоро прост трансфер Символи. Ако е ясно, това означава, че няма да има проблеми с езиците на високо равнище.

По-долу са посочените адреси на компонентите, с които ще трябва да работим:

Име на порта Адрес IRQ.
COM 1. 3F8H. 4
COM 2. 2F8H. 3
COM 3. 3e8h. 4
COM 4. 2e8h. 3

Те могат да варират. Задайте стойности в настройките на BIOS. Това са основни адреси. Те също така ще зависят от адреса на регистрите, отговорни за работата на пристанищата:

Адрес Длаб Четене / писане Съкращение Регистрирайте името
+ 0 =0 Пиша Предаващ буфер за задържане.
=0 Прочети. Буфер за приемник.
=1 Чети пиши. Нисък байт за дивисър
+ 1 =0 Чети пиши. Лист Прекъсване позволяват регистър
=1 Чети пиши. Дивисър затворен байт
+ 2 - Прочети. IIR. Регистър за прекъсване
- Пиша FCR. Контролен регистър на FIFO.
+ 3 - Чети пиши. LCR. Регистър за контрол на линията
+ 4 - Чети пиши. MCR. Регистър на модем
+ 5 - Прочети. LSR. Регистър на състоянието на линията.
+ 6 - Прочети. MSR. Регистър на състоянието на модема.
+ 7 - Чети пиши. Регистър на скреч.

Първата колона е адресът на регистъра спрямо основния. Например, за com1: адресът на регистъра на LCR ще бъде 3F8H + 3 \u003d 3FB. Втората колона - DLAB (Divisor Latch Access Bit) бит, дефиниране на различна цел за същия регистър .. т.е. Тя ви позволява да работите с 12 регистрите, като използвате само 8 адреса. Например, ако dlab \u003d 1, след това се отнася до 3F8H, ние ще зададем стойността на по-младия байт на честотата на генератора на часовника. Ако в този регистър ще се отчитат DLAB \u003d 0, като се позовава на същия адрес, предаваните или приетите байтове ще бъдат записани в този регистър.

Нулев регистър

Тя отговаря на регистрите на регистрите / предаването на данни и коефициента на честотния делител на генератора. Както бе споменато по-горе, ако DLAB \u003d 0, след това регистърът се използва за записване на получените / предавани данни, ако е 1, тогава е зададена стойността на долния байт на честотния делител на генератора. Скоростта на предаване на данни зависи от стойността на тази честота. Най-големият делител байт е написан на следващата памет (т.е. за COM1 порта, той ще бъде 3F9H). По-долу е зависимостта на скоростта на данните от коефициента на разделителя:

Прекъсване на разрешителния регистър (IER)

Ако dlab \u003d 0, той се използва като регистър регистър на прекъсванията от асинхронен адаптер, ако dlab \u003d 1, след това той поставя старши байт на честотата на генератора на часовника.

Регистър за идентификация на прекъсването (IIR)

Прекъсването е събитие, при което изпълнението на основната програма спира и започва процедурата за прекъсване. Този регистър определя вида на прекъсването.

Регистър за контрол на линията (LCR)

Това е контролен регистър.

Бит 7. 1 Достъп до детето на дивизора - скорост на обмен на данни
0 Общ режим (контрол на прекъсването, приемане / предаване на данни)
Бит 6. Mimic line break (изпраща последователност от няколко нули)
Бита 3 - 5 Бит 5. Бит 4. Бит 3. Избор на убеждение
Х. Х. 0 Няма паритет
0 0 1 Нечетен паритет.
0 1 1 Дори паритет.
1 0 1 Висок паритет (лепкав)
1 1 1 Нисък паритет (лепкав)
Бит 2. Брой спирачни битове
0 1 стоп бит
1 2 стоп бита при 6.7 или 8 бита за данни или 1.5 спирки с 5 бита на данни.
Битове 0 и 1 Бит 1. Бит 0. Брой битове за данни
0 0 5 бита
0 1 6 бита
1 0 7 бита
1 1 8 бита

Проверка на готовността предполага предаването на друг бит - точката на готовност. Неговата стойност се настройва по такъв начин, че в BIT пакета общият брой на единици (или нули) е дори или нечетен, в зависимост от инсталирането на пристанищните регистри. Този бит се използва за откриване на грешки, които могат да възникнат по време на предаването на данни поради смущения в линията. Приемащото устройство преизчислява паритета на данните и сравнява резултата с бит за паритет. Ако паритетът не съвпадна, се смята, че данните се предават с грешка.

Стоп бит означава пренос на пренос на данни.

Регистър за контрол на модема (MCR)

Регистър на модемния контрол.

Чест Стойност
0 Линия DTR.
1 RTS линия.
2 Line Out1 (резервен)
3 Line Out2 (резервен)
4 Начална диагностика при влизане в асинхронен адаптер, затворен на неговия изход.
5-7 Равен на 0.

Регистър на състоянието на линията (LSR)

Регистрирайте се за определяне на състоянието на линията.

Чест Стойност
0 Данните се получават и готови за четене, автоматично се нулират при четене на данни.
1 Грешка при преливане. Беше приет нов байт за данни, а предишното все още не се чете от програмата. Предишният байт се губи.
2 Грешка при готовете се нулира след като прочете състоянието на линията.
3 Грешка при синхронизация.
4 Открива се искане за прекъсване на предаването "Break" - дълъг ред нули.
5 Регистърът за съхранение на предавателя е празен, можете да запишете нов байт за предаване.
6 Регистърът на предавателя е празен. Този регистър получава данни от регистъра за съхранение и ги превръща в сериен тип за предаване.
7 Отметка (устройството не е свързано с компютъра).

Регистър на състоянието на модема (MSR)

Регистър на състоянието на модема.

Това е. Работейки с тези регистри, можете директно да общувате с COM порта, да контролирате предаването и приемането на данни. Ако не искате да се забърквате с паметта, можете да използвате вече готови компоненти за различни програми за програмиране: C ++, VB, Delphi, Pascal и др. Те са интуитивни, така че мисля, че тук не си струва вниманието.

Stowbits. - Задава броя на спирките. Полето може би
Вземете следните стойности:


  • Onestoppit. - едно спиране;
  • Една5stopbit. - една и половина спирка (практически не
    използвани);
  • TwoStoppbit. - две спирки.

След като всички полета на структурата на DCB са запълнени, имате нужда
Конфигуриране на порта чрез извикване на функцията SETCOMSTATE:

Bool setcommstate (

Дръжка hfile.

LPDCB LPDCB.

В случай на успешно завършване функцията ще се върне различно от нула
стойност и в случай на грешка - нула.

Втората задължителна структура за конфигуриране на пристанището е
Структура на кормиторите. Той определя параметрите на временните закъснения
При получаване. Ето описание на тази структура:

typedef struct _commmmimeouts (

DWORD READINTERVALTIMENTOUT;

DWORD readtotaltimoutmultiplier;

DWORD readtototoltonsconstant;

DWORD WRITETOLTIMUTOUTMULTIPLIER;

Dword writetoltontonstanstant;

) Commitamouts, * lpcommmimeouts;

Структурните полета на кормиторите имат следните стойности:


  • Прочетете край завинаги. - Максимален интервал от време
    (в милисекунди) допустимо между две четливи
    Комуникационна линия чрез последователни символи. По време на
    Времето на четене на периода започва да се брои от
    приемане на първия символ. Ако интервалът между две
    Последователните знаци ще надхвърлят определената стойност, операция
    Предават се четене и всички натрупани в буфер
    в програмата. Нула стойност това поле означава това дадено
    Не се използва изчакване.
  • Readtotaltimeoutmultiplier. - посочва мултипликатора (в


    умножени по броя на изискваните знаци за четене.
  • Readtotaltimoutonstant. - определя константа (в

    Операции по четене. За всяка операция за четене тази стойност
    плюс в резултат на умножение на readtotaltimoutmultier
    Броят на изискванията за четене. Нулеви полета
    Readtotaltimoutmultiplier и readtotaltountonstant означава
    Че цялостното време за четене не се използва.
  • WriteTaltaltimoutmultiplier. - посочва мултипликатора (в
    Milliseconds) Използва се за изчисляване на общото време

    умножени по броя на писмените символи.
  • WriteTaltyTountonstant. - определя константа (в
    Milliseconds) Използва се за изчисляване на общото време
    Операции за запис. За всяка операция за запис тази стойност
    Добавен към резултата от умножаването на WriteTotalTimeOutMultiplier
    Броя на записващите символи. Нулеви полета
    WRITETALTYOUTMULTIPLIER и WRITETALTYOUTCNSTANT означава
    Че цялостното изчакване за операцията за запис не се използва.

Малко по-подробно за изчакването. Нека четем от пристанището 50
Символи със скорост от 9 600 бита / и. Ако се използват 8 бита
на символа, допълнение към паритет и едно спиране, тогава един
Символът във физическата линия представлява 11 бита (включително начални битове).
Това означава 50 знака със скорост от 9 600 бита ще бъдат приети

50 × 11/9600 \u003d 0.0572916 с

или около 57,3 милисекунди, предостави нулевия интервал
между получаването на последователни знаци. Ако интервалът между
Героите са приблизително половината от времето на предаване
символ, т.е. 0.5 милисекунди, времето за приемане ще бъде

50 × 11/9600 + 49 × 0.0005 \u003d 0,0817916

или около 82 милисекунди. Ако има повече в процеса на четене
82 милисекунди, тогава имаме право да приемем, че е възникнала грешка
работа на външното устройство и може да спре да чете, като по този начин
избягване на замразяването на програмата. Това е цялостната операция за изчакване
Четене. По същия начин има общо изчакване на операцията за запис.

Формула за изчисляване на общата операция за изчакване, например,
Четене изглежда така:

Numofchar x readtotaltaltoutmultiplier +
Readtotaltimoutonstant.

където numofchar е броят на изискваните знаци за операцията за четене.

В нашия случай записът за изчакване не може да се използва и
Задайте ги равни на нула.

След попълване на структурата на кормилите, трябва да се обадите
Функция за инсталиране на изчакване:

Bool setcommmmmmmmimeouts (

Дръжка hfile.

Lpcommmmmmomouts lpcommmmmmmmimeouts.

Тъй като операциите по пренос-приемане се извършват при ниска скорост, \\ t
Използвано буфериране на данни. За да зададете размера на буфера за приемане и
Трансферите трябва да се използват от функцията:

Bool Setupcomm (

Дръжка hfile.

Dword dwinqueue,

Dword dwoutqueueue.

Да предположим, че обменяте с пакетите за външни устройства
Информация с размера на 1024 байта, след това разумен размер на буферите
Ще има стойност от 1200. Функцията Setupcomm е интересна, защото може
Просто вземете измеренията си, за да отбележите, като направите собствени корекции или
Като цяло, отхвърлете предлаганите от вас буферни размери - в този случай
Тази функция е завършена с грешка.

Ще дам пример за отваряне и конфигуриране на последователни
Port Com1. За краткост - без дефиниция на грешки. В този пример
Пристанището се отваря да работи със скорост от 9 600 бита / c, използвана 1
Бит за спиране, битът за равенство не се използва:

#Include.

. . . . . . . . . .

Дръжка на дръжката;

КОМПАНИЯТЪТ КОМПАНИЯТА;

DCB DCB;

дръжка \u003d createfile ("com1", geneic_read | generic_write,
Null, , open_existing, file_flag_overlopped, null);

Setupcomm (дръжка, размербуфер, symbutbuffer);

GetCommstate (дръжка, и DCB);

dcb.baudate \u003d cbr_9600;

dcb.fbinary \u003d true;

dcb.foutxctsflow \u003d False;

dcb.foutxdsrflow \u003d False;

dcb.fdtrontrol \u003d dtr_control_handshake;

dcb.fdsrsensitiity \u003d false;

dcb.fnull \u003d False;

dcb.frtscontrol \u003d rts_control_disable;

dCB.FABORTONERROR \u003d FALSE;

dcb.bytesize \u003d 8;

dCB.Arrity \u003d нотарността;

dcb.stoppits \u003d 1;

Setcommstate (дръжка, & dcb);

CommyTimeOuts.ReadinTervalTimeOut \u003d 10;

Commitamouts.readtotaltimoutmultiplier \u003d 1;

// стойностите на тези време - outs са достатъчно сигурни
рецепция

// дори при скорост 110 бода

Commitamouts.readtotaltimoutonstant \u003d 100;

// Използва се Б. този случай като време за изчакване
парцел

Commitamouts.writetaTaltoutmultiplier \u003d 0;

CommyTimeOUTS.WRITETALTOUNTCONSTANT \u003d 0;

SETCOMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMATS);

PURGECOMM (дръжка, purge_rxclear);

PURGECOMM (дръжка, purge_txclear);

След отваряне на пристанището, първото нещо, което трябва да го загубите, така че
Както при буферите на приемането и предаването може да бъде "боклук". Следователно Б.
Край на примера прилагаме функцията, която преди това не ни е известна
PURGECOMM:

Bool purgecomm (

Дръжка hfile.

DWORD DWFLAGS.

Тази функция може да изпълнява две задачи: почистване на опашката
Приемане и предаване в водача или попълване на всички операции
I / O. Какви действия за изпълнение, зададени на друг
Параметър:


  • Purge_txabort.
    записи, дори ако не са завършени;
  • Purge_rxabort. - незабавно спиране на всички операции
    четене, дори ако не са завършени;
  • Purge_txclear. - изчиства опашката за предаване в водача;
  • Purge_rxclear. - изчиства опашката за приемане в
    Шофьор.
    Тези стойности могат да бъдат комбинирани с помощта на бит
    Операции или. След грешки се препоръчват чисти буфери
    приемане и след завършване с пристанището.

Време е да се обмисли пряко операции
Пишете за пристанището. Както за работа с файлове, използвани
Характеристики на Readfile и Writefile. Ето техните прототипи:

Bool readfile (

Дръжка hfile.

Lpvoid lpbuffer,

Dword nnumofbytestoad,

Lpdword lpnumofbytespead,

Lpoverlosed lpoverlapped.

Bool writefile (

Дръжка hfile.

Lpvoid lpbuffer,

Dword nnumofbytewrite,

Lpdword lpnumofbyteswritenten,

Lpoverlosed lpoverlapped.

Разгледайте заданието на параметрите на тези функции:


  • hfile. - дескриптор отвори файл Комуникация
    пристанище;
  • lpbuffer. - адреса на буфера. За данни за записване на запис от
    Този буфер ще бъде предаден на пристанището. За работа с четене в това
    Буферът ще бъде поставен от данните, взети от линията;
  • nnumofbytestoad, nnumofbytewrite. - брой очаквани
    до получаване или предназначение за предавателни байтове;
  • nnumofbytespead, nnumofbytewwitten. - броя на действителните
    приети или предадени байтове. Ако е прието или прехвърлено по-малко
    Данните от исканото, свидетелстват за дисковия файл
    За грешката и за комуникационния порт не е непременно.
    Причина при изчакване.
  • Lpoverlupped. - адрес на използваната използвана структура
    За асинхронни операции.

В случай на нормално завършване функцията се връща на
различни от нула, в случай на грешка - нула.

Ще дам пример за четене и писане на работа:

#Include.

…………..

DWORD NUMBYTS, NUMBYTES_OK, TEMP;

Comstat Comstate;

Припокриване припокриване;

char buf_in \u003d "здравей!";

numbytes \u003d 6;

// ако temp не е нула, това означава, че пристанището е в състояние
Грешки

ако (! temp) writefile (дръжка, buf_in, numbytes,
& Numbytes_ok и припокриване);

Clearcommerror (дръжка, и temp, & comstate);

ако (! temp) readfile (дръжка, buf_in, numbytes, & numbytes_ok,
& Припокриване);

// в променливата NUMBYTES_OK съдържа реално число
предава се

// приети байт

В този пример използвахме две неизвестни мен по-рано
Комстат и припокриващи се структури, както и функцията Clearcommerror. За
Нашата комуникационна кутия "в три жици" се припокрива
Помислете (просто използвайте както в примера). Прототипна функция
ClearCommerror има формата:

Bool clearcommmerror (

Дръжка hfile.

Lpdword lperrors,

Lpcomstat lppstat.

Тази функция нулира знака за грешка при порт (ако има такъв
място) и връща информация за състоянието на пристанището в структурата
Comstat:

typedef структура _comstat.

DWORD FCTSHOLD: 1;

DWORD FDSRHOLD: 1;

DWORD FRLSDHOLD: 1;

DWORD FXOFFHOLD: 1;

DWORD FXOFFSENT: 1;

DWORD FEOF: 1;

DWORD FTXIM: 1;

DWORD FRERRED: 25;

DWORD CBINQUE;

Dword cboutque;

) Comstat, * lpcomstat;

Можем да използваме две области на тази структура:


  • Cbinque. - броя на знаците в приемащия буфер. Тези символи
    взети от линията, но все още не се чете от функцията за readfile;
  • Cboutque. - броя на знаците в предаващия буфер. Тези
    Символите все още не се предават на линията.

Останалите полета на тази структура съдържат информация за
Грешки.

И накрая, след завършване на работата с пристанището, тя трябва да бъде затворена.
Затварянето на обекта в Win32 изпълнява функцията The CloseHandle:

Bool closehandle (

Дръжката

На нашия сайт можете да намерите пълния текст на класа за работа с
последователен порт в асинхронен режим "в три проводника" и
Също така пример за програма, използваща този клас. Всичко това
Написано под Builder C ++, но тъй като се използват само функции.
API Win32, програмният текст е лесен за промяна на всеки C ++ компилатор.
Възможно е и класът да не е написан съвсем "според правилата" - питам
извинение, авторът не е "правилен" програмист и пише така
Как е удобно J.

Приветствам всички отново на страниците на вашия блог и днес искам да кажа как свържете COM. uSB порт В Windows. Да поговорим, че това е и за това, което се използва. Мисля, че за начинаещите мрежови администратори и само за напреднали потребители ще бъде интересно, за мен, в едно време това беше просто някаква магия, която ви позволява да конфигурирате сървърното оборудване.

Какво е свързано чрез COM порт

Чрез компонента по пристанището преди това са свързани модеми, мишки. Сега се използва за свързване към източници непрекъснатата власт, за комуникация с разработването на хардуер на вградени изчислителни системи, сателитни приемници, касови апарати, с устройства за системи за сигурност на обектите, както и с много други устройства.

Използвайки COM порта, можете да свържете два компютъра, като използвате така наречения "Zero-modem кабел" (виж по-долу). Използва се от MS-DOS време за помпете файлове от един компютър на друг, в UNIX за крайния достъп до друга машина и в Windows (дори модерен) - за дебъгер на нивото на ядрото.

Но в света на мрежата чрез COM портсвържете се с конзолната пристанище на мрежовите устройства (превключватели, рутери, марки като Cisco или Juniper)

Каква е веригата на свързване към превключвателите през серийния порт. Има адаптери, например, от ST-лаборатория в единия край на USB, който се свързвате с компютър, а вторият е COM порт.

Инсталиране на COM драйвери USB порт в Windows

За съжаление в свързаните с Windows устройства USB към COM не винаги се инсталира автоматично в системата и трябва да ги търсите драйвери. Ако сте го купили, тогава устройството е включено в драйверите и можете да го използвате, ако не е, тогава погледнете как да намерите драйвери.

Отворете диспечера на устройствата в Windows. Ако не знаете как, след това натиснете CTR + PAUSE BREAKE, или натиснете Win + R и въведете devmgmt.msc в прозореца. Както можете да видите в секцията на портовете (COM и LPT), бях намерен на третия компонент неизвестен тел, а шофьорите не го намериха от системата, която ни казва жълтата икона.

Отидете на Свойства това устройство И изберете идентификационния номер на оборудването, ще имате нещо по тип USB VID_067B & PID_2303 & REV_0300, тук го копирате и търсите в Google или Yandex.

След това кликнете върху десния бутон върху устройството в диспечера на устройството и изберете Инсталиране на драйверите, посочете пътя към тях и поставете, ако всичко е наред, тогава имате иконата ще изчезне Предупреждения.

След това вече можете да използвате възможностите на COM порта, като използвате такива помощни програми за получаване на шпакловка, където изберете сериен и посочете желания PORT порт, можете да го видите в един и същ мениджър на устройства.

Надявам се, че сте научили и разбрали как да свържете COM USB порта в Windows.