Laden...

[erledigt] Empfangen von Daten über serielle Schnittstelle funktioniert - das Senden nicht

Erstellt von Metalchild vor 14 Jahren Letzter Beitrag vor 14 Jahren 1.458 Views
M
Metalchild Themenstarter:in
8 Beiträge seit 2009
vor 14 Jahren
[erledigt] Empfangen von Daten über serielle Schnittstelle funktioniert - das Senden nicht

Hallo an alle,

ich hoffe ich bin hier richtig. Habe schon eine zeitlang rumgegoogled und hier im Forum gesucht, bin aber leider noch nicht fündig geworden.

Mein Problem:
Ich schreibe in C# (nutze Visual Studio 2008) ein kleines Tool, mit dem ich über die serielle Schnittstelle Meldungen von einem Drucker empfange (z.B. Seitenquittierungen etc). Das klappt auch wunderbar. Allerdings würde ich gerne auch per Knopfdruck einen String an den Drucker zurückschicken. Nur die Daten kommen leider beim Drucker nicht an. Eine Fehlermeldung tritt auch nicht auf.

Hier etwas Code von mir:


//Einstellungen stimmen mit denen des Druckers überein
ComPort.StopBits = System.IO.Ports.StopBits.One;
ComPort.Parity = System.IO.Ports.Parity.None;
ComPort.Handshake = System.IO.Ports.Handshake.XOnXOff;
ComPort.BaudRate = 9600;
ComPort.DataBits = 8;

ComPort.Open();

Status = ComPort.ReadLine();   //klappt einwandfrei

ComPort.Write("Test");  //dieser String kommt nicht beim Drucker an

ComPort.Close();

Ich hab auch schon das Lesen weggelassen und nur versucht zu schreiben, aber es klappt nicht. Da ich erst seit ein paar Wochen C# lerne bzw mir selbst beibringe und ich nichts dazu gefunden habe, hoffe ich, daß mir jemand von euch helfen kann.

Was genau mache ich falsch? Muß ich vielleicht selbst den String in Bits umwandeln und dann bitweise rüberschicken? Da probiere ich auch gerade herum, aber noch ohne Erfolg...

888 Beiträge seit 2007
vor 14 Jahren

Hallo Metalchild,

teste es mal hiermit:

Template SerialPort

M
Metalchild Themenstarter:in
8 Beiträge seit 2009
vor 14 Jahren

Vielen Dank, Joetempes!

Verdammt, deine Anwendung sieht sogar fast genau so aus wie meine 😃

Nur leider habe ich damit das gleiche Ergebnis: ich empfange zwar die Meldungen vom Drucker, aber senden kann ich nichts.

Da ich davon ausgehe, daß deine Anwendung eigentlich funktioniert, baut mich das doch etwas auf - denn dann liegt der Fehler ja eventuell gar nicht in meinem Code, sondern irgendwo in der Hardware.

Das ist zwar auch nicht wirklich gut, aber dann kann ich wenigstens nichts dafür. Ich werde mir deinen Code aber nochmal ganz genau angucken. Vielleicht finde ich ja doch noch was.

Danke nochmal, auch dafür, daß die Antwort so fix kam!

S
18 Beiträge seit 2008
vor 14 Jahren

Hallo,

schreib uns doch mal, wie das Kabel belegt ist.

Auch gebrückte PIN können wichtig sein

Grüße

Jürgen

185 Beiträge seit 2005
vor 14 Jahren

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.

M
Metalchild Themenstarter:in
8 Beiträge seit 2009
vor 14 Jahren

Zur Belegung des Kabels kann ich morgen mehr sagen.

Zum Befehl: Der "Test"-String ist nur ein Beispiel. Ich schicke konkrete Steuerungssignale rüber. Daß davon nichts ankommt sehe ich daran, daß ich den Speicher des Druckers auslesen kann. Der ist nach dem Senden leer. Ich kann die Steuerungsbefehle auch per Centronics und über Ethernet an den Drucker schicken, dann klappt es.

Edit: Mein Code ist aber generell richtig, oder?

D
171 Beiträge seit 2008
vor 14 Jahren

Hallo Metalchild,

der Code ist soweit Ok, machst ja auch nichts dolles, nur senden und empfangen.
Wenn du Empfangen kannst, woher kommen da die Daten, du forderst ja nichts an, werden die immer gesendet, oder machst du das händisch? Evtl. Empfängt dein Drucker nichts weil er gerade sendet.
Kann dein Drucker mit Strings umgehen, hast du mal Byte[] oder so versucht zu senden, wenn du Steuercodes senden willst, sind das ja nicht zwingend strings.

Gruß Daniel

M
Metalchild Themenstarter:in
8 Beiträge seit 2009
vor 14 Jahren

Das Problem hat sich geklärt, vielen Dank und sorry für die Störung - es war tatsächlich einfach nur eine Fehlkonfiguration des Druckers. Er hat den Kanal für's Senden einfach dichtgemacht.

Jetzt läuft alles. Der Drucker feuert seine Statusmeldungen automatisch raus, zwischendurch Daten rüberschicken kann ich aber trotzdem.

Danke für eure Hilfe, ich hätte sonst wahrscheinlich noch ewig im Code nach Fehlern gesucht 😃