Zum Inhalt springen

Code-Stück wird zweimal statt einmal durchlaufen


Empfohlene Beiträge

Geschrieben

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... :)

Geschrieben
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

Geschrieben (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 von MrMimi
Geschrieben
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

Geschrieben
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.

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...