Interface?

13 отговора 357 прегледа
#1

Interface?

Wyprosyt mi e typ, no se zarodi w spor mezhdu men i edin priatel, samouki computerni "specialisti", i taka i ne sme namerili konkreten otgowor.A i nadali mnogo hora znajat wernia.
Ne se smejte, molya!
Kakwo TOCHNO e Interface???
mnogo blagodarnosti predwaritelno:)

Хайде, със здраве!
Отговор
в отговор на Og #2

Re: Interface?

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

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

Например когато се казва GUI (grsphicsl udrr interface) на определена програма, това означава начините по които човека общува с програмата (менюто, бутоните, резултата който човек вижда от програмата, и даже звука ако има такъв).

За някоя библиотека от подпрограми (*.LIB, *.DLL) това са отделните функции и подпрограми в нея заедно с определението на аргументите и резултата. Затова наприр във Windows основната библиотека с подпрограми на операционната система се нарича API (Application Program Interface).

В обектно ориентирания бинарен стандарт COM (Common Object Model), което пак го има във Windows, интерфейса на тези абстрактни обекти e комплекти от функции. Например всеки COM обект задължително унаследява интерфейса IUnknown, състоящ се от трите интерфейсни функции QueryInterface, AddRef и Release.

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

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

Това скриване (капсулация) на вътрешното усгройство на обекта не е заради глупави причини от рода на "юзера е тъп и не трябва да знае".
Работата е там, че тази организация ни дава улеснение, понеже винаги можем да променяме/модифицираме/подобряваме без това да пречи на останалата част от совтуера да работи.
Например ако производителя на наата черна кутия реши да използва вместо зеницата разпознаване на човека по чрез глас, запазвайки само интерфейса към черната кутия, останалата система (софтуер) ще продължи да работи без да са нужни корекции и пренастройки. Престови си кокво би станало заради малка промяна някъде, да се наложи преписване на огромен софтуер.

Също е като при машините.
Ако на една пералня и се подава вода чрез търба 1/4" купувайки нова пералня с търба 2/3" не се налага да сменим водопроводната инсталация, а само накрайника, т.е. интерфейса.

Отговор
в отговор на kjh #3

Re: Interface?

Явно, както винаги, и двамата имаме право.
Аз лично казах, че да речем, принтера има паралелен интерфейс, а ми отговориха, че принтера Е интерфейс.
Зависи от гледната точка...
10х

Хайде, със здраве!
Отговор
в отговор на Og #4

Re: Interface?

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

Принтера не е интерфейс а изходно устройство (output device). Интерфейс е тази част от хардуера с която се осъществява връзката с компютъра. Някой може по-общо да каже, че в интерфейса тук се включва като започнем от специалния чип на дънната платка на компютъра чийто изводи излизат на куплонга, куплонга, после самия кабел, до като се стигне до еднотипния чип в принтера приемащ информацията.

Изобщо в хардуера interface е чарк осъществяващ връзка между две устройства и се дефинира като се посочи допълнително физическите размери, електрическите характеристики и логиката на функциониране. Това обикновенно се дава от някой стандарт (ISO, ANSI, IEEE са най-важните организации за стандарти в комп. техника)

Например като се казва, че дънната платка на някой компютър има интерфейс PCI това указва въпросния слот който има определени физически размери, електрически характеристики на пиновете и спецификация за това кой пин какво представлява; така че специално този стандарт за PCI ни казва какви именно интерфейсни карти (подобно на sound card) можем да включим към въпросния слот. Някои карти са за PCI а други не, понеже интерфейса им е различен.

Друг интерфейс освен паралелния е серийния, т.е. портовете COM1 и COM2. Хардуерно на тези куплонзи нормално са изведени няколко крачета на чиповете с име UART. Други сериини интерфейси са IEEE-1394 и I^2C но се срещат по-рядко. Мрежовата карта също ни дава интерфейс и може да физическата връзка да е по UTP или коаксиален кабел.

Aко купиш по-нов компютър може да видиш и безжичен интерфейс чрез инфра-червени лъчи (IrCOMM, IrDA) за мрежи, принтери, камери, ... много е ценно, понеже не ти се мотаят кабели из краката, но е пак за много малки разтояния. Може InfraRed да се наложи като най-популярен за в бъдеще; само производителите на периферия (Input/Output devices) да започнат да го поддържат и вграждат в продуктите.

Отговор
в отговор на kjh #5

Re: Interface?

Дали принтера може да е интерфейс от някаква гледта точка ... ами може да е интерфейс между човека и някоя програма, понеже човека вижда резултата от програмата на хартия.
Но май не е много популярно да се казва че принтера е интерфейс. Казва се, че принтера е изходно устройство (output device) както мишката и клавиатурата за входни устройства (input device). Не зависимо че всички тези устройства участват в "интерфейса между човека и компютъра".

Отговор
в отговор на Og #6

Re: Interface?

Интерфейс означава "точка на свързване".


Я вышел им наперерез...
Отговор
в отговор на MиГ #7

Re: Interface?

Znam za prewoda. AMa ot prakticheska gledna tochka iskahme da namerim opredelenie.Weche dazhe ne pomnja kakwo tochno beshe stanalo i kak wyznikna spora.
Spodeljam mnenieto che mozhe wsichko da se nareche interface w zawisimost ot towa kakwo swyrzwa.
A kato spomenahme widowete interface, dnes mi zadadoha interesen wypros- kak da se dokopam do otdelnite pin-ove na paralelnia port?
Kakwi sa ima adresite?kak se namirat?

Хайде, със здраве!
Отговор
в отговор на Og #8

Re: Interface?

Не усложнявай излишно нещата. За да свържеш две системи ти трябва трета - тя се нарича интерфейс.


Я вышел им наперерез...
Отговор
в отговор на MиГ #9

Re: Interface?

МиГ е прав, тук се говори много общо и поне на мен не ми е ясно каво точно искаш.
Ако искаш да напишеш програма, която комуникира по паралелния порт с някакво устройство, не е толкова просто. Защото Win NT/2k/Xp не позволяват на който и дае да бърка в хардуера.
Ето ти малко примерен код (без DDK ами директно) за да видиш за какво става дума

// Write 0x55 to the LPT1
HANDLE hFile = CreateFile("lpt1", GENERIC_READ|GENERIC_WRITE, 0, NULL, OPEN_EXISTING,
FILE_FLAG_OVERLAPPED, NULL);
if (hFile == INVALID_HANDLE_VALUE)
return (FALSE); // can not open lpt1
BYTE aByte = 0x55;
DWORD NumberOfBytesWritten;
OVERLAPPED overlapped;
memset(&overlapped, 0, sizeof(overlapped));
if(!WriteFile(hFile, &aByte, 1, &NumberOfBytesWritten, &overlapped)) {
if (ERROR_IO_PENDING != GetLastError()) {
CloseHandle(hFile);
return (FALSE); // WriteFile failed (look in GetLastError for more info)
}
}
while(!HasOverlappedIoCompleted(&overlapped)) {
if ( <have_timot> )
break;
// Idle time: do something else here ...
}
if(!HasOverlappedIoCompleted(&overlapped)) {
CancelIo(hFile);
// report Timeout error
}
else {
// OK, 'aByte' was written to the LPT1
}
CloseHandle(hFile);


Отговор
в отговор на kjh #10

:)

Blagodarya strashno mnogo, towa s Interface nyamashe nishto obshto s parallenia port.Prosto me byaha pitali i az kazah che shte se konsultiram i prowerja za malko info.Inache ot tozi source ne razbrah nishto, ne sym programist, samo se interesuwam ot wsichko po PC kak se prawi PRINCIPNO. No wse pak shte go razgledam i shte mi se izyasnyat dosta neshta. A towa za interface- zabrawete weche, beshe wyzniknalo spontanno i sybrah mnenia:)

Хайде, със здраве!
Отговор
в отговор на Og #11

Re: :)

OK, май се досещам за какво тие.
Този source не беше за да ти усложнява живота, а на практика това е най-простото работещо нещо което успях да измисля за Windows. Ако прочетеш в хелпа на VC++ (т.е. MSDN) определението на отделните функции CreateFile, WriteFile, ... веднага ще ти стане ясно.

Принципно, чипа чиито изходи отиват на LPT1 има адресируеми регистри в I/O пространството на Pentium, и трябва да пишеш байтове в тях, за да излизат данните навън.
За съжаление версиите на Windows от NT на горе не дават достатъчно права на обикновенни програми да адресират хардуера (от съображение за сигурност, че да не ти скапе компютъра някой вирус).
Затова вариантите са два: това, което аз ти предложих е да исползваш системните API функции на Windows; другия начин е да напишеш твой драйвер, което се прави с DDK(Driver Development Kit), понеже Windows дава на драйверите по високи права и могат да "бърникат" директно в портовете.

Така, че примера който ти дадох прави следното: отваря порта LPT1 като стандартен файл и записва в този файл 1 байт (число 0x55 шестнадесетично, което избрах произволно). В действителност WriteFile ще запише този байт в един буфер в паметта и ще подаде заявка къв съответния драйвер. Усложнението с OVERLAPPED е, че WriteFile да се върне веднага, а по-късно да проверяваме кога и дали байта е изпратен с помощта на HasOberlappedIoCompleted. Хардуера срабогва по-бавно и няма нужда програмата да кисне докото стане работата. Освен това, ако куплонга на LPT1 в този момент е разкачен, този байт никога няма да се изпрати. За това в цикъла до като чякаме байта да се изпрати (idle tuime) можем да си правим нещо друго и да гледаме часовника та сляд някакво разумно време (Timeout) изобщо да се откажем да изпращаме данни.

Това беше ли полезно?

Отговор
в отговор на kjh #12

Re: :)

Мдаам, много образователно, благодаря. Нали казах, че това всичкото го мислим само за гимнастика на мозъка, никакъв конкретен проблем нямаме поставен.Което не ни пречи да си измисляме мини-проблемчета, над които да мислим и спорим:)

Хайде, със здраве!
Отговор
в отговор на Og #13

Re: Interface?

Интерфейс е съвокуоност от правила, норми, характерстики и т.н., които уреждат връзката между две среди.
Интерфейсът не трябва да се бърка с чарка, които го реализира. Едно е серийния интерфейс RS 232, а чипът UART 16550 и куплунгът D9 и ... материализират този интерфейс.
Друг пример - GUI-то е сборник правила, които уреждат връзката човек - машина (прозорец, структура на прозорец, графични контроли, свойства на контролите, ...).

Отговор
в отговор на Og #14

Re: Interface?

Imashe edna statiq "Interface i oste nesto", ne sum mnogo siguren za zaglawieto.
Predi okolo godina bqh q swalil nqkade ot gbg.bg, ama q zatrih nqkade po pc-to.
Statiqta e mnogo interesna, nqkoi ako q e chel i q ima, da dade nqkakuv link, da si q swalq.

Отговор