Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Система";
Текущий архив: 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.009 c
14-78595
cyborg
2002-09-29 22:52
2002.10.24
---|Ветка была без названия|---


1-78503
XPatriot()
2002-10-13 20:13
2002.10.24
Работа с кнопками.


1-78422
User0
2002-10-15 15:42
2002.10.24
Почему в Delphi работает а в C++ нет ?


1-78486
EleKtroNik
2002-10-11 22:52
2002.10.24
FileWrite


14-78661
Anatoly Podgoretsky
2002-10-02 00:19
2002.10.24
Отдел кадров, анкеты





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский