Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 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-сайт: hw.t-k.ru
 Профиль | | #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-сайт: basicproduction.nm.ru/
 Профиль | | #9
Добавлено: 25.06.04 16:38
 Вроде из за виртуальной машины.

Ответить

Номер ответа: 10
Автор ответа:
 @CyRax PTR



ICQ: 204447456 

Вопросов: 28
Ответов: 664
 Web-сайт: basicproduction.nm.ru/
 Профиль | | #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-сайт: hw.t-k.ru
 Профиль | | #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-сайт: basicproduction.nm.ru/
 Профиль | | #14
Добавлено: 25.06.04 18:07
>вот только если его перекомпилить самому - вылетает тут же
 - Наверное у тебя другой пример был. Он сохранился у тебя?

Ответить

Номер ответа: 15
Автор ответа:
 sne



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #15
Добавлено: 25.06.04 18:19
Эх, CyRax, попадет нам от админов, в офф-топ ,по-тихонечку, уходим :)

> - Наверное у тебя другой пример был. Он сохранился у тебя?
Примеры есть и нормальные и не очень, а говорил я про пример многопотокового download'ера...

Ответить

Страница: 1 | 2 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам