Odbiotnik podczerwieni + Program

0

Powiedzmy, że mam odbiornik podczerwieni podłaczony do COM1 i nadajnik w postaci Pilota. Jak w Delphi sprawdzić który przycisk na pilocie został naciśnięty tzn. jak odróżnić jeden sygnał od drugiego żeby w zależności od tego jaki przycisk został nacisnięty wykonana została odpowiednia procedura. Proszę chociaż o jakieś informacje na ten temat adresy stron itp. THX za ewentualną pomoc.

0

Możesz np. udawać girdera i załadować do swojego programu igorplug.dll.

0

Ale chodzi mi o to aby program był samodzielny. :-)

0

tez chce cos takiego zrobic (bo schemat byl w chipie...)...
jeszcze nie wiem, bo nie probowalem ale wydaje mi sie...:

z tego co widze nie zalezy ci na otrzymywaniu adresu urzadzenia i numeru procedury (jakos tak :-/ ...)

sproboj po prostu odebrac sygnal z COM'a (nie musze chyba mowic, ze najlepiej uzyc komponentu ?) i porowanc go z tym, ktory znajduje sie w bazie...

Jek bedzie dzialac, to -jesli mozesz- wyslij mi maila...

[cya] [browar]

0

Jeśli chcesz samodzielnie, to na stronie girdera jest wtyczka do niego napisana w delphi, która odbiera właśnie sygnały z odbiornika podczerwieni. Wykorzystuje jedynie winapi. Mi jednak ona działała kilka minut, potem z niewyjaśnionych przyczyn przestała (chociaż igorplug działał cały czas), tak więc spacjalnie nie polecam.

0

cimak napisał odebrać z com-a przy pomocy komponentu ja używam
kodu z książki rs 232c-praktyczne programowanie -dane odebrane
zapisuje jak stringa do tablicy
oto kod

function Read_Comm(hCommDev: THANDLE; Buf_Size: DWORD): integer;
var
nNumberOfBytesToRead: DWORD;
begin
ClearCommError(hCommDev, Errors, @Stat);
if (Stat.cbINQue >0) then
begin
if (Stat.cbINQue > Buf_Size) then
nNumberOfBytesToRead := Buf_Size
else
nNumberOfBytesToRead := Stat.cbInQue;
ReadFile(hCommDev,Buffer_I, nNumberOfBytesToRead, Number_Bytes_Read,
NIL);
end
else
begin
Number_Bytes_Read := 0;
Read_Comm :=0
end;
end;
{procedure TPortBox.OpenCommClick(Sender: TObject);
begin
Case RadioGroup1.ItemIndex of
0:lpFileName:= 'COM1';
1:lpFileName:= 'COM2';
2:lpFileName:= 'COM3';
end;
hCommDev:=CreateFile(lpFileName, GENERIC_READ or GENERIC_WRITE,0,
NIL, Open_EXISTING, 0,0);
if (hCommDev <>INVALID_HANDLE_VALUE) then
begin
SetupComm(hCommDEv, cbInQueue, cbOutQueue);
dcb.DCBlength := sizeof(dcb);
GetCommState(hCommDev, dcb);

    Case RadioGroup2.ItemIndex of
     0:dcb.BaudRate := CBR_2400;
     1:dcb.BaudRate := CBR_1200;
     end;
     dcb.Flags := DTR_CONTROL_HANDSHAKE or dcb_fParity;
     dcb.Parity := NOPARITY;
     dcb.StopBits :=ONESTOPBIT;
     dcb.ByteSize := 8;

     SetCommState(hCommDEV,dcb);
     GetCommMask(hCommDev, fdwEvtMask);
     SetCommMask(hCommDev, EV_TXEMPTY );
      end
    else
      case hCommDev of
      IE_BADID:MessageDlg('Niewlasciwa nazwa portu '
      +lpFileName+' lub jest on aktywny', mtError,[mbOK],0);
      end;
    Timer1.Enabled:=true;
    Button4.Enabled:=false;
    end;

procedure TportBox.CloseCommClick(Sender: TObject);
begin
CloseHandle(hCommDev);
Application.Terminate;
end;}
end.

u mnie działa delphi5 i 7


0

wrrr formatuj kod/uzywaj znacznikow code lu przynajmniej delphi :[

1 użytkowników online, w tym zalogowanych: 0, gości: 1