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

Вниз

Помогите с 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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.021 c
1-78488
Lony
2002-10-13 14:23
2002.10.24
Как из этих функций сделать модуль или как их использовать?


1-78504
XPatriot()
2002-10-13 17:59
2002.10.24
Работа с Image м.


1-78502
Landgraph
2002-10-12 13:07
2002.10.24
C++ Builder DLL + Delphi App


14-78672
Smiths
2002-09-30 21:39
2002.10.24
Господа программисты, а Вам не кажется...


7-78674
Max2000
2002-08-09 17:50
2002.10.24
Может я и опоздал с вопросом но все же....