Страница: 1 | 2 |
Вопрос: Ожидание данных из порта
Добавлено: 25.06.04 13:27
Автор вопроса: sYstEmiZer | ICQ: 280647023
Как грамотно организовать ожидание данных из COM порта? (через mscomm). Например, на порту сидит сканер штрих-кодов, программа висит в трее - нужно чтобы при сканировании программа открылась и выполнила некоторые действия.
Причем нужно, чтобы в режиме ожидания программа не потребляла много ресурсов.
Возможны ли варианты без таймера?
Ответы
Всего ответов: 17
Номер ответа: 1
Автор ответа:
Djoni
Вопросов: 6
Ответов: 35
Профиль | | #1
Добавлено: 25.06.04 15:13
На мой взгляд самый оптимальный вариант-делать через прерывание, т.е. если данные передаются не синхронно или в режиме послал-задержка-получил, то прерывание самое то. Я правда в компе с ним не работал, но есть книжка VB и API или что-то такое не помню уже там немного про это есть.
Номер ответа: 2
Автор ответа:
sYstEmiZer
ICQ: 280647023
Вопросов: 16
Ответов: 45
Профиль | | #2
Добавлено: 25.06.04 15:22
Где бы примерчик найти?
Номер ответа: 3
Автор ответа:
Djoni
Вопросов: 6
Ответов: 35
Профиль | | #3
Добавлено: 25.06.04 15:36
к сожалению я не знаю где найти пример, я сам в свое время этим озадачивался, но сделал по задержке, думал после отладки переделаю, когда комплекс заработал переделывать расхотелось
нет ничего более постоянного, чем временное
Номер ответа: 4
Автор ответа:
sYstEmiZer
ICQ: 280647023
Вопросов: 16
Ответов: 45
Профиль | | #4
Добавлено: 25.06.04 15:43
Можешь кусок кода привести - как ты у себя по задержке делал?
Номер ответа: 5
Автор ответа:
Chill
ICQ: 554200
Вопросов: 101
Ответов: 343
Профиль | | #5
Добавлено: 25.06.04 16:00
CreateEvent и в отдельном потоке жди появления события...
Номер ответа: 6
Автор ответа:
sYstEmiZer
ICQ: 280647023
Вопросов: 16
Ответов: 45
Профиль | | #6
Добавлено: 25.06.04 16:04
А можно чуть подробнее или ссылочку. Как можно выделить отдельный поток под это?
Номер ответа: 7
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #7
Добавлено: 25.06.04 16:13
> CreateEvent и в отдельном потоке жди появления события...
Chill, не расслабляться! не забывать что это VB, а не Си... В VB c потоками дело обстоит плохо... выдетают часто, если не сказать - постоянно!
Номер ответа: 8
Автор ответа:
Chill
ICQ: 554200
Вопросов: 101
Ответов: 343
Профиль | | #8
Добавлено: 25.06.04 16:16
да? просто никогда с потоками в Vb не работал... думал все равно какой язык юзать...
а почему так происходит?
Номер ответа: 9
Автор ответа:
@CyRax PTR
ICQ: 204447456
Вопросов: 28
Ответов: 664
Web-сайт:
Профиль | | #9
Добавлено: 25.06.04 16:38
Вроде из за виртуальной машины.
Номер ответа: 10
Автор ответа:
@CyRax PTR
ICQ: 204447456
Вопросов: 28
Ответов: 664
Web-сайт:
Профиль | | #10
Добавлено: 25.06.04 16:49
Вылетают только в экзешнике. Я кстати видел пример нормально работающего потока в VB, но где уже не вспомню. Если хорошо покопаться в этом форуме, то можно и ссылку найти.
Номер ответа: 11
Автор ответа:
sYstEmiZer
ICQ: 280647023
Вопросов: 16
Ответов: 45
Профиль | | #11
Добавлено: 25.06.04 16:55
Я бы покопался, но без поиска как без рук
Номер ответа: 12
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #12
Добавлено: 25.06.04 17:08
работает откомпилленый ехе... вот только если его перекомпилить самому - вылетает тут же, так что поток тут тебе не товарищь
Номер ответа: 13
Автор ответа:
Djoni
Вопросов: 6
Ответов: 35
Профиль | | #13
Добавлено: 25.06.04 17:31
sYstEmiZer
>Можешь кусок кода привести - как ты у себя по задержке делал?
я что тут такого? посылаешь данные-задержка(я использовал Sleep)-смотришь данные в буфере(далее я проверял пакет на целостность и т.д.)
Но у меня немного другая задача была у меня мастером(всегда) был комп, а слейвом(всегда) моя плата и инициировал передачу только комп, т.е. железка не могла сама ни с того ни с сего начать посылать данные.
А у тебя твой сканер совершенно в любое время може взять и послать данные, поэтому здесь либо постоянно опрашивать порт, либо по прерыванию, но с прерыванием надо эксперементировать, я выходные посмотрю книжку и если что-то стоящее найду, то сообщу.Это более красивое решение.
Номер ответа: 14
Автор ответа:
@CyRax PTR
ICQ: 204447456
Вопросов: 28
Ответов: 664
Web-сайт:
Профиль | | #14
Добавлено: 25.06.04 18:07
>вот только если его перекомпилить самому - вылетает тут же
- Наверное у тебя другой пример был. Он сохранился у тебя?
Номер ответа: 15
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #15
Добавлено: 25.06.04 18:19
Эх, CyRax, попадет нам от админов, в офф-топ ,по-тихонечку, уходим
> - Наверное у тебя другой пример был. Он сохранился у тебя?
Примеры есть и нормальные и не очень, а говорил я про пример многопотокового download'ера...