| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > 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, 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 |
не надо городить потоки , оно сообщит само когда есть данные |