Форум: "Основная";
Текущий архив: 2005.10.02;
Скачать: [xml.tar.bz2];
ВнизПауза без остановки процесса типа Sleep Найти похожие ветки
← →
Tor © (2005-09-13 16:30) [0]Всем доброго!
Собственно вопрос уже задан. Отправляю комманды в ком порт и нужно вставить паузу между этими коммандами, что бы устройство на другом конце могло обработать предыдущею комманду до конца и вернуть ответ. Подошелбы и Sleep но он тормозит процес, а без этого получение ответа становится не возможным.
Мож кто чего подскажет?
Спасибо!
← →
Reindeer Moss Eater © (2005-09-13 16:35) [1]Подошелбы и Sleep но он тормозит процес
А тебе разве не затормозить надо, а ускориться?
← →
Германн © (2005-09-13 16:39) [2]Ды ты получи ответ, а потом уж шли новую команду.
← →
begin...end © (2005-09-13 16:40) [3]
> Подошелбы и Sleep но он тормозит процес
Он тормозит не процесс, а поток :)
← →
Tor © (2005-09-13 16:45) [4]юзаю TApdComPort для работы с com-портом. все общение реализовано на тригерах, т.е. тригер срабатывает на определенный байт. Так вот если ждать ответа в цикле что бы потом запустить следующею комманду то тригер не сработает, короче говоря зациклится прога. Если заслипеть то тоже тригер не сработает. Сам ответ не нужен. Лана похоже придется юзать апишные таймеры. Возможно с самого начала нужно было работу с com-портом в отдельный поток сувать.
Буду рад дальнейшим предложениям.
← →
Reindeer Moss Eater © (2005-09-13 16:48) [5]Зачем же тебе цикл, если у тебя срабатывает триггер в нужный момент?
В обработчике триггера и делай свою работу.
← →
Tor © (2005-09-13 16:50) [6]Можно, но комманды разные, а тригер один. Придется проверять какая комманда была предыдущей, что бы знать какая следующая.
← →
Reindeer Moss Eater © (2005-09-13 16:51) [7]Зашибись.
А типа в триггере ты не знаешь на какую команду он сработал.
← →
Kolan © (2005-09-13 16:54) [8]Два потока один читает другой пишет? Хотя [4] не очень понял.
Возможно с самого начала нужно было работу с com-портом в отдельный
Это обязательно...
← →
DesWind © (2005-09-13 16:55) [9]Может легче взять другой компонент, где реализовано асинхронное чтение и особо не парится?
← →
DesWind © (2005-09-13 16:59) [10]Tor © (13.09.05 16:30)
т.е. тригер срабатывает на определенный байт.
Хотя оно там наверняка реализовано уже.
← →
Tor © (2005-09-13 17:03) [11]Асинхроное не подойдет, кассовый не поймет.
В тригере не знаю, он срабатывает на конечный байт, потом вызывается функция которая дописывает этот конечный байт в общий буфер. По ответу не возможно определить какая предыдущая ком. была, т.к. ответ это состояние кассового. Допустим какой режим активизирован узнаю, а вот зарегистрирован какойнить кассир или нет, это уж фиг. Можно конечно последнюю ком-ду хранить в какойнить глобальной переменной, но мне кажется это не очень красиво.
Да лана народ проще заюзать пару апишных таймеров между коммандами. Темболее в этой проге их всего 4, т.е. таймера будет 3. Это проще чем приписывать отдельный поток или переписывать усю прогу.
← →
Reindeer Moss Eater © (2005-09-13 17:03) [12]Возможно с самого начала нужно было работу с com-портом в отдельный
Это обязательно...
Ерунда это.
Потому что тогда придется крутить тупой цикл ожидая срабатывания триггеров. Либо отказываться от них вообще.
← →
Tor © (2005-09-13 17:06) [13]4 Kolan
Нет один с vcl работает другой работает с com-портом и пишет и ситает, к общим данным через критические секции обращаться мона.
← →
Reindeer Moss Eater © (2005-09-13 17:06) [14]По ответу не возможно определить какая предыдущая ком. была
Флаги надо вводить.
Либо отказываться от триггеров и реализовывать линейный алгоритм с синхронным чтением.
← →
Reindeer Moss Eater © (2005-09-13 17:08) [15]Да лана народ проще заюзать пару апишных таймеров между коммандами.
Сам TapdComPort порт может взвести у себя таймер.
← →
Tor © (2005-09-13 17:08) [16]4 Reindeer Moss Eater
Возможно, но тогда это реализовано уже в компоненте, но скорее всего там это по другому.
Я же работаю с этим тригером как с таймером, ведь у тригера тож есть тайм-аут.
← →
Tor © (2005-09-13 17:11) [17]4 Reindeer Moss Eater
Смотрел в хелпе ничего подобного про таймеры нет. Нет только тригер. Он срабатывает на обпределенный байт поступающий в порт с той стороны или же выводит месагу о тайм-ауте.
← →
Reindeer Moss Eater © (2005-09-13 17:11) [18]Не понимаю твоих проблем.
В триггере ты всегда знаешь, на что он сработал.
А глобальный флаг поможет узнать какая была последняя команда.
Чего еще надо - не понимаю.
← →
Reindeer Moss Eater © (2005-09-13 17:13) [19]Смотрел в хелпе ничего подобного про таймеры нет.
Это тоже триггер. Кроме триггеров на данные есть триггера на статус с время.
← →
Tor © (2005-09-13 17:19) [20]4 Reindeer Moss Eater на [18] Если так, тогда уже ничего.
Но я уже написал через апишные тригеры. Не хочу связывать этот модуль с остальной частью программы, т.к. этот модуль общий на нескуолько прог. да и сами по себе они не большие.
← →
DesWind © (2005-09-13 17:19) [21]Tor © (13.09.05 17:03) [11]
Чего он не поймет?
У тебя я так понял режим общения с кассовым аппаратом синхронный(запрос - ответ), а пользователь тычит в кнопки когда захочет. На мой взгляд надо делать очередь запросов ответов и обрабатывать их в отдельной нити. Эт если я правильно задачу понял
← →
Tor © (2005-09-13 17:28) [22]4 DesWind
Спасибо об этом я не подумал. надо это тоже предусмотреть :)
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2005.10.02;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.004 c