Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.08.11;
Скачать: CL | DM;

Вниз

Com-port!!!   Найти похожие ветки 

 
8UnG   (2003-07-22 21:31) [0]

Задача такая : нужно посылать и принимать байтики на порт com1.
Помогите плиз...


 
Archon Kazansky ©   (2003-07-23 09:51) [1]

http://www.happytown.ru/prog/practika/com_win32.html


 
VJack   (2003-07-24 09:24) [2]

Компоненты - ответ очевиден. Лично я могу порекомендовать TApdComPort от SysTools.
Пример:
procedure TGuard.ComPortTriggerAvail(CP: TObject; Count: Word);
var
i: Word;
begin
try
for i := 1 to Count do
sComString := sComString + IntToHex(Ord(ComPort.GetChar),2);
except
on Exception do begin
sCurrentError := DateTimeToStr(Now) + " ComPortTriggerAvail error: Unable to GetChar from port: " + Exception(ExceptObject).Message;
LogMessage(sCurrentError);
SaveDataToFile(sErrorStore,sCurrentError);
if (rAppData.fSendMail) then thMailSender := TMailSender.Create(False);
end;
end;
end;

procedure TGuard.ComPortTriggerTimer(CP: TObject; TriggerHandle: Word);
var
dtNow: TDateTime;
sStart, sEnd, sTmp: String;
begin
try
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//first timer - checking controller work
if TriggerHandle = ComTimerTriggerHandle then begin
try
dtNow := Time;
sStart := "08:00:00";
if (dtNow - dtLastCall > StrToTime("00:" + IntToStr(rAppData.iNoCalls) + ":00")) then begin
if(DayOfWeek(Now) <> 1) then begin
case DayOfWeek(Now) of
2..6: sEnd := "19:00:00";
7: sEnd := "16:00:00";
end;//case
if((dtNow >= StrToTime(sStart)) And (dtNow <= StrToTime(sEnd))) then begin
sTmp := rAppData.sNetAddress + rsNoCallsS + IntToStr(rAppData.iNoCalls) + rsNoCallsE + DateTimeToStr(Now);
ExecuteProgram(rsNetSend, sTmp);
SaveDataToFile(sErrorStore, sTmp);
end;
end;//DayOfWeek
end;
finally
ComPort.SetTimerTrigger(ComTimerTriggerHandle,COM_TMR_INTRV,True);
end;
end;//TriggerHandle = ComTimerTriggerHandle
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//second timer - main working cycle goes here
if TriggerHandle = ComWorkTimerTriggerHandle then begin
try
sComString := Trim(sComString);
if sComString <> "" then begin
InsertData(sComString);
sComString := "";
end;
if ComPort.OutBuffFree >= OUT_BUFFER_FREE then begin
//initiate data transfer from controller
ComPort.PutBlock(bGet,High(bGet));
dtLastCall := Time;
end;
finally
ComPort.SetTimerTrigger(ComWorkTimerTriggerHandle,rAppData.iTicks,True);
end;
end;//TriggerHandle = ComWorkTimerTriggerHandle
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
except
on Exception do begin
sCurrentError := DateTimeToStr(Now) + " ComPortTriggerTimer error: " + Exception(ExceptObject).Message;
LogMessage(sCurrentError);
SaveDataToFile(sErrorStore,sCurrentError);
SaveDataToFile(sErrorStore,"sComString = " + sComString);
end;
end;//try
end;



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

Текущий архив: 2003.08.11;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.014 c
14-33353
Sania
2003-07-25 13:23
2003.08.11
Инсталляция InterBase


14-33312
AlexRush
2003-07-24 14:43
2003.08.11
Встраиваемый Движок Flash.


1-33198
МалОй
2003-07-28 21:38
2003.08.11
SubMenu в MainMenu


3-33073
Ivan1973
2003-07-18 20:49
2003.08.11
TADOTable


8-33230
valery_f
2003-04-17 18:08
2003.08.11
ADPCM compression