| |
VB.NET - FortgeschritteneRe: Schreiben in Textdatei wird abgebrochen | | | Autor: kurol | Datum: 21.07.17 14:09 |
| Hallo Manfred,
vielen Dank für die schnelle Antwort. Da ich, wie gesagt, kein VB.NET-Spezialist bin, habe ich mal nach diversen Änderungen die komplette Routine beigefügt.
Mittlerweile ist der Stand so:
in die RTB werden zur Laufzeit nur ein paar Bytes eingetragen, ebenfalls in die abgespeichete Datei.
Vor dem Öffnen des Savefile-Dialogs kommt die Meldung 'Kameratarget.exe [mein Programm] hat einen Haltepunkt ausgelöst'. Gemeint ist ein VB-interner Haltepunkt, keine Ahnung wie ich den abschalten kann...
Die Save-Dialog wird richtig aufgerufen, der Dateiname richtig eingetragen. Wenn ich dann auf 'Speichern' klicke, steht plötzlich der gesamte abgerufene Text fehlerlos in der RTB, allerdings nicht in der abgespeicherten Datei.
Wenn ich den Teil zum speichern (ab if text_sent = "SE" )auskommentiere, wird der gesamte abgerufene Text sofort in der RTB angezeigt.
..
Private Sub SerialPort1_DataReceived(ByVal sender As Object, ByVal e As _
System.IO.Ports.SerialDataReceivedEventArgs) Handles _
SerialPort1.DataReceived
ReceivedText(SerialPort1.ReadExisting())
End Sub
Private Sub ReceivedText(ByVal [text] As String)
Dim DateTime As String = Now.ToString("dd-MM-yyyy HH_mm_ss")
Dim docname As String = "Log.txt"
Dim dt = DateTime ' Datum und Zeit
' ermitteln
Dim answer As String
If rtbreceived.InvokeRequired Then
Dim x As New SetTextCallback(AddressOf ReceivedText)
Invoke(x, New Object() {(text)})
Else
answer = [text]
If text_sent <> "RST" Then _
' gesendete Abfrage war <> RST
Try
stopflag = True _
' weiteren Datenverkehr stoppen
rtbreceived.Text &= [text] _
' in Rich text box eintragen
rtbreceived.SelectionStart = rtbreceived.Text.Length _
' Autoscroll
rtbreceived.ScrollToCaret()
rtbreceived.Refresh()
If text_sent = "SE" Then _
' SE > Datei soll abgerufen und gespeichert werden
docname = docname & dt & ".txt"
SaveFileDialog1.FileName = docname
SaveFileDialog1.InitialDirectory = "d:\"
SaveFileDialog1.RestoreDirectory = True
SaveFileDialog1.Filter = "Text Files (*.txt*)|*.txt"
If SaveFileDialog1.ShowDialog = _
Windows.Forms.DialogResult.OK Then
My.Computer.FileSystem.WriteAllText( _
SaveFileDialog1.FileName, [text], True) 'oder
' My.Computer.FileSystem.WriteAllText(
' SaveFileDialog1.FileName, rtbreceived.Text, True)
End If
text_sent = ""
End If
Catch ex As Exception
' MsgBox("Error")
End Try
End If
text_sent = ""
stopflag = False 'Datenverkehr wieder
' zulassen
End If
' parse_answer(answer) 'Auswertung _
weiterer Befehle
End Sub Mir kommt es so vor, als wenn die Routine zum Speichern schon aufgerufen wird, bevor der gesamte Text übertragen wurde. Ich weiß aber nicht, wie ich das handeln muss. Vielleicht übersehe ich auch nur eine Kleinigkeit, ich programmiere halt zu 99,9% in C und nur selten in Visual Basic.
Falls Du einen Fehler oder eine Diskrepanz findest oder weitere Fragen hast, lasse es mich bitte wissen.
Freundlicher Gruß
Roland | |
| Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
|
|
sevWizard für VB5/6
Professionelle Assistenten im Handumdrehen
Erstellen Sie eigene Assistenten (Wizards) im Look & Feel von Windows 2000/XP - mit allem Komfort und zwar in Windeseile :-) Weitere InfosTipp des Monats Access-Tools Vol.1
Über 400 MByte Inhalt
Mehr als 250 Access-Beispiele, 25 Add-Ins und ActiveX-Komponenten, 16 VB-Projekt inkl. Source, mehr als 320 Tipps & Tricks für Access und VB
Nur 24,95 EURWeitere Infos
|
|
|
Copyright ©2000-2024 vb@rchiv Dieter Otter Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.
Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel
|
|