Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
1-1126172544
Makcim
2005-09-08 13:42
2005.10.02
атрибуты файла


3-1124265195
IncRe
2005-08-17 11:53
2005.10.02
Создание таблицы через хранимую процедуру


1-1126379116
Grol
2005-09-10 23:05
2005.10.02
Поставить окно приложения на передний план


3-1124241947
Strech
2005-08-17 05:25
2005.10.02
BLOB поля в dbf через ADO


1-1126321927
Гриха
2005-09-10 07:12
2005.10.02
Управление функциональными клавишами





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