Мобилка и COM порт

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
JohnK
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 874
Зарегистрирован: 03.08.2002 (Сб) 0:35
Откуда: 48.02` 37.58`

Мобилка и COM порт

Сообщение JohnK » 29.07.2008 (Вт) 14:30

Подскажите классический алгоритм работы с COM портом. Речь идет о том чтобы есть два цикла: 1) опрос состояния модема, 2) посылаются другие AT команды. Проблема состоит в том что программа работает нестабильно (нестабильность заключается в том, что иногда команды со второго цикла не обрабатываются. Я так понимаю из-за первого цикла). К сожалению нужны оба цикла.
SELECT * FROM girls WHERE tits NOT NULL AND age BETWEEN 18 AND 25 ORDER BY Beauty

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 29.07.2008 (Вт) 14:37

JohnK
Я правильно понимаю твой намёк на то, что эти два цикла у тебя работают (должны работать) одновременно?
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

JohnK
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 874
Зарегистрирован: 03.08.2002 (Сб) 0:35
Откуда: 48.02` 37.58`

Сообщение JohnK » 29.07.2008 (Вт) 14:49

Совершенно верно!
Вот никак не могу придумать как их синхронизировать. Дело в том что первый цикл узнает сост телефона посылая команду и анализируя ее. НО! второй цикл по времени должен, для примера, вешать трубку. Это все работает, но мне не нравится что иногда начинается полный коллапс.
Уверен, существуют стандартные алгоритмы. Не хочу придумывать извращенный велосипед...
SELECT * FROM girls WHERE tits NOT NULL AND age BETWEEN 18 AND 25 ORDER BY Beauty

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 29.07.2008 (Вт) 15:05

Стандартные алгоритмы — это диспетчер сообщений.
Lasciate ogni speranza, voi ch'entrate.

JohnK
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 874
Зарегистрирован: 03.08.2002 (Сб) 0:35
Откуда: 48.02` 37.58`

Сообщение JohnK » 29.07.2008 (Вт) 15:16

Я понимаю, писать собственный обработчик сообщений с буфером. А еще идеи есть?
SELECT * FROM girls WHERE tits NOT NULL AND age BETWEEN 18 AND 25 ORDER BY Beauty

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 29.07.2008 (Вт) 15:50

Хакер писал(а):Я правильно понимаю твой намёк на то, что эти два цикла у тебя работают (должны работать) одновременно?

JohnK писал(а):Совершенно верно!


Ещё один... Два цикла не могут работать одновременно в однопоточной программе. В один любой момент времени работает только один код.

Ты, по всей видимости, сделал всё как-то так криво, что у тебя создалось впечатление одновременности. А на деле, вероятно, образовалась неконтролируемая рекурсия. Откуда и появляется поведение, которое ты называешь странным.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

JohnK
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 874
Зарегистрирован: 03.08.2002 (Сб) 0:35
Откуда: 48.02` 37.58`

Сообщение JohnK » 31.07.2008 (Чт) 0:40

А как быть если эти два "потока" вызываются двумя разными таймерами? Если оба таймера накладываются по времени, что происходит?
SELECT * FROM girls WHERE tits NOT NULL AND age BETWEEN 18 AND 25 ORDER BY Beauty

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 31.07.2008 (Чт) 7:06

JohnK писал(а):А как быть если эти два "потока" вызываются двумя разными таймерами? Если оба таймера накладываются по времени, что происходит?
Второй "поток" не начнет трудится, пока не закончится обработка певого "потока".
Весь мир матрица, а мы в нем потоки байтов!

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 31.07.2008 (Чт) 8:49

JohnK
А откуда у тебя два потока? Ты действительно создавал второй с помощью CreateThread?
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Proxy
Профессор VB наук
Профессор VB наук
Аватара пользователя
 
Сообщения: 2941
Зарегистрирован: 31.08.2007 (Пт) 4:41

Сообщение Proxy » 31.07.2008 (Чт) 9:24

Ну и причём тут CreateThread и вообще 2 потока, если речь идёт просто о вызове по 2м таймерам? Это вообще к "потокам" не имеет отношения.
Follow the white rabbit.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 31.07.2008 (Чт) 9:33

Если ты до сих пор не понял, то перечитывай пятый ответ, пока не поймешь.
Lasciate ogni speranza, voi ch'entrate.

JohnK
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 874
Зарегистрирован: 03.08.2002 (Сб) 0:35
Откуда: 48.02` 37.58`

Сообщение JohnK » 31.07.2008 (Чт) 17:57

Всем спасибо. Просто немного переработал алгоритм. работает как часы.
ЗЫ. Слово поток я не случайно взял в кавычки... :D
SELECT * FROM girls WHERE tits NOT NULL AND age BETWEEN 18 AND 25 ORDER BY Beauty


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex-бот и гости: 19

    TopList  
cron