Форум: "Система";
Текущий архив: 2002.10.24;
Скачать: [xml.tar.bz2];
ВнизПомогите с COM портом!!!!!!!!!!!!!!!! Найти похожие ветки
← →
Андрей_Р (2002-07-23 00:22) [0]В общем моя проблема: к компу подключено устройство через COM порт, при посылке команд устройству, оно посылает ответ в виде "ok", т.е. команда получена, но программа через раз получает этот ответ. Как мне "зациклить" посылку команды с машины, чтобы получать ответ всегда, потому-что без ответа устройство не реагирует на команды.
← →
Aleks1 (2002-07-23 03:26) [1]"Пойди туда, не знаю куда, принеси то, не знаю что."
Вот суть твоего вопроса.
И какой же ответ ты ждешь?
← →
DC-AC (2002-07-23 11:11) [2]Что за устройство ? Задействует только RXD/TXD COM-порта ? Какими методами/командами/компонентами получаете ответ от устройства ? Как организован процесс опроса (WaitCommEvent, TTimer, while ... do ...) ?
← →
Андрей_Р (2002-07-25 11:47) [3]у моего компонента есть событие на получение данных, которое постоянно работает, если я посылаю данные путем перемещения TrackBar"а, а если ответ не пришел, то как мне "запомнить" команду, которую я передал?
Например:
...
Case TrakBar.Position of
-5 :
begin
CpDrv.SendChar("r");// Если устройство не отвечает,
CpDrv.SendByte($0A);// как повторить команду?
end;
...
← →
erik (2002-07-25 12:13) [4]Откажись от асинхроности и облегциш свою жизнь. Делай сначала
:Retry
SendCommand (WriteFIle)
Buf := ReadNofification (ReadFile)
if Buf <> "ok" then goto Retry
Это приблезительный алгоритм.
← →
Coalycat (2002-07-25 12:15) [5]Обычно у устройства есть время срабатывания. Почитай документацию, может там временные диаграммы указаны и есть интервалы между командами. У меня такое было, пришлось sleep ставить перед выполнением команды.
← →
Андрей_Р (2002-07-25 12:35) [6]To eric : Так вот именно, я получаю ответ в другом событии, мне необходимо асинхронно обрабатывать.
To Coalycat : Вся документация известна, т.к. устройство наше, для него нужна прога. Интервалы между командами тооже имеются, если усройство посылает enable, то оно готово к приему команд, а если disable, то оно выполняет некие операции.
← →
harismatik (2002-07-25 17:26) [7]Используй компоненты. Например ComPortLibrary с сайта TorryDelphiPages
← →
Андрей_Р (2002-07-26 11:55) [8]To harismatik : Спасибо, итак использую компонент оттуда
← →
DC-AC (2002-07-26 13:56) [9]Позицию тракбара (а точнее байт, который нужно передать) ИМХО нужно хранить в какой-нибудь переменной. Если ответ от устройства пришёл, то в обработчике события компонента работы с портом посылаем байт из переменной, а её значение обнуляем. Когда двигаешь тракбар, по OnChange проверяй значение переменной, если не нуль - или жди или делай, что тебе заблагорассудится.
С многобайтовыми посылками/ответами - чуть сложнее, но идея та же.
Кстати, чем выше скорость обмена с твоим устройством - тем лучше для юзателя программы. ИМХО.
← →
Andrew_R (2002-08-19 21:50) [10]to DC-AC: спасибо, работает как часы!
Страницы: 1 вся ветка
Форум: "Система";
Текущий архив: 2002.10.24;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.007 c