Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2004.07.18;
Скачать: [xml.tar.bz2];

Вниз

IrDA   Найти похожие ветки 

 
SniZ ©   (2004-06-06 00:35) [0]

Может есть какой нить компонент для передачи данных по ИК?
Мне нужно передовать или принимать допустим файл по ИК!


 
я думаю вы меня помните   (2004-06-06 11:30) [1]

Работа с ИК портом аналогична работе с RS232 (COM-порт). Компонентов для этого насоздавали туеву хучу, даже, наверное, на этом сайте лежат.
Только всеравно лучше ручками на winapi.
Имя файла обычно - "IrDA", в WinNT на него точно выделяется виртуальный COM-порт (например "COM5").


 
GanibalLector ©   (2004-06-06 13:55) [2]

Соглашусь с "я думаю вы меня помните "
WinApi рулят...
Если нужен сабж,скажи.Я не жадный


 
SniZ ©   (2004-06-06 15:28) [3]

2 GanibalLector:
дай


 
GanibalLector ©   (2004-06-06 19:45) [4]

ну...даю

function LStr(const Source:Ansistring;Count:Integer):Ansistring;
begin
 Result:=Copy(Source,1,Count);
end;

function OpenComm(Mode:AnsiString):THandle;
var
 DCB : TDCB;
 TOut: TCommTimeouts;
 I:Integer;
 Bfr:AnsiString;
begin
 Bfr:=Mode;
 UniqueString(Bfr);
 I:=Pos(":",Bfr)-1;
 if I<=0 then I:=4;
 Result := CreateFile(PChar(LStr(Bfr,I)),GENERIC_READ or GENERIC_WRITE,
        0,nil,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0);

 GetCommState( Result, DCB) ;
 BuildCommDCB(PChar(Bfr),DCB);
 DCB.EvtChar := #13;
 SetCommState( Result, DCB) ;
 //
 TOut.ReadIntervalTimeout         := MAXDWORD;
 TOut.ReadTotalTimeoutMultiplier  := 0;
 TOut.ReadTotalTimeoutConstant    := 0;
 TOut.WriteTotalTimeoutMultiplier := 0;
 TOut.WriteTotalTimeoutConstant   := 0;
 SetCommTimeOuts( Result, TOut);
   SetCommMask(Result,EV_RLSD OR EV_RXFLAG);
   PurgeComm(Result,PURGE_TXCLEAR);      //clear transmit buffer
   PurgeComm(Result,PURGE_RXCLEAR);      //clear receive buffer
end;

function ReadComm(Handle:THandle; var Bfr:AnsiString):Integer;
var
 I,J:DWord;
begin
 Result:=0;
 J:=Length(Bfr);
 repeat
   ReadFile(Handle, Bfr[Result+1], J-DWord(Result), I, nil);
   Inc(Result,Integer(I));
  if DWord(Result)=J then break;
 until I=0;
end;

function WriteComm(Handle:THandle; const Bfr:AnsiString):Integer;
var
 I,J:DWord;
begin
 Result:=0;
 J:=Length(Bfr);
 repeat
   WriteFile(Handle, Bfr[Result+1], J-DWord(Result), I, nil);
   Inc(Result,Integer(I));
   if DWord(Result)=J then break;
 until I=0;
end;

function CloseComm(Handle:THandle):boolean;
begin
CloseHandle(Handle);
result:=true;
end;

function SetRxTime(Handle:THandle; const TimeC,TimeM:Integer):Boolean;
var
 TOut:TCommTimeouts;
begin
 if (TimeC=0) AND (TimeM=0) then
   TOut.ReadIntervalTimeout       := MAXDWORD
 else TOut.ReadIntervalTimeout    := 0;
 TOut.ReadTotalTimeoutMultiplier  := TimeM;
 TOut.ReadTotalTimeoutConstant    := TimeC;
 TOut.WriteTotalTimeoutMultiplier := 0;
 TOut.WriteTotalTimeoutConstant   := 0;
 Result:=SetCommTimeOuts(Handle, TOut);
end;



Как работать:(это кусок моего кода)
function initcomm(co:string;baud:string;var outst:string;var par:string):boolean; stdcall;
 var st,str,aa:string;
 count,t_out:integer;
 begin
 count:=0;
 Handle:=OpenComm("COM"+co+":BAUD="+baud+" PARITY=N DATA=8 STOP=1");
 if Handle=INVALID_HANDLE_VALUE then begin result:=false;exit;end;
 if GetFileType(Handle)<>FILE_TYPE_CHAR then begin result:=false;exit;end;
 setrxtime(handle,100,25);   //100,25
str:="";
setlength(st,1);
   if readcomm(Handle,st)=1 then begin
   if st<>chr($0d) then begin str:=str+st;
   //... ну и так далее

надеюсь понятно...



Страницы: 1 вся ветка

Форум: "WinAPI";
Текущий архив: 2004.07.18;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.034 c
3-1087997171
Lacky
2004-06-23 17:26
2004.07.18
Добавление поля с Примари кей


14-1088431954
ййй
2004-06-28 18:12
2004.07.18
File and String


1-1088667459
NAlexey
2004-07-01 11:37
2004.07.18
Не срабатывает событие OnMeasureItem у ListBox


4-1086339953
Samael6
2004-06-04 13:05
2004.07.18
ХР Интерфейс программы в Дельфи6


1-1088825202
zac
2004-07-03 07:26
2004.07.18
Не запускать два раза





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский