Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Code-Stück wird zweimal statt einmal durchlaufen

Empfohlene Antworten

Veröffentlicht

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

schließt du den port am schluss wieder?

(PortOpen = False)

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

ohne den code kann man schwer den fehler feststellen ;)

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

mhhh

ich seh atm auch keinen fehler

evtl hänkt es mit deinen ganzen timern zusammen ;)

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

keiner ne Idee ?

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.

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.