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

Вниз

Циклический опрос COM порта   Найти похожие ветки 

 
M@X_1   (2006-01-10 16:59) [0]

Доброго время суток!
Подскажите, как правильно циклически опрашивать COM порт(пользуюсь TVaComm)

Есть железяка, которая передает данные при посылке на нее комманды
Делаю:



procedure TfMain.Timer1Timer(Sender: TObject);
begin
  Comm1.WriteBuf(WriteBuffer, 23);
  Sleep(100);
  Comm1.ReadBuf(ReadBuffer,23);
end;


Чего то отвратительно работает.
Если вместо Sleep(100) использую ручками нарисованную Delay(100) - работает лучше, но все равно нестабильно.

А послать комманду отдельно и привязаться к событию получения первого символа OnRxChar чего то никак не получается.


procedure TfMain.Comm1RxChar(Sender: TObject; Count: Integer);
begin
  Comm1.ReadBuf(ReadBuffer,23);
end;



Чего не так делаю


 
YurikGL ©   (2006-01-10 17:13) [1]

Я делал примерно так:

Command1wasSend:boolean
GlobalST:string;

Посылаешь комманду, и выставляешь глобальный флаг типа
Comm1.WriteBuf("...")
Command1wasSend:true;
GlobalST:="";

В процедуре
procedure TfMain.Comm1RxChar(Sender: TObject; Count: Integer);
begin
 //автоматически вызовется, когда придут данные, если я правильно помню
 Comm1.ReadBuf(ReadBuffer,23);
 //кстати, что за число 23?
 if Command1wasSend then GlobalST:=GlobalST+ReadBufferl;

 if "признак окончания ответа от Command1" then begin
   Command1wasSend:=false;
   Обработать строку GlobalST учитывая то, что там хранится весь ответ от  Command1
end;
end;


 
M@X_1   (2006-01-17 11:46) [2]

Да вот так что  то не получается.

23 - количество принимаемых/передаваемых байт.

OnRxChar срабатывает когда первый байт из 23 в буфере и ReadBuf считывает именно один, после этого следует опять событие OnRxChar с остальными 22 байтами.

А по скольку опрос циклицццский по таймеру в буфере уже могут быть следующие 23 байта ...

Как это преодолеть ?



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

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

Наверх




Память: 0.47 MB
Время: 0.05 c
3-1133932685
DelphiN!
2005-12-07 08:18
2006.02.05
Out of Memory error After Post in FB table


15-1137406269
Александр__
2006-01-16 13:11
2006.02.05
Углубленное знание чего то одного или базовое многого?


2-1137447930
Змей
2006-01-17 00:45
2006.02.05
Шрифт в popup & main menu


4-1132644725
Pank83
2005-11-22 10:32
2006.02.05
Отследить запуск процесса


3-1133951591
msgipss
2005-12-07 13:33
2006.02.05
Каким образом можно работать из delphi с полем clob БД Oracle