Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.01 c
11-33087
_Ed_
2002-12-06 18:07
2003.08.11
Hicon ---> HBitmap


14-33361
UserName
2003-07-23 20:37
2003.08.11
Задачка...


3-33066
steelpunk
2003-07-17 17:10
2003.08.11
В DbGrid вместо русских букв диез(#)


6-33249
drnet
2003-06-06 03:58
2003.08.11
TWebBrowser не отрабатывает OnBeforeNavigate под XP


14-33326
alxx
2003-07-25 11:08
2003.08.11
Абстрактные методы в C++




   Наверх