У дома / Отзиви / Описание на COM порта. Какво е COM порт. Модем и COM порт

Описание на COM порта. Какво е COM порт. Модем и COM порт

Напоследък серийният метод за предаване на данни заменя паралелния.
Не е нужно да търсите далеч за примери: външният вид на USB и SATA шини говори сам за себе си.
Наистина, паралелната шина е трудна за мащабиране (по-дълъг кабел, по-висока тактова честота на шината), не е изненадващо, че технологиите се обръщат към паралелни шини отзад.

Серийни интерфейси

Днес има много различни интерфейси за серийни данни.
Освен вече споменатите USB и SATA, можем да си припомним и поне два добре познати стандарта RS-232 и MIDI (известен още като GamePort).
Всички те са обединени от едно и също - серийно предаване на всеки бит информация или сериен интерфейс.
Такива интерфейси имат много предимства и най-важното от тях е малък брой свързващи проводници и следователно по-ниска цена.

Трансфер на данни

Серийната комуникация може да се реализира по два начина: асинхронен и синхронен.

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

Асинхронното предаване включва използването на специални битове, които маркират началото и края на данните - начален (логическа нула) и стоп (логическа единица).
Възможно е също да се използва специален бит за четност, който определя четен или нечетен брой предавани единични битове (в зависимост от приетата конвенция).
От приемащата страна този бит се анализира и ако битът за четност не съвпада с броя на единичните битове, тогава пакетът с данни се изпраща отново.

Струва си да се отбележи, че такава проверка ви позволява да откриете грешка само ако само един бит е бил предаден неправилно, ако няколко бита са били неправилно предадени, тази проверка вече става неправилна.
Изпращането на следващия пакет данни може да се случи по всяко време след изпращане на стоп бит и, разбира се, трябва да започне с началния бит.
Не е ясно?

Е, ако всичко Компютърни технологиибяха прости, тогава всяка домакиня отдавна би изваяла нови протоколи успоредно с кнедли ...
Нека се опитаме да погледнем на процеса по различен начин.
Данните се предават в пакети, приблизително като IP пакети, информационните битове вървят заедно с данните, броят на тези битове може да варира от 2 до 3 и половина.
С половинка?!
Да, правилно чухте, с половинка!

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

Този метод на предаване предполага, че приемникът и предавателят трябва да работят с една и съща скорост (добре или почти със същата скорост), в противен случай приемникът или няма да има време да обработи входящите битове данни, или ще вземе стария бит за нов .
За да се избегне това, всеки бит се стробира, тоест се изпраща синхронно със специален сигнал - „стробоскоп“, генериран вътре в устройството.
Има редица специфични скорости за асинхронни устройства - 50, 75, 110, 150, 300, 600, 1200, 2400, 4800, 9600, 19200, 38400, 57600 и 115200 бита в секунда.

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

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

Отговорът е очевиден: когато предаваме малки пакети данни, можем да загубим, като изпратим три служебни бита с тях (от 50 до 30 процента от данните), но ако пакетът е повреден по време на предаването, можем лесно да разпознаем това (не забравяйте за бит за паритет?) и бързо го предайте отново.
Но в килобайт данни ще бъде трудно да се открие грешка и ще бъде много по-трудно да се предаде.

Пример за асинхронно устройство за сериен трансфер на данни е компютърен COM порт, любим модем, проектиран от Trussardi, и мишка, свързана към същия порт, който по някаква причина тесногръдите секретарки винаги се опитват да набутат в PS / 2.
Всички тези устройства работят на интерфейса RS-232, или по-скоро на неговата асинхронна част, тъй като стандартът описва и синхронен трансфер на данни.

AMD Radeon Software Adrenalin Edition Driver 19.9.2 По избор

Новият AMD Radeon Software Adrenalin Edition 19.9.2 Допълнителен драйвер подобрява производителността в Borderlands 3 и добавя поддръжка за Radeon Image Sharpening.

Кумулативно актуализация на windows 10 1903 KB4515384 (добавено)

На 10 септември 2019 г. Microsoft пусна кумулативна актуализация за Windows 10 версия 1903 - KB4515384 с редица подобрения на сигурността и корекция за грешка, която се повреди Windows работиТърсене и предизвика голямо натоварване на процесора.

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

Подготовка за работа

Повечето микроконтролери имат множество I/O портове. Протоколът UART е най-подходящ за комуникация с компютър. Това е протокол за сериен асинхронен трансфер на данни. За да го преобразува в USB интерфейс, платката има USB-RS232 конвертор - FT232RL.
Нуждаете се само от съвместима с Arduino платка, за да стартирате примерите в тази статия. Ние използваме . Уверете се, че вашата платка има светодиод, свързан към щифт 13 и бутон за нулиране.

Например, нека качим код на дъската, който показва ASCII таблица. ASCII е кодиране за представяне на десетични цифри, латиница и национална азбука, препинателни знаци и контролни знаци.

int символ = 33 ; void setup() ( Serial. begin(9600 ) ; Serial. println(" ASCII таблица ~ Character Map " ) ; ) void loop() ( Serial. write(symbol) ; Serial. print(" , dec: " ) ; Serial .print(symbol) ; Serial.print(" , шестнадесетичен: " ) ; Serial.print(symbol, HEX) ; Serial.print(" , окт: " ) ; Serial.print(symbol, OCT) ; Serial.print( " , bin: " ) ; Serial.println(symbol, BIN) ; if (символ == 126 ) ( while (true) (продължи ; ) ) symbol+ + ; )

Символната променлива съхранява кода на символа. Таблицата започва на 33 и завършва на 126, така че символът първоначално е настроен на 33.
За да стартирате работата на UART порта, използвайте функцията Serial.begin(). Единственият му параметър е скоростта. Скоростта трябва да бъде договорена предварително от предаващата и приемащата страна, тъй като протоколът за предаване е асинхронен. В този пример скоростта е 9600bps.
Три функции се използват за запис на стойност в порт:

  1. Serial.write()– записва данни в порта в двоичен вид.
  2. Serial.print()може да има много стойности, но всички те служат за показване на информация в удобна за човека форма. Например, ако информацията, посочена като параметър за предаване, е затворена в кавички, терминалната програма ще я покаже непроменена. Ако искате да покажете някаква стойност в определена система calculus, тогава трябва да добавите служебна дума: BIN-двоичен, OCT - осмичен, DEC - десетичен, HEX - шестнадесетичен. Например, Serial.print(25, HEX).
  3. Serial.println()прави същото като Serial.print(), но все пак превежда низа след показване на информацията.

За да проверите работата на програмата, е необходимо компютърът да има терминална програма, която получава данни от COM порта. AT Arduino IDEвече вградени. За да го извикате, изберете Tools->Port Monitor от менюто. Прозорецът на тази помощна програма е много прост:

Сега щракнете върху бутона за рестартиране. MK ще се рестартира и ще покаже ASCII таблицата:

Обърнете внимание на тази част от кода:

if (символ = = 126 ) ( докато (вярно) (продължи ; ))

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

Изпращане на команди от компютър

Преди да направите това, трябва да получите представа как работи COM портът.
На първо място, целият обмен се осъществява чрез буфера на паметта. Тоест, когато изпратите нещо от компютър към устройство, данните се поставят в някакъв специален раздел на паметта. Веднага след като устройството е готово, то чете данните от буфера. Функцията ви позволява да проверите състоянието на буфера serial.avaliable(). Тази функция връща броя на байтовете в буфера. За да извадите тези байтове, трябва да използвате функцията Serial.read(). Нека видим как работят тези функции с пример:

int val = 0 ; void setup() ( Serial. begin(9600 ) ; ) void loop() ( if (Serial. available() > 0 ) ( val = Serial. read() ; Serial. print(" Получих: " ) ; Serial. write(val) ; Serial.println() ; ))

След като кодът се зареди в паметта на микроконтролера, отворете монитора на COM порта. Въведете един знак и натиснете Enter. В полученото поле за данни ще видите: „Получих: X“, където вместо хще бъде символът, който сте въвели.
Програмата се върти неограничено в главния цикъл. В момента, когато в порта се запише байт, функцията Serial.available() приема стойност 1, тоест условието е изпълнено Serial.available() > 0. Следваща функция Serial.read()чете този байт, като по този начин изчиства буфера. След това, използвайки вече познатите ви функции, се получава изходът.
Използването на вградения монитор за COM порт на Arduino IDE има някои ограничения. При изпращане на данни от платката към COM порта изходът може да бъде организиран в произволен формат. И при изпращане от компютъра към дъската, прехвърлянето на знаци става в съответствие с таблицата ASCII. Това означава, че когато въведете например символа „1“, двоичният файл „00110001“ (тоест „49“ в десетичната запетая) се изпраща през COM порта.
Нека променим малко кода и да проверим това изявление:

int val = 0 ; void setup() ( Serial. begin(9600 ) ; ) void loop() ( if (Serial. available() > 0 ) ( val = Serial. read() ; Serial. print(" Получих: " ) ; Serial. println(val, BIN) ; ) )

След изтегляне, в монитора на порта при изпращане на „1“, ще видите в отговор: „Получих: 110001“. Можете да промените изходния формат и да видите какво приема платката с други знаци.

Управление на устройството чрез COM порт

Очевидно чрез команди от компютър можете да управлявате всякакви функции на микроконтролера. Изтеглете програмата управление на работата LED:

int val = 0 ; void setup() ( Serial. begin(9600 ) ; ) void loop() ( if (Serial. available() > 0 ) ( val = Serial. read() ; if (val= = "H" ) digitalWrite(13 , HIGH) ; if (val= = "L") digitalWrite(13, LOW) ; ) )

Когато символът "H" бъде изпратен към COM порта, светодиодът на 13-ия изход светва, а когато се изпрати "L", светодиодът ще изгасне.
Ако въз основа на резултатите от получаването на данни от COM порта искате програмата да извършва различни действия в главния цикъл, можете да проверите условията в главния цикъл. Например.

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

Използване

Така че, преди да говорим по-подробно за това какво е COM порт, трябва да погледнем в миналото, за да разберем значението му. Буквално преди 15 години беше използван метод за свързване на устройства към компютър с помощта на специален стандартен конектор, разположен на задния панел. системен блокс помощта на специален сериен кабел RS-232. Този метод има много недостатъци. Такъв кабел по съвременните стандарти осигурява изключително ниска скорост на предаване на данни - около сто килобита в секунда. В допълнение към момента, когато е направено физическото свързване на конекторите, беше необходимо оборудването да се изключи, а самите те бяха закрепени един към друг с винтове, които гарантираха надеждност, докато размерите им се различаваха в значителни размери.

Малко история

COM портът на компютрите от онова време традиционно се номерираше с 1 или 2, тъй като обикновено имаше не повече от два от тях. При необходимост могат да се инсталират допълнителни портове. Когато потребителят е конфигурирал софтуер, се изискваше да не се бърка и правилно да се инсталира точно този, към който е предоставена връзката необходимото оборудване. Всеки COM порт изисква правилните настройки на скоростта, както и редица други мистериозни параметри, които бяха известни само на тесен кръг от специалисти. За да бъде успешно свързването на оборудването, всички необходими параметри трябваше да бъдат установени от някъде или експериментално избрани, тъй като в този случай нямаше автоматична конфигурация. В допълнение, връзката през COM порта позволява свързването на всеки софтуер с произволно външно оборудване, дори напълно несъвместимо, което причинява огромен брой грешки по време на процеса на настройка.

Модерност

Сега връзката през COM порта е напълно изместена от повече съвременен метод, което не изисква специални познания за изпълнение, а именно чрез USB порт. Този метод е лишен от всички недостатъци, споменати по-рано. Въпреки това, съвременните стандарти за съвместимост на свързване на всякакъв вид GPS оборудване и много хетерогенен софтуер се формират доста отдавна около концепцията за COM портове, които са станали архаични в момента.

Това се дължи на факта, че първоначално почти всяко оборудване, включително GPS, беше външно и връзката му с компютъра беше направена чрез сериен кабел, свързан към един от хардуерните портове. По време на процеса на конфигуриране от потребителя се изискваше правилно да избере номера на порта и скоростта на предаване на данни през него. По това време възниква основният стандарт за предаване на данни от GPS приемник към програма, която сега се нарича NMEA-0183. Всъщност този стандарт изисква всички разработчици дори на най-модерния хардуер и софтуер да обменят данни през COM портове. И всичко това в условията на съвременни компютри, както и на PDA, USB стандартът отдавна е основният. И още една особеност е, че напоследък GPS приемниците все по-често се инсталират директно в корпуса на устройството, тоест няма свързващ кабел между него и основното устройство.

Виртуални COM портове

Измислен е изход, а именно разработени са "виртуални" COM портове. Оказва се, че вътрешното устройство на PDA, например GPS приемник, се симулира софтуерно под формата на COM порт, но не е такова в хардуерно отношение. В същото време една програма, която е проектирана да взаимодейства чрез такъв стандарт, няма значение как се прилага. Тук се допуска наличието на виртуална симулация, а не задължителното наличие на хардуерна реализация. Така че е възможно да се гарантира съвместимостта на старите GPS програми с модерно оборудване.

Направени промени

В същото време управлението на COM порта не се е променило значително. Потребителят, по стария начин, трябва да прави сложни настройки почти ръчно. Съвременният COM порт обаче вече не е това обемно устройство, разположено на задния панел на системния блок, а съвсем различно устройство. И тук цялата работа е, че от гледна точка на софтуера, всичките им реализации изглеждат безлики, тоест няма разлика между виртуални и реални портове. При софтуера портовете се различават само по номерата, присвоени им от производителите на PDA на напълно произволна основа. Например приемникът на ASUS обикновено се намира на COM5, докато PocketLOOX 560 показва приемника на COM8. Оказва се, че програма, която иска да получава данни от GPS приемник, първоначално няма надеждна информация за условния номер, под който се появява портът, който е предписан подходящ за приемника на този PDA.

Как работи всичко?

Като се има предвид, че сред всички налични COM портове, можете автоматично търсенеподходяща, процедурата за такова проучване е доста ненадеждна и доста тромава. Това се дължи на факта, че устройствата, показвани в системата като COM портове, могат да бъдат доста разнообразни и да нямат нищо общо с GPS, те могат напълно непредвидимо да отговорят на подобно проучване. Например, на PDA има портове, свързани с вътрешен клетъчен модем, с USB, с инфрачервен порт, както и с други елементи. Достъпът до тях чрез програма, предназначена да работи с конкретно устройство, може да доведе до напълно непредвидима реакция, както и до различни неизправности, което често води до замръзване на PDA. Ето защо опитът за отваряне на COM порт може да доведе до неочаквани ситуации, до включване на Bluetooth или И може да има повече неразбираеми случаи.

Работа на COM порта

За COM портове като основа се използва асинхронен универсален приемо-предавателен чип. Тази микросхема съществува в няколко разновидности: Intel 16550A, 16550, 16450, 8250. За всеки COM порт тя съдържа регистри на приемник и предавател на данни, както и редица контролни регистри, до които може да се стигне чрез BIOS, Windows и MS DOS програми. В най-новите версиимикрочипът има набор от буфери за временно съхранение на предавани и приемани данни. Благодарение на тази възможност е възможно по-рядко прекъсване на работата на централния процесор, както и координиране на скоростта на предаване на данни.

Основни настройки

Устройството COM порт приема следните характерни характеристики:

Базов адрес на порта за въвеждане и извеждане на информация;

Номера на хардуерни прекъсвания;

Размерът на един блок информация;

Скоростта, с която се предават данните;

Режим за откриване на честност;

Метод за управление на информационния поток;

Броят на стоп битовете.

Как да проверите COM порта на компютъра? На какво да обърнем внимание?

Както бе споменато по-рано, този тип порт е двупосочен интерфейс за сериен път на битово ниво. Отличителна характеристика в сравнение с паралелния порт тук е прехвърлянето на данни бит по бит. Анатомията на COM порта е такава, че той не е единственият на компютър, който използва метод за сериен трансфер на данни. Например интерфейси като Ethernet или USB също използват подобен принцип, но така се е случило исторически, че е обичайно да се извиква портът на стандартния сериен RS232.

Много често се изисква отваряне на COM порт за ремонт и диагностика на компютър, като също така трябва да се провери за работоспособност. Много е лесно да изгорите елемент. Най-често това се случва по вина на потребителя, който изключва устройството неправилно, издърпвайки конектора, докато интерфейсът е свързан. Най-лесният начин да проверите дали интерфейсът работи е да свържете мишка към него. Въпреки това е толкова трудно да се получи пълна картина, тъй като манипулаторът използва само половината от сигналните линии от осем налични. Само използването на специален щепсел и програма ще позволи проверка на производителността. За тези цели вече има специално разработен софтуер.

Серийните портове са обичани от разработчиците заради тяхната лекота на поддръжка и използване.

И разбира се, писането в конзолата на терминалната програма е добре, но искам мое собствено приложение, което с натискане на клавиш на екрана извършва необходимите действия;)

В тази статия ще опиша как да работим с com портв C++.

Решението е просто, но по някаква причина работещ пример не беше намерен веднага. За SIM го запазвам тук.

Разбира се, можете да използвате кросплатформени решения като QSerial - библиотека в Qt, вероятно ще го направя, но в бъдеще. Сега говорим за "чист" Windows C++. Ще пишем във Visual Studio. Имам 2010 г., въпреки че това не играе никаква роля ...

Създайте нов конзолен Win32 проект.

Включете заглавни файлове:

#включи #включи използване на пространство от имена std;

Декларираме манипулатор на com порт:

HANDLE hSerial;

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

int _tmain(int argc, _TCHAR* argv) (

Не мога да понасям стила на програмиране на Windows. Те наричаха всичко по свой начин и седят, радвайки се ...

Сега магията на декларирането на низ с името на порта. Въпросът е, че той не е в състояние да трансформира самия char.

LPCTSTR sPortName = L"COM1";

Работата със серийни портове в Windows работи като с файл. Отваряне на първия com порт за писане/четене:

HSerial = ::CreateFile(sPortName,GENERIC_READ | GENERIC_WRITE,0,0,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0);

Проверка на функционалността:

If(hSerial==INVALID_HANDLE_VALUE) ( if(GetLastError()==ERROR_FILE_NOT_FOUND) ( cout<< "serial port does not exist.\n"; } cout << "some other error occurred.\n"; }

Сега трябва да конфигурирате параметрите на връзката:

DCB dcbSerialParams = (0); dcbSerialParams.DCBlength=sizeof(dcbSerialParams); if (!GetCommState(hSerial, &dcbSerialParams)) ( cout<< "getting state error\n"; } dcbSerialParams.BaudRate=CBR_9600; dcbSerialParams.ByteSize=8; dcbSerialParams.StopBits=ONESTOPBIT; dcbSerialParams.Parity=NOPARITY; if(!SetCommState(hSerial, &dcbSerialParams)) { cout << "error setting serial port state\n"; }

В msdn се препоръчва първо да получите параметрите и след това да ги промените. Все още се учим, така че правим както се иска.

Сега нека декларираме низа, който ще предадем, и променливите, необходими за това:

Char data = "Здравей от C++"; // низ за предаване на DWORD dwSize = sizeof(data); // размер на този низ DWORD dwBytesWritten; // тук ще бъде броят на действително прехвърлените байтове

Изпращане на низ. Нека ви напомня, че примерът е най-простият, така че не правя никакви специални проверки:

BOOL iRet = WriteFile(hSerial,data,dwSize,&dwBytesWritten,NULL);

Реших също да покажа размера на низа и броя на байтовете, изпратени до контрола:

Cout<< dwSize << " Bytes in string. " << dwBytesWritten << " Bytes sended. " << endl;

В края на програмата правим безкраен цикъл на четене на данни:

While(1) ( ReadCOM(); ) върне 0; )

Сега функцията за четене:

Void ReadCOM() ( DWORD iSize; char sReceivedChar; while (true) ( ​​ReadFile(hSerial, &sReceivedChar, 1, &iSize, 0); // получаваме 1 байт, ако (iSize > 0) // отпечатване на cout, ако нещо се получи<< sReceivedChar; } }

Това всъщност е целият пример.

В изчисленията серийният порт е сериен комуникационен интерфейс, през който информацията се предава или извежда наведнъж. През по-голямата част от историята на персоналните компютри данните се прехвърляха през серийни портове към устройства като модеми, терминали и различни периферни устройства.

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

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

Изводи на COM порта (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 и искате да свържете вашия лаптоп или компютър към превключвателя, използвайте комбинация от RJ-45 и DB-9 адаптер.

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

Цветове на проводниците:

1 Черен
2 Кафяв
3 Червен
4 портокал
5 жълто
6 Зелено
7 синьо
8 сиво (или бяло)