Главная страница
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.04 c
15-1137350050
Андрей К
2006-01-15 21:34
2006.02.05
Подскажите аспирантуры в Москве...


2-1137402207
Делфёст
2006-01-16 12:03
2006.02.05
Печать HTML таблиц без разрыва - это возможно?


15-1137436983
stef
2006-01-16 21:43
2006.02.05
Госэкзамен


2-1137495060
ilya39
2006-01-17 13:51
2006.02.05
ColumnHeader в FCL


1-1136332293
JazY
2006-01-04 02:51
2006.02.05
Как отобразить Excel файл в своей программе?