Форум: "Основная";
Текущий архив: 2006.02.19;
Скачать: [xml.tar.bz2];
ВнизЦиклический опрос COM порта Найти похожие ветки
← →
belenkov © (2006-01-17 17:10) [0]Доброго время суток уважаемые Мастера!
Повторно хочу задать вопрос о циклическом опросе (по таймеру) железяки, подключенной к COM порту.
В железяку засылается команда из 23 байт, железяка должна выдать ответ тоже 23 байта.
Пользуюсь TViaCom (собственно один из множества аналогичных)
var RBuf, Buf: Array[0..22] of Byte;
procedure TfMain.Timer1Timer(Sender: TObject);
begin
Comm1.WriteBuf(Buf,23); // Посылаем команду
Sleep(100); //Ждемс ..
Comm1.ReadBuf(RBuf,23);// Читаем ответ
end;
Работает отвратительно. Посоветуйте плиииз как правильно сделать.
← →
MBo © (2006-01-17 17:33) [1]читать нужно по событию прихода данных с порта. Есть у этого класса такое?
← →
belenkov © (2006-01-17 18:33) [2]Есть OnRxChar
Но он срабатывает по приему первого байта
← →
Darvin © (2006-01-17 19:10) [3]Организуй поток TThread и читай в нем :
Comm1.WriteBuf(Buf,23); // Посылаем команду
Comm1.ReadBuf(RBuf,23);// Читаем ответ
Кстати, зачем задержка?
Sleep(100); //Ждемс ..
Она не нужна. Умный компонент не вернет управление, пока не прочитает твои 23 байта
← →
belenkov © (2006-01-17 19:11) [4]Если быть точнее в железяке 2 канала
Comm1.WriteBuf(код опроса канала 1,23);
Comm1.ReadBuf(RBuf,23);//
//проводим действия с данными 1 канала
Comm1.WriteBuf(код опроса канала 2,23);
Comm1.ReadBuf(RBuf,23);//
//проводим действия с данными 2 канала
← →
Darvin © (2006-01-17 19:14) [5]>Если быть точнее в железяке 2 канала
Это ничего не меняет
← →
belenkov © (2006-01-17 19:15) [6]Если можно пример, как организовать поток
← →
Darvin © (2006-01-17 19:20) [7]TThread + F1
← →
belenkov © (2006-01-17 19:23) [8];-) спасибо
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2006.02.19;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.043 c