В ЧЕМ ДЕЛО?

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
bevaine2000
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 159
Зарегистрирован: 15.04.2005 (Пт) 23:45

В ЧЕМ ДЕЛО?

Сообщение bevaine2000 » 23.04.2005 (Сб) 10:15

Код: Выделить всё
Private Sub MSComm1_OnComm()
a = MSComm1.Input
Select Case EndProc
Case 1
    SendStr = Chr$(129) + Chr$(0) + Chr$(3)
    MSComm1.Output = SendStr
    MSComm1.PortOpen = False
    Close
    t = 1
    GoTo EndStr
End Select
'...................
'...................
'...................
EndStr:
If t = 1 Then Unload Me
End Sub

VB закрывается и выдает об ошибке приложения :shock: :shock: :shock:

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Сообщение ANDLL » 23.04.2005 (Сб) 11:02

А что за инструкция Close?
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

bevaine2000
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 159
Зарегистрирован: 15.04.2005 (Пт) 23:45

Сообщение bevaine2000 » 23.04.2005 (Сб) 11:17

Закрывает, ранее открыты файл, перед выходом из процедуры. :?

ism
Постоялец
Постоялец
 
Сообщения: 337
Зарегистрирован: 12.12.2001 (Ср) 12:59
Откуда: Russia, Saint-Petersburg

Сообщение ism » 23.04.2005 (Сб) 11:23

Может у тебя сабкласинг какой-то есть еще и неверно выгружается. Или UserControl с динамическим созданием элементов. А это всево лишь место выгрузки.
Может оператор GoTo, как всегда глючит.
Последний раз редактировалось ism 23.04.2005 (Сб) 11:25, всего редактировалось 1 раз.

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Сообщение ANDLL » 23.04.2005 (Сб) 11:24

А где именно вылетает?
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

bevaine2000
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 159
Зарегистрирован: 15.04.2005 (Пт) 23:45

Сообщение bevaine2000 » 23.04.2005 (Сб) 11:35

Ни сабкласинг, ни UserControl, не участвут в процессе. Вылетает после того, как завершается событие MSComm1_OnComm(). Мне какжется что здесь дело в MSComm1.PortOpen = False, но как этого избежать мне не известно.

ism
Постоялец
Постоялец
 
Сообщения: 337
Зарегистрирован: 12.12.2001 (Ср) 12:59
Откуда: Russia, Saint-Petersburg

Сообщение ism » 23.04.2005 (Сб) 12:02

А может, то что записывал отправится неуспевает (MSComm вродебы асинхронный).
И почему ты не анализируешь, что именно произошло в MSComm1.CommEvent, может все циклится?

bevaine2000
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 159
Зарегистрирован: 15.04.2005 (Пт) 23:45

Сообщение bevaine2000 » 23.04.2005 (Сб) 12:34

ism писал(а):А может, то что записывал отправится неуспевает (MSComm вродебы асинхронный).
И почему ты не анализируешь, что именно произошло в MSComm1.CommEvent, может все циклится?

Насчет первого, я сделал задержку, но это не помогло.
Насчет второго, объясни по подробнее, что может циклиться. Моя задача просто отправить последний пакет, на порт, закрыть порт, закрыть форму.

bevaine2000
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 159
Зарегистрирован: 15.04.2005 (Пт) 23:45

Сообщение bevaine2000 » 23.04.2005 (Сб) 13:16

Может в OnComm() нельзя порт закрывать?

ism
Постоялец
Постоялец
 
Сообщения: 337
Зарегистрирован: 12.12.2001 (Ср) 12:59
Откуда: Russia, Saint-Petersburg

Сообщение ism » 23.04.2005 (Сб) 14:01

Насколько я знаю событие OnComm() поисходит не только при поступлении новых данных, но и при других каких-то событиях. О поступлении новых данных свидетельствует в этом событии MSComm1.CommEvent = 2.
Происходит еще при ошибках. Неуверен, но вродебы может происходить и при начале записи.

bevaine2000
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 159
Зарегистрирован: 15.04.2005 (Пт) 23:45

Сообщение bevaine2000 » 23.04.2005 (Сб) 14:41

Вот сам исходник!
Вложения
Error.zip
(1.59 Кб) Скачиваний: 17


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

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

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

    TopList