Computerhilfen.de Logo
Forum
Tipps
News
Frage stellen

Mach mal die Seite zu und logg dich dann neu ein und klick permanent eingelogg bleiben an dann schreibt er ein Cookie dann müsst eigentlich gehn

Gruß

sorry, aber komme einfach nicht in den Chat rein
bekomme immer gesagt ich sei im Forum nicht registriert,hab mich mehrfach eigeloggt, funktioniert
aber chat betreten nicht???????????????????

Haste denn meine persönlichen Nachrichten bekomen?
Steht oben unter dem grossen Banner LOGIN dran nachdem du dich eingeloggt hast?

Wenn du nämlich eingeloggt wärst würde hier dein Name bei deinen geschriebenen Einträgen Blau mit strich darunter also als anklickbaren Link auftauchen.

Ich schätz mal deine Cookie-Einstellungen lassen nicht zu daß das Cookie von Computerhilfen geschrieben werden kann.

Gruß

« Letzte Änderung: 15.04.04, 18:56:01 von Nighty »

Hi
habe es ausprbiert wie Du es mir geschrieben hast funktioniert aber nicht ganz?

Muß doch eigentlich den ersten Wert zwischenspeichern wenn

If Mid(SchalterZustand,1,1)="0"
vergleiche mit 2Wert wenn
mid(SchalterZustand,1,1)="1" then
Label geht in den Vordergrund
wenn
mid(SchalterZustand,1,1)="0" then
Label geht in den Hintergrund

wenn eine 1 ansteht wie gehabt
If Mid (SchalterZustand,1,1)="1" Then
Label in Vordergrund

was ich nicht richtig verstehe wie speichere ich den ersten Wert damit ich ihn mit dem nächsten vergleichen kann

Gruß

Jo der Code stimmt auch ned ganz..

If len(temp_zustand)= 0 then
  temp_zustand =GetUDPData() 'zwischenspeichern
else
  'Abgleich mit vorigem Zustand
  zustand=GetUDPData() 'jeweils aktueller Zustand
  for x=1 to len(zustand)
      if mid(zustand,x,1) = mid(temp_zustand,x,1) then
        Valid_Zustand=Valid_Zustand & mid(zustand,x,1)
      else
        Valid_Zustand=Valid_Zustand & "1"
      endif
    next
  'Temp-Zustand löschen
  temp_zustand=""
endif

Und an deinem Code zu den Labels anzeigen brauchste normal nix ändern, du musst ihn nur insoweit verändern das er anstatt jedes paket verarbeitet, mit Valid_Zustand arbeitet.

Praktisch anstatt die Funktion Getdata verwendest den Code der dir Valid_Zustand liefert..

Gruß

« Letzte Änderung: 16.04.04, 16:27:03 von Nighty »

Hi
habe jetzt alles mögliche durchprobiert, komme einfach nicht weiter, schicke dir mal den Code von beiden Programmen!!!!
S e r v e r:
Option Explicit
Const AlarmRot = 7
Const WarnungGelb = 6
Const VenoeserDruck = 5
Const ArteriellerDruck = 4
Const Leitfaehigkeit = 3
Const TMP = 2
Const Blutleck = 1
Const Temperatur = 0
Dim ZustandVenoeserDruck,u.s.w. GesamtZustand As String

Private Sub Form_Load()
Ini_USBIO

UDPServer.Protocol = sckUDPProtocol
UDPServer.Bind 6000
lblIP.Caption = "Die eigene IP-Adresse(Server) = " + UDPServer.LocalIP

End Sub

Private Sub tmrSchalterAbfrage_Timer()

If Pegel(VenoeserDruck) Then
        ZustandVenoeserDruck = "1"
    Else
        ZustandVenoeserDruck = "0"
    End If
u.s.w.
Private Sub UDPServer_DataArrival(ByVal bytesTotal As Long)
Dim SchalterZustand As String
UDPServer.GetData SchalterZustand
lblEmpfangsDaten.Caption = SchalterZustand
SchalterZustand = GesamtZustand.

C l i e n t
Option Explicit
Dim Farbe
Dim SchalterZustand As String

Private Sub Form_Load()
UDPClient.Protocol = sckUDPProtocol
UDPClient.Bind 6001
UDPClient.RemoteHost = "127.0.0.1"
UDPClient.RemotePort = 6000
lblIP.Caption = "Eigene IP-Adresse(Client) = " + UDPClient.LocalIP

Farbe = vbRed

tmrAbfrageServer.Interval = 500
tmrAbfrageServer.Enabled = True

End Sub


Private Sub tmrAbfrageServer_Timer()
  Dim UDPData As String
  UDPClient.SendData UDPData

End Sub

Private Sub UDPClient_DataArrival(ByVal bytesTotal As Long)

UDPClient.GetData SchalterZustand

 
  If Farbe = vbWhite Then
     Farbe = vbRed
  Else
     Farbe = vbWhite
  End If
 
 



  If Mid(SchalterZustand, 1, 1) = "1" Then
 
        lblVenoeser.BackStyle = 1
        lblVenoeser.BackColor = Farbe
       
  Else
        lblVenoeser.BackStyle = 0
   
                             
  End If

u.s.w.

Gruß

Private Sub UDPClient_DataArrival(ByVal bytesTotal As Long)

If Len(temp_zustand) = 0 Then
  'zwischenspeichern
  UDPClient.GetData temp_zustand
  SchalterZustand = ""
Else
  'Aktueller Zustand, jeweils erstes Paket nach emp_zustand
  UDPClient.GetData zustand
 
  'Abgleich mit vorigem Zustand
  For X = 1 To Len(zustand)
    If Mid(zustand, X, 1) = Mid(temp_zustand, X, 1) Then
      SchalterZustand = SchalterZustand & Mid(zustand, X, 1)
    Else
      SchalterZustand = SchalterZustand & "1"
    End If
  Next
  'Temp-Zustand löschen
  temp_zustand = ""
End If

 
'Kannste dir aussuchen wie die bedingung ist:
'if SchalterZustand <> "" oder
'if len(SchalterZustand) > 0
'Beide ifs sind dasselbe, weil du nach dem len gefragt hattest, len is schneller als textvergleich

if len(SchalterZustand) > 0 then
  If Farbe = vbWhite Then
    Farbe = vbRed
  Else
    Farbe = vbWhite
  End If

  If Mid(SchalterZustand, 1, 1) = "1" Then
 
        lblVenoeser.BackStyle = 1
        lblVenoeser.BackColor = Farbe
       
  Else
        lblVenoeser.BackStyle = 0
   
                           
  End If
  .
  .
  .
  'Schalterveravrbeitung-Ende

endif ' <-- endif von len(SchalterZustand) > 0

Schalterverarbeitung also nur ausführen wenn Schalterzustand belegt ist und das is nach jedem 2ten paket.

Aso ganz vergessen, temp_zustand musste in der Deklaration dimensionieren oder als static

Gruß

« Letzte Änderung: 16.04.04, 19:03:39 von Nighty »

Hi,
komm mir langsam blöd vor aber irgendwie schnall ich das nicht,
SchalterZustand ist jetzt irgendwie nicht mehr belegt
Mit If Mid(SchalterZustand, 1, 1) = "1" Then
hab keine Fehlerangabe aber irgendwie hab ich kein Signal mehr
hab mich nach deinen Daten gehalten
als was muß ich eigentlich For x deklatieren

Private Sub UDPClient_DataArrival(ByVal bytesTotal As Long)
Dim temp_zustand As String
Dim zustand As String
Dim x

UDPClient.GetData SchalterZustand

  If Len(temp_zustand) = 0 Then
UDPClient.GetData temp_zustand
   SchalterZustand = ""
  Else

UDPClient.GetData zustand
    For x = 1 To Len(zustand)
  If Mid(zustand, x, 1) = Mid(temp_zustand, x, 1) Then
   SchalterZustand = SchalterZustand & Mid(zustand, x, 1)
  Else
  SchalterZustand = SchalterZustand & "1"
  End If
    Next
 

  End If
 
  If Len(SchalterZustand) < 0 Then
 
 
  If Farbe = vbWhite Then
     Farbe = vbRed
  Else
     Farbe = vbWhite
  End If
 
 
  If Mid(SchalterZustand, 1, 1) = "1" Then
 
        lblVenoeser.BackStyle = 1
        lblVenoeser.BackColor = Farbe
       
  Else
        lblVenoeser.BackStyle = 0
   
                             
  End If

Gruß

Nochmal ne Erklärung:

Der Timer ruft UDPClient_DataArrival auf.
Dort wird erstmal geschaut ob in temp_Zustand was ist
( If Len(temp_zustand) = 0 Then )

Also er prüft die länge von Temp_zustand.
Ist die länge 0, ist temp_zustand leer.

Temp_zustand is der Zwischenspeicher mit dem immer das darauf folgende abgeglichen wird.

Also Temp_zustand ist leer, dann wird das erste Paket in Temp_zustand gespeichert
( UDPClient.GetData temp_zustand)

Gleichzeitig wird SchalterZustand auf 0 gesetz:
SchalterZustand = ""

Weil SchalterZustand ja nur beim allerersten paket leer ist.
Da steht ja dann immer das Ergebnis dann bei jedem durchlauf mit dem du arbeiten musst.

Gut und weil jetzt SchalterZustand leer ist, geht er nicht in die Schalterverarbeitung weil ja erst das 2te da sein muss um zu entscheiden, wie der Status der Dioden denn wirklich ist.

Das wird geprüft durch:
if len(SchalterZustand) > 0 then
.
.
.
Endif

Und die Punkte ist der komplette Code der eigentlichen Schalterverarbeitung also in den Vordergrund etc..

Drum macht er jetzt auch garnix und springt aus
UDPClient_DataArrival raus.

Jetzt ruft der Timer die Funktion das 2te mal auf:
Jetzt fragt er wiederab:
If Len(temp_zustand) = 0 Then

Die Bedingung ist falsch weil in Temp_Zustand das erste datenpaket liegt, also ist
len(temp_zustand)=6
drum springt er zum Else

Dort wird das 2te datenpaket abgerufen und Zeichenweise mit dem Temp_zustand verglichen:

Beispiel:

011100 ( 1.aufrufen der Funktion IF-Zweig)
001101 ( 2. Aufruf der Funktion Else-Zweig

Also For x = 1 to Len(Zustand) bedeutet:
Wiederhole solange bis x = Länge des Strings(Zustand) also 6

Du kannst auch For x= 1 to 6 schreiben wenn sich die Länge des ZUstands nie ändert, es also immer 6 Dioden bleiben.

Gut jetzt der Vergleich:
(Z=Zeichen - nur für die Erklärung jetzt)
Temp_Zustand: 011100
Zustand: 001101

x= 1

Verglichen wird 1.Zeichen von Temp_Zustand mit 1.Zeichen von Zustand:
Code dazu:
If Mid(zustand, X, 1) = Mid(temp_zustand, X, 1)

Z1-Temp_Zustand: 0
Z1-Zustand:0

Also identisch,und wenn identisch greift der IF-Zweig:
SchalterZustand = SchalterZustand & Mid(zustand, x, 1)

SchalterZustand is erstmal leer also heisst jetzt:
"" = "" & 0
SchalterZustand="0"

If greift else wird ignoriert->Next
x wird erhöht->X=2

Jetzt kommt wieder:
If Mid(zustand, X, 1) = Mid(temp_zustand, X, 1)

Z2-Temp_Zustand: 1
Z2-Zustand:0

Jetzt isses Unterschiedlich->Else-Zweig
SchalterZustand ist immernoch "0"
Und weils jetzt unterschiedlich ist, hast du ja fesgelegt das es ein flackern ist, und flackern bedeutet: 1/AN

Also Code:
SchalterZustand = SchalterZustand & "1"

"0" = "0" & "1"
Schalterzustand ="01"

Und so gehts weiter bis die Schleife durch is.
Wenn die Schleife durch ist ist Schalterzustand 6 Zeichen lang, genauso lang wie 1 Paket das kommt.
Temp_zustand wird zurückgesetzt ( ="") damit er beim nächsten timer-aufruf von UDPClient_DataArrival erst wieder zwischenspeichert:
If Len(temp_zustand) = 0 Then

Jetzt fragt er wieder ob:
If Len(SchalterZustand) > 0 Then

Das ist jetzt wahr und jetzt kommt die Schalterverarbeitung mit dem abgeglichen Zustand von 2 paketen.

Hoffe jetzt isses verständlicher:

Die Komplette Schalterverarbeitung muss in diese IF Abfrage:
If Len(SchalterZustand) > 0 Then

Endif

Weil er nur schalten darf wenn jeweils das erste mit dem 2ten abgeglichen wurde.

Und temp_zustand muss in die Deklaration oder als static in die Sub

Und die Abfrage heisst:
If Len(SchalterZustand) > 0 Then

Gruß

 

« Letzte Änderung: 16.04.04, 21:03:09 von Nighty »

Hi,
denn Code hab ich so weit verstanden,
aber ich denke das kann so nicht ganz funktionieren,
da sich nicht die komplette länge des gesendeten String verändert sondern nur der jeweilige einzelne wo es eine Veränderung an der LED gibt
001000
000000
oder ich bin auf dem falschen Dampfer:)
oder ich habe noch irgent einen anderen Fehler?

Gruß

Hi,
das zuvor stimmt nicht ganz es ist ja egal ab an dem gesendeten String nur ein Wert verändert wird, da immer mit for X = 1 to 6 dieser durchlaufen wird.
Ich schätze das Problem liegt im "SchalterZustand"
da irgendwie nichts drinsteht oder immer mit 0 belegt ist,
kann eigentlich auch nicht sein da mit
SchalterZustand = SchalterZustand & mid(zustand,x,1) bei gleichem Wert belegt wird
und bei unterschiedlichen Wert mit
SchalterZustand = SchalterZustand& "1" belegt wird

irgendwo muß noch ein Fehler stecken

Gruß

Is die Variable temp_zustand im Deklarationsbereich oder als static in der Sub?

Wenn nicht ist temp_zustand IMMER leer und es wird IMMER nur zwischengespeichert und es kommt nie zum Vergleich

Ansonsten wirf doch maln paar debug.prints rein dann kannste doch verfolgen wann was wo drin ist oder eben nicht.

Gruß

« Letzte Änderung: 17.04.04, 19:36:56 von Nighty »

Hi,
habe Dim temp_zustand As String in die Deklaration gestellt,
aber was mach ich eigentlich genau mit
Zustand und X habe ich in die static als Dim Zustand und Dim x gestellt !!
werd es mal mit den Debug probieren

Dank Dir

Gruß

Naja die einzigste wo permanent sein muss ist temp_zustand weil der Wert ja erhalten bleiben muss bis zum nächsten aufruf.

Wenn temp_zustand in der sub steht als normale Variable (dim) verliert sie ihren wert, und dann haste nix zum Vergleichen.

Zustand, X, SchalterZustand sind ganz normale Variablen die in der Sub dimensiniert werden also nicht statisch und nicht auf Deklarationsebene.

Die bekommen ja immer nen aktuellen wert beim Aufruf der Sub

Gruß

Hi,
Das Problem bei x und Zustand ist, wenn ich die nicht dimensioniere mit Dim bekomme ich den Fehler
Variable nicht definiert.

aber mal schaun!!

Gruß


« C: Schiffe versenkenRechnen (mod) mit viel zu großer Zahl, umgehen? »
 

Schnelle Hilfe: Hier nach ähnlichen Fragen und passenden Tipps suchen!

Fremdwörter? Erklärungen im Lexikon!
Cookie
Die Cookie - Funktion, zu Deutsch Keks oder Plätzchen, wurde von Netscape erfunden, um Webentwicklern die Möglichkeit zu bieten kleine Datenpakete, wie den Name...

Snapchat
SnapChat ist eine kostenlose Messaging-App, mit der - ähnlich wie bei WhatsApp oder dem Facebook Messenger - Nachrichten an andere Personen oder Gruppen gesendet wer...

Banner
Ein Banner ist eine Werbefläche auf Internetseiten. Diese sind mit der Webseite des Werbetreibenden verbunden. Es gibt verschiedene Bannerformen: Bild (statisch oder...