Вниз
Скачать: 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.45 MB
Время: 0.01 c
14-33329
GSV_
2003-07-23 21:41
2003.08.11
Трудно быть программистом.


1-33106
Kiril
2003-07-29 22:31
2003.08.11
Есть ли готовая процедура, компонента (PosWithMistakes)?


1-33105
lord
2003-07-29 01:49
2003.08.11
чтение реестра


1-33149
zam
2003-07-28 11:10
2003.08.11
Работа с Toolbar


6-33236
napil
2003-06-01 04:14
2003.08.11
Потоковое AUDIO




   Наверх