» Poradna » Programy

Ovládání COM portů v Delphi

 |   | 

Potřeboval bych nějaký spolehlivý způsob ovládání sériových portů v Delphi 6 nebo 7, který by fungoval ve winálech řady 9x/me i v 2k/xp. Na COM port nepotřebuji odesílat žádné hodnoty. Stačí mi nastavení úrovně na výstupech RTS, DTR a TxD a zjištění úrovně na vstupech.

Díky za rady

anMic

Mohlo by vás také zajímat

Odpovědi na otázku

 |   | 

AsyncFree tusim od TurboPower, nyni jako opensource na www.sourceforge.netSynaSer - www.ararat.cz/synapseComPort komponenty

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   | 

Je to neuvěřitelné, ale lze to s pomocí API funkce CreateFile a chodí to i pod NT a XP. Uvádím příklad mojeho prográmku k vyslání 0.1sec pulsu na DTR (otvírá šuplík kasy v prodejně):procedure OtevritSuplik;const CDelkaDTR = 0.1;var HCom: THandle;begin HCom := CreateFile (PChar ('\\.\COM1', GENERIC_READ or GENERIC_WRITE, 0, nil, OPEN_EXISTING, FILE_FLAG_OVERLAPPED, 0); EscapeCommFunction (HCom, SETDTR); Sleep (trunc (CDelkaDTR * 1000); EscapeCommFunction (HCom, CLRDTR); CloseHandle (HCom);end;

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   | 

Pardon, blbě jsem to nakopíroval, tomu Sleepu chybí závorka, má být: Sleep (trunc (CDelkaDTR * 1000));

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   | 

Jeětě poznámka: Bližší popisy použitých funkcí najdeš v help Win SDK který je k Delphi 6 a 7 přiložen. A že je v tom CreateFile takový podivný název souboru mě jen utvrzuje, že API funkce dělala tlupa vožralů, protože tak "úžasně" to nikdo jiný nevymyslí. Když někdo hledá API funkci na COM, tak ho určitě nikdy nenapadne CreateFile.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   | 

S tim Sleep() bych byl opatrny. Neni to presne, protoze to zavisi na tom, kolik casu procesor aplikaci prideli. Pokud se pri behu programu spusti treba jiny program, ktery bude 10s intenzivne startovat, Sleep se prestane chytat

Souhlasím  |  Nesouhlasím  |  Odpovědět

Související témata: Ovládání, Spolehlivý způsob