Главная страница
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.015 c
14-33350
nv-vetal
2003-07-23 18:34
2003.08.11
Бесплатный хостинг с возможностью использовать PHP?


14-33342
Zigs
2003-07-25 11:44
2003.08.11
Как просмотреть какие функции лежат в DLL?


7-33376
л
2003-05-28 06:28
2003.08.11
Поток обработки данных СОМ-порта, в чем дело?


1-33166
KSergey
2003-07-28 14:27
2003.08.11
По поводу TInplaceEdit в TCustomGrid


14-33295
LiLa Ananda
2003-07-23 08:47
2003.08.11
Требуются люди, желательно, в огромном количестве!:))