tutorials.de Buch-Aktion 05/2012
Like Tree2Danke
  • 1 Beitrag von wincnc
  • 1 Beitrag von Nino14
ERLEDIGT
JA
ANTWORTEN
7
ZUGRIFFE
4665
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Nino14 Nino14 ist offline Mitglied Gold
    Registriert seit
    Feb 2007
    Beiträge
    118
    Liebe Community,

    an dieser Stelle möchte ich erstmal allen danken, die mir bis jetz so erfolgreich geholfen haben.

    Aber nun zu meinem Problem:
    Mein Sportverein stellte mir heute die Aufagabe, dass sie gerne auf unserer HP nachlesen wollen, ob sich momentan jemand in einer unsere 2 Hallen befindet. Und das Ganze so kostengünstig wie irgendwie möglich.

    Mein Lösungsansatz:
    Man hängt in beiden Hallen Bewegungsmelder auf, die ein Relais schalten. (Zusätzlich könnte man Helligkeitssensoren anbringen. Wäre aber nciht zwingend nötig.) Durch das Relais wird ein Stromkreis geschlossen, der an eine serielle Schnittstelle eines PC' s angeschlossen ist(z.B. von Pin4 nach Pin 1 und von Pin4 nach Pin6). Auf dem PC läuft ein Programm das alle x Sekunden den Seriellen Port abfragt und daraufhin das Ergebnis in jeweils eine txt Datei schreibt. Diese Datei wird dann bei Bedarf von Server auf dem unser HP liegt geöffnet und ausgelesen. Via FTP server auf dem PC und php auf dem Server der HP.

    Soweit bin ich auch nach einiegen Nachforschungen und Überlegungen am heutiegen Tag gekommen. Ich habe auch schonmal VB geprogt, nur leider ist das 2 Jahre her und meine Erinnerungen sind daran nicht mehr so groß da ich mich in letzter Zeit hauptsächlich mit PHP beschäftigt habe. Also bräuchte ich ein paar Anfänger-taugliche Tipps wie ich die Seriellen Ports des PC's abfragen kann. Wenn ich das Ergebnis der Abfrage in einer Variable steheh hätte könnte ich den Rest auch selber hinkriegen. Nur leider reichen meine Kentnisse nicht mehr für die Abfrage der Ports.


    So weit mein Denkansatz. Falls das so nicht realisierbar ist bitte ich um alternativen.
    Das is ersma so ne Menge. Falls irgendetwas nicht verständlich ist, fragt einfach nach. Ich bin für jede Hilfe dankbar

    LG Nino
     

  2. #2
    Avatar von wincnc
    wincnc wincnc ist offline Mitglied Platin
    Registriert seit
    Aug 2004
    Beiträge
    632
    Hallo

    Hier ein Beispiel wie Du den Com Port abhören kannst.
    Dazu benötigst Du das MS Comm Control und eine ListBox.
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    
    Private N As Integer
     
    Private Sub Form_Load()
      MSComm1.CommPort = 1
      MSComm1.DTREnable = True
      MSComm1.RTSEnable = True
      MSComm1.PortOpen = True
    End Sub
     
    Private Sub MSComm1_OnComm()
     
    N = N + 1
     
    List1.AddItem N
     
    Select Case MSComm1.CommEvent
     
     ' Fehler
     Case comEventBreak
       List1.AddItem "Es wurde ein Anhaltesignal empfangen"
     Case comEventFrame
       List1.AddItem "Fehler im Übertragungs-Raster (Framing Error)"
     Case comEventOverrun
       List1.AddItem "Datenverlust"
     Case comEventRxOver
       List1.AddItem "Überlauf des Empfangs-Puffers"
     Case comEventRxParity
       List1.AddItem "Paritätsfehler"
     Case comEventTxFull
       List1.AddItem "Sendepuffer voll"
     Case comEventDCB
       List1.AddItem "Unerwarteter Fehler beim Abrufen des DCB"
     
     
     ' Ereignisse
     Case comEvSend
       List1.AddItem "Im Sendepuffer befinden sich SThreshold Zeichen"
     Case comEvReceive
       List1.AddItem "Anzahl empfangener Zeichen gleich RThreshold"
     Case comEvCTS
       List1.AddItem "Pegeländerung auf CTS"
       List1.AddItem "Signal: " & IIf(MSComm1.CTSHolding, "High", "Low")
     Case comEvDSR
       List1.AddItem "Pegeländerung auf DSR"
       List1.AddItem "Signal: " & IIf(MSComm1.DSRHolding, "High", "Low")
     Case comEvCD
       List1.AddItem "Pegeländerung auf DCD"
       List1.AddItem "Signal: " & IIf(MSComm1.CDHolding, "High", "Low")
     Case comEvRing
       List1.AddItem "Pegeländerung auf RI"
     Case comEvEOF
       List1.AddItem "Im Eingabestrom wurde ein EOF-Zeichen gefunden"
    End Select
     
    End Sub

    Pinbelegung D-Sub, 9-polig, männlich:

    Pin - Bez. - Bedeutung - E/A
    1 - DCD - Data Carrier Detect - Eingang
    2 - RD - Receive Data - Eingang
    3 - TD - Transmit Data - Ausgang
    4 - DTR - Data Terminal Ready - Ausgang
    5 - GND - Ground
    6 - DSR - Dataset Ready - Eingang
    7 - RTS - Request to Send - Ausgang
    8 - CTS - Clear to Send - Eingang
    9 - RI - Ring Indicator - Eingang


    Schließt Du den Schaltkontakt des Relais zwischen:
    DSR (Pin 6) und RTS (Pin 7)
    oder
    DSR (Pin 6) und DTR (Pin 4) dann bekommst Du eine Signaländerung auf DSR.

    Schließt Du den Schaltkontakt des Relais zwischen:
    CTS (Pin 8) und RTS (Pin 7)
    oder
    CTS (Pin 8) und DTR (Pin 4) dann bekommst Du eine Signaländerung auf CTS.

    Schließt Du den Schaltkontakt des Relais zwischen:
    DCD (Pin 1) und RTS (Pin 7)
    oder
    DCD (Pin 1) und DTR (Pin 4) dann bekommst Du eine Signaländerung auf DCD.
    Alex F. bedankt sich. 

  3. #3
    Nino14 Nino14 ist offline Mitglied Gold
    Registriert seit
    Feb 2007
    Beiträge
    118
    hey danke schonmal

    wenn ich den Code jetz richtig verstanden habe geht es da aber um eine Datenübertragung oder habe ich das falsch verstanden? Könntest du eventuell noch ein Paar Kommentare in deinen Code einfügen?
    Ich werde mal sehen was ich trotzdem schon daraus machen kann.

    Achja was ich im ersten Post vergessen habe ist das das Betriebssystem WIN 98 ist. Ich programmiere im moment mit Visual Basic 2008 Express edition. Bin aber auch bereit jeweils etwas anderes zu verwenden.

    LG Nino

    und ich hoffe mir können noch ein paar mehr leute hilfen geben.
    Geändert von Nino14 (05.02.08 um 16:10 Uhr)
     

  4. #4
    ronaldh ronaldh ist offline Mitglied Brillant
    Registriert seit
    Apr 2007
    Ort
    Hannover
    Beiträge
    912
    Das Beispiel von Wincnc ist VB6. Falls Du das Projekt in VB 2008 realisieren willst,solltest Du Deine Frage im .NET-Forum noch mal stellen.
     

  5. #5
    Nino14 Nino14 ist offline Mitglied Gold
    Registriert seit
    Feb 2007
    Beiträge
    118
    wie schon gesagt ich bin recht flexibel und kann auch gerne umsteigen. Damit erklärt sich mir auch warum das bei mir nicht funktioniert hat...
    Danke
    ronaldh bedankt sich. 

  6. #6
    ronaldh ronaldh ist offline Mitglied Brillant
    Registriert seit
    Apr 2007
    Ort
    Hannover
    Beiträge
    912
    Prima, denn das Beispiel, das wincnc geschrieben hat, sieht gut aus. Mit VB .NET geht das sicherlich auch, aber, wie gesagt, da können wir Dir hier nicht so gut helfen wie die .NET-Spezialisten.
     

  7. #7
    Nino14 Nino14 ist offline Mitglied Gold
    Registriert seit
    Feb 2007
    Beiträge
    118
    cool danke das ihr mir alle so viel helft...

    Aber es wäre für mich viel einfacher wenn ihr den code kommentieren könntet da es bei mir doch recht lange her ist das ich das letzte mal VB geprogt hab. Wäre echt sehr nett...

    LG Nino
     

  8. #8
    Avatar von wincnc
    wincnc wincnc ist offline Mitglied Platin
    Registriert seit
    Aug 2004
    Beiträge
    632
    Hallo, das Ganze in Net:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    
    Public Class Form1
     
        Private Sub SerialPort1_PinChanged(ByVal sender As Object, ByVal e As System.IO.Ports.SerialPinChangedEventArgs) Handles SerialPort1.PinChanged
            Select Case e.EventType
     
                Case IO.Ports.SerialPinChange.DsrChanged
                    If Me.SerialPort1.DsrHolding Then
                        MsgBox("DSR High")
                    Else
                        MsgBox("DSR Low")
                    End If
     
                Case IO.Ports.SerialPinChange.CtsChanged
                    If Me.SerialPort1.CtsHolding Then
                        MsgBox("CTS High")
                    Else
                        MsgBox("CTS Low")
                    End If
     
                Case IO.Ports.SerialPinChange.CDChanged
                    If Me.SerialPort1.CDHolding Then
                        MsgBox("CD High")
                    Else
                        MsgBox("CD Low")
                    End If
     
            End Select
        End Sub
     
        Private Sub Form1_FormClosed(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed
            Me.SerialPort1.Close()
        End Sub
     
        Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
            Me.SerialPort1.PortName = "COM1"
            Me.SerialPort1.Open()
            Me.SerialPort1.RtsEnable = True
            Me.SerialPort1.DtrEnable = True
        End Sub
    End Class
     

Ähnliche Themen

  1. Serielle Schnittstelle in C
    Von mstangl im Forum C/C++
    Antworten: 5
    Letzter Beitrag: 14.07.09, 10:59
  2. PHP und serielle Schnittstelle
    Von blunder im Forum PHP
    Antworten: 2
    Letzter Beitrag: 19.01.08, 11:27
  3. serielle schnittstelle in MS VS .NET
    Von notausgang im Forum Java
    Antworten: 6
    Letzter Beitrag: 26.02.04, 15:01
  4. Serielle Schnittstelle
    Von MaxMara im Forum PHP
    Antworten: 4
    Letzter Beitrag: 10.02.04, 21:33
  5. serielle Schnittstelle
    Von Morpheus im Forum C/C++
    Antworten: 7
    Letzter Beitrag: 28.01.04, 21:40