Tuesday, March 04, 2008

Stav modemu

Stav modemu
I druhý dnešní tip souvisí s modemem. Tentokrát si ukážeme, jak zjistit některé jeho stavové informace. Opět je třeba specifikovat COM port a celá struktura procedury je dost podobná předchozímu příkladu. Výsledný stav je poté vypsán v jednoduchém dialogu.
procedure TForm1.Button1Click(Sender: TObject);
var
CommPort : string;
hCommFile : THandle;
ModemStat : DWord;
begin
CommPort := 'COM3';
hCommFile := CreateFile(PChar(CommPort), GENERIC_READ, 0, nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
if hCommFile = INVALID_HANDLE_VALUE then
begin
ShowMessage('Nelze otevřít '+ CommPort);
exit;
end;

if GetCommModemStatus(hCommFile, ModemStat) then
begin
if ModemStat and MS_CTS_ON <> 0 then ShowMessage('The CTS (clear-to-send) is on.');
if ModemStat and MS_DSR_ON <> 0 then ShowMessage('The DSR (data-set-ready) is on.');
if ModemStat and MS_RING_ON <> 0 then ShowMessage('The ring indicator is on.');
if ModemStat and MS_RLSD_ON <> 0 then ShowMessage('The RLSD (receive-line-signal-detect) is on.');
end;

CloseHandle(hCommFile);
end;
Zjištění stavu modemu nějaký čas zabere (u mě okolo dvou sekund), takže nepanikařte, pokud se výsledek nezobrazí ihned. Text (tedy stav), který se zobrazí jako výsledek, jsem tentokrát nepřekládal, protože by to mohlo být spíše kontraproduktivní a věřím že ti, kteří tento tip budou zkoušet, ví o co jde a dají přednost původním termínům.

Labels: