Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.02.05;
Скачать: [xml.tar.bz2];

Вниз

Циклический опрос 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.44 MB
Время: 0.012 c
15-1136987158
Lexer
2006-01-11 16:45
2006.02.05
Компьютер не вреден для здоровья


1-1136037580
Баяр
2005-12-31 16:59
2006.02.05
как сделать, чтоб не гас монитор


15-1136991245
VEG
2006-01-11 17:54
2006.02.05
На сколько легально работают MP3 архивы типа delit.net?


15-1137202446
НТВ
2006-01-14 04:34
2006.02.05
Откровения коменданта Ирака


2-1137109613
Люди
2006-01-13 02:46
2006.02.05
Как узнать существует ли файл на сайте





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский