Как да проверя за наличие на CTS сигнал в COM
HCom: = CreateFile (PChar (ComboBox1.Text), GE
.
EscapeCommFunction (HCom, SETRTS); // Инсталирайте RTS
Как да проверите за CTS сега
GetCommModemStatus или от WaitCommEvent
За повече подробности, моля, и не ме изпращайте на помощ, аз бях там.
WaitCommEvent (HCоm, EV_CTS, какво да напиша тук?);
Може ли да те питам? Как разбрахте какво означават първите два параметъра? И защо не използвах същия метод, за да определя значението на 3 - неговия параметър?
Помощта изглеждаше, но тъй като в Делфи и на буржоазния език аз съм нула, тогава вижте резултата по-горе
Ето как да преведем помощта за тази функция X - Translator PLATINUM.
WaitCommEvent изчаква да настъпи събитие за посоченото комуникационно устройство. Наборът от събития, проверени от тази функция, се съдържа в маската на случая, свързана с маркера на устройството (дескриптор).
PROCESS hFile, // Маркер (манипулатор) на комуникационното устройство
LPDWORD lpEvtMask, // Променлив адрес за настъпилото събитие
LPOVERLAPPED lpOverlapped, // Адрес на припокриващата се структура
);
Идентифицира комуникационното устройство. Функцията CreateFile връща този маркер (манипулатор).
Посочва към 32-битова променлива, която получава маска, указваща вида на настъпилото събитие. Ако възникне грешка, стойността е нула; в противен случай това е една от следните стойности:
Стойност Стойност
EV_BREAK При откриването е открита пауза.
EV_CTS CTS (ясен за изпращане) сигнал е променен (заменен) състояние (състояние).
EV_DSR DSR (готов за набор от данни) сигнал е променен (заменен) състояние (състояние).
EV_ERR Възникна грешка в състоянието на линията. Грешки в състоянието на реда - CE_FRAME, CE_OVERRUN и CE_RXPARITY.
EV_RING Открит е индикатор за позвъняване.
EV_RLSD RLSD (сигнал за търсене на линия за приемане) е променен (заменен) състояние (състояние).
EV_RXCHAR Символ беше получен и поставен във входния буфер.
EV_RXFLAG Символ за събитие е получен и поставен във входния буфер. Символът на случая е дефиниран в структурата на DCB на устройството, която се прилага към серийния порт с помощта на функцията SetCommState.
EV_TXEMPTY Последният (предишен) символ в изходния буфер е изпратен.
Показва СВЪРЗАНА структура. Тази структура би била необходима, ако hFile се отвори с FILE_FLAG_OVERLAPPED.
Ако hFile е отворен с FILE_FLAG_OVERLAPPED, параметърът lpOverlapped не трябва да бъде NULL (NULL). Това трябва да сочи към валидна (валидна) СВЪРЗАНА структура. Ако hFile е отворен с FILE_FLAG_OVERLAPPED и lpOverlapped е NULL (NULL), функцията може неправилно да отчете, че операцията е завършена.
Ако hFile е отворен с FILE_FLAG_OVERLAPPED и lpOverlapped не е NULL (NULL), WaitCommEvent се изпълнява като припокривана операция. В този случай (регистър) структурата OVERLAPPED трябва да съдържа маркер (манипулатор) към обекта (целта) на случая за ръчно нулиране (създаден с помощта на функцията CreateEvent).
Ако маркерът (манипулаторът) hFile не е отворен с FILE_FLAG_OVERLAPPED, WaitCommEvent не се връща, докато не се появи едно от посочените събития или грешки.
Ако функцията успее, върнатата стойност е ненулева.
Ако функцията не успее, върнатата стойност е нула. За да получите разширена (разширена) информация за грешка, обадете се (обадете се) GetLastError.
Функцията WaitCommEvent наблюдава набора от събития за посочения комуникационен ресурс. За да зададете и направите заявка за маската на текущото събитие на комуникационен ресурс, използвайте функциите SetCommMask и GetCommMask.
Ако припокриващата се операция не може да бъде завършена незабавно, функцията връща FALSE, а функцията GetLastError връща ERROR_IO_PENDING, което показва, че операцията е във фонов режим. Когато това се случи, системата задава hEvent на члена OVERLAPPED на неотчетено състояние, преди WaitCommEvent да се върне и след това го задава на отчетеното състояние, когато възникне едно от посочените събития или грешки. Процесът на заявка може да използва една от чакащите функции, за да определи състоянието (състоянието) на обекта на събитието (целта) и след това да използва функцията GetOverlappedResult, за да определи резултатите от операцията WaitCommEvent. GetOverlappedResult отчита успеха или неуспеха (неуспеха) на операцията и променливата, посочена от параметъра lpEvtMask, е зададена да указва случая, който се е случил.
Ако даден процес се опитва да модифицира (замени) маската на делото на устройството с помощта на функцията SetCommMask, докато е в процес на заменена операция WaitCommEvent, WaitCommEvent се връща незабавно. Променливата, посочена от параметъра lpEvtMask, е зададена на нула.
CreateFile, DCB, GetCommMask, GetOverlappedResult, OVERLAPPED, SetCommMask, SetCommState
Пиша в Delphi от месец, всъщност програмирам ПИК-ове. И тогава задачата е да свържа PIK, към Кого с компютър, така че се притеснявам.
Воювам с интуитивен интерфейс, писал съм в Dos отдавна, но проклет прогрес.
Така че нямам, Делфи е тъмна гора за мен.
Пиша в Delphi от месец, всъщност програмирам ПИК-ове. И тогава задачата е да свържа PIK, към Кого с компютър, така че се притеснявам.
Воювам с интуитивен интерфейс, писал съм в Dos отдавна, но проклет прогрес.
Така че нямам, Делфи е тъмна гора за мен.
И като цяло GetCommModemStatus изглежда по-добър в моя случай.