Programmieren - alles kontrollieren 4.935 Themen, 20.621 Beiträge

VB6: Programm stürzt ständig ab!

Engfer / 1 Antworten / Flachansicht Nickles

Hallo,
ich bin nicht der VB-Freak, nutze eigentlich VB6 nur für Sachen, die ich nicht mit Clickexe3 hinbekomme.


Zu meinem Problem:
Ich habe ein Programm geschrieben, mit welchem ich eine Textdatei (Dat_Sender.txt) auslese.


Inhalt:
----------------------------------------------------------


4


2400
ATZXL3
26
1/1:Kommunikationsausfall
----------------------------------------------------------


Aufgrund dieser Daten wird die Rufnummer angerufen.


Danach soll sich das Programm beenden.


Das VB-Script sieht folgendermaßen aus:
----------------------------------------------------------
Dim schnittstelle As Integer
Dim amt As String
Dim baudrate As String
Dim inizialisierung As String
Dim rufnummer As String
Dim empfaengerrufnummer As String
Dim meldung As String
Dim setting As String
Dim modemantwort As String
Dim t As Integer
Dim stufe As Integer



Private Sub abbrechen_Click()
abbrechen.Enabled = False
abbrechen.Visible = False
Open "C:\Funkruf-Manager\Dat_Sender.txt" For Output As #1
Print #1, "Abbruch" + Chr(13)
Print #1, Chr(13)
Print #1, Chr(13)
Print #1, Chr(13)
Print #1, Chr(13)
Close #1
Unload Telefon_Fenster
Set Telefon_Fenster = Nothing
'MSComm1.PortOpen = False
End Sub



Private Sub Form_Load()
Let stufe = 0
'Daten von FRM übernehmen
Open "C:\Funkruf-Manager\Dat_Sender.txt" For Input As #1
Input #1, schnittstelle
Input #1, amt
Input #1, baudrate
Input #1, inizialisierung
Input #1, empfaengerrufnummer
Input #1, meldung
Close #1
'Textfelder füllen
'Let meldetext.Text = meldung
Let empfaenger.Text = empfaengerrufnummer
'Setting String (Schnittstelleneinstellung) zusammenstellen
Let setting = baudrate + ",N,8,1"
'Schnittstelle vorbereiten
MSComm1.CommPort = schnittstelle
'MsgBox schnittstelle
MSComm1.Settings = setting
MSComm1.PortOpen = True
MSComm1.RThreshold = 1
MSComm1.SThreshold = 1
MSComm1.InputLen = 0
'Initialisierungsstring senden
ini(0).Visible = True
MSComm1.Output = inizialisierung + Chr(13)
For t = 0 To 10000: Next
melde1(0).Visible = True
waehle(1).Visible = True
MSComm1.Output = "ATX3DT" + amt + empfaengerrufnummer + Chr(13)
stufe = 3
melde2(1).Visible = True
'verbindung(0).Visible = True
MSComm1.Handshaking = comRTS


End Sub


Private Sub Form_Unload(Cancel As Integer)
Unload Telefon_Fenster
Set Telefon_Fenster = Nothing
'MSComm1.PortOpen = False
End Sub


Private Sub MSComm1_OnComm()
modemantwort = MSComm1.Input
'modemantwort = Replace$(modemantwort, Chr(13), "")
'modemantwort = Replace$(modemantwort, Chr(10), "")
Text1.Text = Text1.Text + modemantwort ' + Chr(13)
If stufe = 3 Then
If InStr(1, modemantwort, "NO CARRIER") <> 0 Then
    'MsgBox "NO CARRIER!"
    'melde2(1).Caption = "ERROR!"
    'melde2(1).ForeColor = &HFF&
    'melde2(1).Visible = True
    Open "C:\Funkruf-Manager\Dat_Sender.txt" For Output As #1
    Print #1, "Ruf_ok" + Chr(13)
    Print #1, Chr(13)
    Print #1, Chr(13)
    Print #1, Chr(13)
    Print #1, Chr(13)
    Close #1
    Unload Telefon_Fenster
    Set Telefon_Fenster = Nothing
    'End
    'Unload Me
 End If
 If InStr(1, modemantwort, "BUSY") <> 0 Then
    'MsgBox "NO CARRIER!"
    'melde2(1).Caption = "ERROR!"
    'melde2(1).ForeColor = &HFF&
    'melde2(1).Visible = True
    Open "C:\Funkruf-Manager\Dat_Sender.txt" For Output As #1
    Print #1, "Ruf_ok" + Chr(13)
    Print #1, Chr(13)
    Print #1, Chr(13)
    Print #1, Chr(13)
    Print #1, Chr(13)
    Close #1
    Unload Telefon_Fenster
    Set Telefon_Fenster = Nothing
    'End
    'Unload Me
 End If
End If
If stufe < 3 Then
 If InStr(1, modemantwort, "NO CARRIER") <> 0 Then
    'MsgBox "NO CARRIER!"
    melde2(1).Caption = "ERROR!"
    melde2(1).ForeColor = &HFF&
    melde2(1).Visible = True
    Open "C:\Funkruf-Manager\Dat_Sender.txt" For Output As #1
    Print #1, "Fehler" + Chr(13)
    Print #1, Chr(13)
    Print #1, Chr(13)
    Print #1, Chr(13)
    Print #1, Chr(13)
    Close #1
    Unload Telefon_Fenster
    Set Telefon_Fenster = Nothing
    'End
    'Unload Me
 End If
 If InStr(1, modemantwort, "ERROR") <> 0 Then
    'MsgBox "ERROR!"
    Open "C:\Funkruf-Manager\Dat_Sender.txt" For Output As #1
    Print #1, "Fehler" + Chr(13)
    Print #1, Chr(13)
    Print #1, Chr(13)
    Print #1, Chr(13)
    Print #1, Chr(13)
    Close #1
    Unload Telefon_Fenster
    Set Telefon_Fenster = Nothing
    'End
    'Unload Me
 End If
 If InStr(1, modemantwort, "NO DIALTONE") <> 0 Then
    'MsgBox "NO DIALTONE!"
    Open "C:\Funkruf-Manager\Dat_Sender.txt" For Output As #1
    Print #1, "Fehler" + Chr(13)
    Print #1, Chr(13)
    Print #1, Chr(13)
    Print #1, Chr(13)
    Print #1, Chr(13)
    Close #1
    Unload Telefon_Fenster
    Set Telefon_Fenster = Nothing
    'End
    'Unload Me
 End If
 If InStr(1, modemantwort, "BUSY") <> 0 Then
    MsgBox "BUSY!"
    Open "C:\Funkruf-Manager\Dat_Sender.txt" For Output As #1
    Print #1, "Fehler" + Chr(13)
    Print #1, Chr(13)
    Print #1, Chr(13)
    Print #1, Chr(13)
    Print #1, Chr(13)
    Close #1
    Unload Telefon_Fenster
    Set Telefon_Fenster = Nothing
    'End
    'Unload Me
 End If
 If InStr(1, modemantwort, "NO ANSWER") <> 0 Then
    'MsgBox "NO ANSWER!"
    Open "C:\Funkruf-Manager\Dat_Sender.txt" For Output As #1
    Print #1, "Fehler" + Chr(13)
    Print #1, Chr(13)
    Print #1, Chr(13)
    Print #1, Chr(13)
    Print #1, Chr(13)
    Close #1
    Unload Telefon_Fenster
    Set Telefon_Fenster = Nothing
    'End
    'Unload Me
 End If
End If
If InStr(1, modemantwort, "OK") <> 0 Then
 'MsgBox "Test bestanden - OK"
    If melde1(0).Visible = True Then
        melde2(1).Visible = True
        'verbindung(0).Visible = True
    End If
    melde1(0).Visible = True
End If


End Sub
---------------------------------------------------------


Leider ist es so, dass das Programm beim 1. Mal super funktioniert, allerdings ab dem 2. oder 3. Programmstart wird das Fenster nicht mehr geöffnet und das Programm steht im Task-Manager, kann aber nicht geschlossen werden, in den meisten Fällen wird kann man den PC sogar nicht mehr herunterfahren!


Ich habe die Befürchtung, dass das Programm nicht richtig beendet wird.


Wer kann helfen?


Andreas

bei Antwort benachrichtigen