Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Системное программирование и WinAPI > Чтение порта в потоке - как лучше?


Автор: Korman 28.9.2006, 09:22
У меня такая проблема.. не знаю как мне к ней подступиться... Я читаю с железки данные в потоке... пише в едите команду... жму кнопочку (тут запускается поток) и моя команда уходит порту, жду Sleep(500)  и читаю данные с порта. Всё хорошо когда команды не связаны с поиском данных в железке... но если надо что-то найти 0,5 с - оказывается недостаточным!!!  железка долго ищет данные и я не могу их считать... временни не хватает! 
  На разные запросы - этой железки треба разное время! ВОПРОС: Как мне организовать чтение данных с железа так чтобы всегда получать все данные - не думая о том, какое время нужно железу для ответа.  Может есть смысл создать второй поток - для чтения.??? Читаю синхронно. Помогоите плиз....

Автор: _hunter 28.9.2006, 10:49
это, вообще-то, железки проблема -- она должна уметь рапортовать о готовности к приему/передаче данных.
а может она умеет это делать, но ты об этом не знаеш?..

Автор: Romikgy 28.9.2006, 10:52
Цитата(Korman @  28.9.2006,  08:22 Найти цитируемый пост)
Читаю синхронно

а че не асинхроно?

Автор: Korman 28.9.2006, 10:57
Когда я опрашиваю железку через гипертерминал, она пишет там Serach.. потом думает от 3 до 7 сек и выводит инфу. Я глянул документацию.. там по этому повыоду ничего не сказано.  
   Если через гипер работает и у меня тоже должна.. понимаете..
  А чем лучше читать асинхронно ? что я выйграю ?

Добавлено @ 11:00 
и ещё я так глянул... может здесь можно как то WaitCommEvent задействовать ??? как вы думаете ?

Автор: _hunter 28.9.2006, 11:31
так в чем, тогда проблема?
сразу после записи читай. в зависимости от метода чтения вункция или залочится (до появления данных) или вернет "нет данных" (в этом случае читай еще раз)
еще это:
http://www.izone.kiev.ua/articles/delphi/16/282.htm
почитай (там delphi, но API, так что понять, думаю, будет не сложно)

Автор: Romikgy 28.9.2006, 12:20
Цитата(Korman @  28.9.2006,  09:57 Найти цитируемый пост)
А чем лучше читать асинхронно ? что я выйграю ?

не надо городить потоки , оно сообщит само когда есть данные

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)