2Danke
ERLEDIGT
JA
JA
ANTWORTEN
7
7
ZUGRIFFE
4665
4665
EMPFEHLEN
-
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
-
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.
-
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)
-
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.
-
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
-
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.
-
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
-
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
-
Serielle Schnittstelle in C
Von mstangl im Forum C/C++Antworten: 5Letzter Beitrag: 14.07.09, 10:59 -
PHP und serielle Schnittstelle
Von blunder im Forum PHPAntworten: 2Letzter Beitrag: 19.01.08, 11:27 -
serielle schnittstelle in MS VS .NET
Von notausgang im Forum JavaAntworten: 6Letzter Beitrag: 26.02.04, 15:01 -
Serielle Schnittstelle
Von MaxMara im Forum PHPAntworten: 4Letzter Beitrag: 10.02.04, 21:33 -
serielle Schnittstelle
Von Morpheus im Forum C/C++Antworten: 7Letzter Beitrag: 28.01.04, 21:40





Zitieren
Login





