Warum stellst du in den Diensten nicht ein, das dein Dienst automatisch wieder gestartet wird? Dann beendest du den Dienst, und Windows startet den Dienst wieder.
Steht doch da in der Exception: Relay access denied
Was willst du mit dem Fußtaster erreichen? Du wirst mit Sicherheit Probleme mit dem Prellen des Tasters bekommen. Eine Verzögerung von 200ms für das ausblenden der Prellimpulse must du schon rechnen.
Auch wird der Fußtaster ja nicht im ms-Bereich an- und ausgeschaltet vermute ich mal.
Hast du wie von ujr geschrieben Hyperterminal verwendet?
Wie sieht die serielle Verbindung aus, welche Leitungen werden benötigt?
nur RX,TX,GND oder mehr?
Eventuell sendest du die Daten zu schnell an das Gerät, versuche mal die Bytes einzeln mit kurzen pausen zu senden.
Ich vermute mal, dass du
Etwas mehr Infos wären aber schon hilfreich.
Um Verschiedene Sannungen an die Platten zu bekommen brauchst du einen D/A-Wandler. Diesen kannst du dann z.B. mit der Paralellschnittstelle ansteuern, und die Spannung steuern. Eine Verstärkerstufe brauchst du da natürlich auch noch.
Einfach an die Serielle- oder USB-Schnittstelle anschliessen und funktioniert geht nicht.
Gruß Martin
Du musst doch aber eine Protokollbeschreibung haben, wie du mit dem Terminal kommunizieren kannst.
Da mich das auch Interessiert hat, habe ich mal google bemüht, und innerhalb 2 min
brauchbare Ergebnisse bekommen.
Das eigenartige ist auch. Wenn ich zB mal eine Stunde nciht auf der Seite war, dauert der erste Aufruf wieder so ewig lange.
Das liegt daran, das sich der IIS nach ca. 20 min schlafen legt 😉
Kontrollier mal die Einstellungen des IIS.
Bei IIS7:
Anwendungspools > Erweiterte Einstellungen > LeerlaufTimeOut
probiers mal mit
addr[0].ToString()
Port Forwarding hat auch mit der Firewall nichts zu tun.
Du must dem Router sagen, das er Anfragen an den Port XY an deinen PC weiterleiten soll.
Such mal nach Port Forwarding und NAT, das wird dir helfen.
Was sendest du an den Server?
Hast du dir mal angeschaut, was gesendet wird?
Ich Vermute, das du schlicht und einfach kein CR oder LF sendest, das der Server als Eingabeende auswertet.
Wenn du mit PUTTY etwas sendest, schliesst du die Eingabe ja auch mit Return ab 😉
wenn ich das richtig verstehe, sollen nicht 2 Programme auf den COM-Port zugreifen, sonden es sollen 2 Geräte an den COM-Port angeschlossen werden.
Wenn dem so ist, funktioniert das nicht.
Mit deinem Multimeter misst du nur den Ohmschen Widerstand, der ist hier das kleinste Problem. Kabellänge ist bis 100m zuläsig. (Davon rechnet man 10m für Anschlussleitungen von der Dose zu den Geräten ab).
Das was dir Probleme macht, kannst du nur mit einem Oszi messen;)
Hast du das mal mit z.B. Hyperterminal getestet?
Bekommst du da die richtigen Antworten?
Eventuell noch CR und/oder LF senden.
Sende doch mal Zeichen für Zeichen mit einer kleinen Pause. Vermutlich ist der Empfänger einfach zu langsam.
Was willst du haben?
du kannst auch über die Serielle Schnittstelle Daten austauschen.
Übrigends gibt es die Suchfunktion hier im Board, und google.
Da findest du zig Beispiele.
Ich würde mal sagen, du übertragst die ASCII-Zeichen, du must aber bytes mit den Hexwerten übertragen.
Ich ersetzte solche Zeichen in meinen Logfiles immer. Du wirst immer Problem bei der Anzeige von Steuerzeichen haben.
Meine Ausgaben sehen dann z.B. so aus:
{STX}{SOH}Test{EOH}TextText{EOT}
Das Problem kann sein, dass das alte Gerät die Zeichen nicht so schnell lesen kann.
Ich hatte auch schon solche Probleme, und dann einfach Zeichen für Zeichen mit einer kleinen Pause gesendet.
Was verstehst du unter richtigen Hexcode?
Ascii 'A' = 65 = 0x041
es werden immer nur Bits übertragen;)
warum lädst du dir nicht das SDK runter?
laut Glaskugel funktioniert das
Ich kann nur sagen:
von hinten durch die Brust ins Auge 😁
Anzeige der Datenbytes als Hex-Folge:
BitConverter.ToString(data);
Du solltest dir die Daten aber nicht als string holen, sondern als Byte-Array.
Die Beschreibung wirst du nur vom Hesteller direkt bekommen können. Ja nachdem, was du machen musst, kann dir aber eventuell auch eine ESPA Anbindung reichen. Das Protokoll ist einfach zu bekommen.
Gruß Martin
Ein Broadcast sendest du auch nicht an 255.255.255.255 sondern an dein Netz und die Adresse 255
z.b. 192.168.0.255
Vielleicht so?
listBox.Items.Count
oder einfach eine Ascii-Tabelle zu rate ziehen:
LF = 0x0A
CR = 0x0D
Wenn du dir eine ASCII-Tabelle anschaust, dann hast du doch alle Zeichen auch als HEX-Werte. Die kannst du dann auch casten und senden.
Edit: Handshake auf XonXoff gesetzt nun gibt es kein Timeout mehr. Jedoch bleibt CTS auf false.
Das ist ja klar, entweder du nimmst den Hardwarehandshake (RTS/CTS) oder Softwarehandshake (Xon/Xoff)
Woher weist du, das der String nicht gesendet wird? Hast du einen Schnittstellentester an der Schnittstelle?
Ich würde ganz spontan sagen, es fehlt ein CR/LF am Ende des Druckerbefehls.
Wenn du das mit dem MAX232 realisierst, kostet das keine 5€ und ca. 30min Zeit.
Das einfachste ist, du nimmst dazu die Handshake-Leitungen der seriellen Schnittstelle. Zur Pegelwandlung brauchst du nur z.B. den IC MAX232 und ein paar Kondensatoren. Der Wandelt TTL-Logik (0V/5V) in die benötigten Spannungen um.
[/Edit ]
Das mit dem MAX232 steht ja schon oben
So ein Kabel kannst du nur selbst machen. Du kannst aber einfach die Dosen aufschrauben, du brauchst nur 2 Adern. Der Splitter muss natürlich oben in der Wohnung angeschlossen werden.
hast du das was wolpertinger geschrieben hat mal probiert? Das ist das was du brauchst.
Ein String ist nichts anderes wie ein byte-array, das da übertragen wird.
Ich setzt den ReceivedBytesThreshold immer auf 1, und hole mir dann alle Bytes ab.
Das Datenpaket wird zusammengestellt, und beim Ende-Zeichen schreibe ich die Empfangenen Daten in eine Queue zur weiteren Verarbeitung.
Andere Versuche haben bei mir immer irgendwann Probleme ergeben.
du musst dann die Werte, die mit den Steuerzeichen kollidieren wandeln.
Beispiel:
Steuerzeichen F0 - FF sind Steuerzeichen
F0 = Start of Frame
FE = ESC
FF = End of Frame
Wenn ein Zeichen >F0 dann wird das ESC vorrangestellt, dann das Zeichen mit einem gelöschtem Höchstwertigen übertragen.
Eine Checksume wäre hier auch von vorteil.
Wenn du die Übertragung im Microcontroller auch selbst programmierst, dann würde ich ein Start und ein Stopp-Zeichen einfügen.
Du solltest dich mal mit der Netzwerktechnik auseinandersetzen, und verstehen wie die Verbindungsaufnahme über Router funktioniert. Das ist kein C# / Programmiertechnisches Problem, sondern hängt mit der funktionsweise der TCP/IP-Verbindung zusammen.
jedes Serielle Protokoll, daß ich bis jetzt verarbeitet habe, hat ein Start und ein Endezeichen.
Ich habe eine Variable oder ein array daß ich mit den empfangenen Daten fülle.
Beim Startzeichen wird die Variable/array gelöscht, und beim Endezeichen in eine Queue geschrieben.
Somit kann auch mehr wie 1 Datensatz auf einmal eingelesen werden.
Erst dann prüfe ich die Daten.
Wer garantiert dir, daß nicht ein Zeichen irgendwo verloren geht?
wenn du Router dazwischen hast, dann kommst du an Port-Forwarding nicht herum.
ja klar kommt der Fehler, _user ist ja ein string. Die Umwandlung verstehe ich eh nicht.
sendet das Gerät kein CR/LF nach einer Datenzeile? Daran kannst du dann ja das Ende erkennen und die Nachricht dann zusammensetzen.
Beschreib doch mal wo es hängt. Ansprechen der Schnittstelle, umsetzung der Befehle in Hexdarstellung,.......
nur dann kann dir auch geholfen werden
Also ich versuche gerade ein Programm zu schreiben, und es funktioniert einfach nicht. X(
Wer soll dir mit so einer Frage helfen?
Damit werden alle Leerzeichen ersetzt, es soll aber nur das Erste ersetzt werden, wenn ich das richtig verstanden habe.
Das Problem der IP-Adressen kannst du ja einfach mit DynDNS lösen.
Ein Trojaner ist ja schon auf dem Clientsystem wenn er aktiv wird, damit braucht er kein Portforwarding. Das bringt dich nicht weiter.
Das Portforwarding brauchst du immer auf der Seite, die vom Internet aus erreicht werden soll.
Wenn der Client das I-Net über einen Router erreicht, und der Server direkt erreichbar ist, brauchst du das forwarding auf der Clientseite, wenn der Server den Client erreichen soll.
Wenn der Client die Verbindung aufbaut, dann richtet der Router automatisch ein Routing ein, solange die Verbindung besteht. Sonst würde der Client ja nie die Antwort vom Server bekommen.
Welche Adresse trägst du denn am Server ein? Die Clientadresse?
Hallo,
der Fehler liegt wohl hier:
TcpListener listener = new TcpListener(IPAddress.Parse("127.0.0.1"), 56213);
Du benützt hier das Loopback-Interface. Du musst die richtige IP-Adrese eintragen
Das gleiche Problem habe ich auch (XP und VS2005) allerdings nur mit einem Projekt. Ich muss nach änderungen immer das Projekt neu erstellen, und danach das Debuggen starten.
Ich habe bis jetzt noch nichts gefunden damit das Compilieren wieder automatisch vor dem Starten des Programms ausgeführt wird.