MrMimi Geschrieben 4. September 2008 Geschrieben 4. September 2008 Hi Leute die Situation sieht vollgender massen aus: ich greife durch ein selbst zusammengelötetes Kabel ne Spannung ab (atm noch von nem einstellbarem Netzteil 5V) Danach wird mein Programm dann durch die OnComm Funktion gestartet, und etwas in eine Datei geschrieben. Mein Problem ist jetzt, dass der Quelltext im OnComm- Part immer zweimal durchlaufen wird. Das heißt er schreibt mir zweimal genau das gleiche in die Datei. Aber er geht dabei immer den ganzen Code in dem Teil durch und fängt beim Schluss dann einfach nochmal von vorne an... ist nicht ein bestimmtes stück das er nur zweimal durchläuft sondern der ganze Code im OnComm Part... Jetzt ist die Frage, ob das ansich so ein kleines Problem von OnComm ist, oder ob das evtl. an dem Spannungsimpuls meines Kabels liegt. btw mein Kabel ist ein serielles ... an Pin 8 ist Masse dran und an 2 kommt die Spannung an. der rest ist mit nix verbunden...^^ Hat einer ne Ahnung woran es liegen kann ? P.S.: Ne Lösung das Problem zu umgehen habe ich, würde es aber gerne richtig richtig machen... Zitieren
xk4fu Geschrieben 4. September 2008 Geschrieben 4. September 2008 schließt du den port am schluss wieder? (PortOpen = False) Zitieren
MrMimi Geschrieben 4. September 2008 Autor Geschrieben 4. September 2008 schließt du den port am schluss wieder? (PortOpen = False) klar sonst würde er mir ja ne fehlermeldung aussprucken^^ das Programm läuft ansich ohne Probleme der macht alles was er machen soll außer das er halt einen bestimmten Teil wie gesagt 2mal hintereinander durchläuft Zitieren
xk4fu Geschrieben 4. September 2008 Geschrieben 4. September 2008 ohne den code kann man schwer den fehler feststellen Zitieren
MrMimi Geschrieben 4. September 2008 Autor Geschrieben 4. September 2008 (bearbeitet) Public X As Boolean Private Sub Command1_Click() Dim Dateiname As String Dim Datum_MonatJahr As String Dim Datum As String Dim Ablage1_Monatremove Dim Ablage1_nurMonat As String Dim Ablage_Tagremove As String Dim Ablage1_Jahr As String Dim B As Integer Dim N As Integer Timer1.Enabled = True X = False Datum = Date$ ' Zusammenstellung des Dateinamens SELFMADE 'B = InStr(Datum, "-") 'Ablage1_Monatremove = Left$(Datum, 'Ablage1_nurMonat = Left$(Datum, B - 1) 'Datum = Replace(Datum, Ablage1_Monatremove, "") 'N = InStr(Datum, "-") 'Ablage1_Tagremove = Left$(Datum, N - 1) 'Ablage1_Jahr = Replace(Datum, Ablage1_Tagremove, "") 'Datum_MonatJahr = Ablage1_nurMonat & Ablage1_Jahr ' zweite möglichkeit für Dateiname "etwas" kürzer N = InStr(Datum, "-") B = InStr(N, Datum, "-") Ablage1_Tagremove = Mid$(Datum, N, Datum = Replace(Datum, Ablage1_Tagremove, "") Dateiname = "D:\Dokumente und Einstellungen\Administrator\Desktop\Maschine_Daten" & Datum & ".txt" Open Dateiname For Append As 2 End Sub Private Sub Command2_Click() Timer1.Enabled = False Close #2 End Sub Private Sub MSComm1_OnComm() Dim Datensatz As String X = True Datensatz = Date$ & "," & Time$ & "," & "an" & ";" & Chr(13) & Chr(10) Print #2, Datensatz; End Sub Private Sub Timer1_Timer() MSComm1.PortOpen = True X = False Timer2.Enabled = True Timer1.Enabled = False End Sub Private Sub Timer2_Timer() Dim Datensatz2 As String Datensatz2 = Date$ & "," & Time$ & "," & "aus" & ";" & Chr(13) MSComm1.PortOpen = False If X = False Then Print #2, Datensatz2 End If Timer2.Enabled = False Timer1.Enabled = True End Sub[/code] so das ist er^^ hab aber auch einiges Ausprobiert und denke nicht das es am Code liegt^^... aber ok viel spaß damit ^^ Edit: zur erklärung was da passieren soll^^.... Es kommt ein Signal auf Com1 an; dadurch wird dann OnComm aktiviert und schreibt die Uhrzeit+Datum in ne Datei die jeden Monat variert... das wars eigentlich schon ^^ ach und der Port wird atm halt noch alle 6 sekunden abgefragt, ob signal anliegt. das funzt auch ansich alles....^^ Bearbeitet 4. September 2008 von MrMimi Zitieren
xk4fu Geschrieben 4. September 2008 Geschrieben 4. September 2008 mhhh ich seh atm auch keinen fehler evtl hänkt es mit deinen ganzen timern zusammen Zitieren
MrMimi Geschrieben 4. September 2008 Autor Geschrieben 4. September 2008 mhhh ich seh atm auch keinen fehler evtl hänkt es mit deinen ganzen timern zusammen ne also das hät cih wohl erwähnen sollen^^ anfangs hab ich nur um das selbst gebastelte Kabel zu testen nur folgenden Code genutzt... einmal das Öffnen des Comm-Ports und dann OnComm wo nur ne MsgBox ausgelöst wurde und sogar da gab es das Prob schon, dass die zweimal ausgelöst wurde da war noch absolut nix von Timern und so drin^^ nur Com1= Open... Oncomm MsgBox("blablabla") das wars schon ^^ deshalb denke ich auch das es mim Code nichts zu tun hat Zitieren
Klotzkopp Geschrieben 8. September 2008 Geschrieben 8. September 2008 keiner ne Idee ? Bitte kein Threadpushing, siehe Boardregeln. Sowohl MSComm als auch die ganze darunterliegende Architektur sind eigentlich dafür gedacht, ein zeichenbasiertes Protokoll über die serielle Schnittstelle laufen zu lassen. Ich frage mich ernsthaft, wie du davon ausgehen kannst, dass du damit einen einzelnen Pin abfragen kannst. Du könntest versuchen, über das Input-Property die "anliegenden Daten" auszulesen. Oder du könntest den zweiten Aufruf durch einen Zeitstempelvergleich abbrechen. Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.