Über COM-Port empfangene Daten an Drucker weiterleiten

  • VB6

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von Lightsource.

    Über COM-Port empfangene Daten an Drucker weiterleiten

    Guten Morgen alle zusammen,
    ich habe folgendes Problem:
    Ich empfange Daten an meinem Rechner von einer Produktionsanlage über die serielle Schnittstelle.
    Hierzu verwende ich das Microsoft Comm Control 6.0 (MSCOMM32.ocx).

    Hier ist mal der Code, mit dem ich zunächst das Com-Control initialisiere:

    Visual Basic-Quellcode

    1. Private Sub Form_Load()
    2. With MSComm1
    3. .CommPort = 3
    4. .Handshaking = 2 - comRTS
    5. .InBufferSize = 500 'Festlegung der Größe des Empfangspuffers auf 500 Zeichen
    6. .InputLen = 0 'Durch InputLen = 0 wird der gesamte Inhalt des Empfamgspuffers gelesen
    7. .RThreshold = 1
    8. .RTSEnable = True
    9. .Settings = "9600,n,8,1"
    10. .SThreshold = 1
    11. .PortOpen = True
    12. End With
    13. End Sub




    Die empfangenen Daten schreibe ich dann zuerst in eine Textdatei und leite sie direkt an einen Drucker weiter,
    um sie auszudrucken mit dem folgenden Code:

    Visual Basic-Quellcode

    1. Sub HandleInput(InBuff As String)
    2. Dim Empfangene_Daten As String
    3. 'Verarbeitung des empfangenen Textes.
    4. 'Dieser wird zunächst in das Textfeld "Text1" geschrieben
    5. Text1.SelStart = Len(Text1.Text)
    6. Text1.SelText = InBuff
    7. 'Gesamten empfangenen Text in eine Textdatei schreiben
    8. Empfangene_Daten = InBuff
    9. Open App.Path + "\Empfangene_Daten_AS18.txt" For Append As #1
    10. Print #1, Empfangene_Daten
    11. Close #1
    12. 'Empfangenen Text an Drucker weiterleiten
    13. Printer.Print Empfangene_Daten
    14. Printer.EndDoc
    15. End Sub




    Ich habe festgestellt, dass die empfangenen Daten in drei Druckaufträgen an den Drucker gesendet werden.
    Mitten im Text wird ein Wort unterbrochen und an dieser Stelle auf der nächsten Seite weitergedruckt.
    Weiß jemand, woran das liegt? Wieso wird nicht nur ein einziger Druckauftrag gesendet, der die gesamten
    Daten enthält?

    Ich möchte eigentlich haben, dass der Text ausgedruckt, das Blatt aber nicht ausgeworfen wird, sondern
    der nächste gesendete Text direkt hintendran gehängt wird.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „MatthiasKraemer“ ()

    Dafür wäre ein Nadeldrucker mit Endlospapier besser geeignet.
    Bei einem gängigen Drucker musst du im Programm sammeln und bei entsprechender Menge dann den Teil drucken.
    Gruß
    Peterfido

    Keine Unterstützung per PN!
    Aha, momentan haben wir auch einen Nadeldrucker mit Endlospapier an dieser Stelle im Einsatz.
    Meinst du, dass es mit diesem Drucker direkt gehen würde? Ich kann ihn leider nicht so einfach mal zum Testen
    an meinen Rechner anschließen. da der Drucker so eingestellt ist, dass er die Daten auch nur über die serielle
    Schnittstelle empfangen kann und die eine vorhandene serielle Schnittstelle an meinem Rechner schon
    belegt ist.

    Wird also automatisch nach dem Beenden des Druckes mit einem normalen Tintenstrahler oder Laserdrucker
    das Papier ausgeworfen, wenn ein Druckauftrag gedruckt wurde?
    Ich hätte gerne genau das Verhalten des Nadeldruckers mit einem Laser- oder Tintenstrahldrucker nachgestellt.
    Ist das nicht so einfach machbar?
    Mit einem Laserdrucker in keinem Fall. Die bauen die Seite komplett auf und drucken diesen in einem Durchgang. Tintenpinkler sind auch nicht dafür konstruiert. Evtl. gibt es im Treiber eine Option den Blattvorschub am Ende zu unterdrücken. Trotzdem musst Du dann darauf achten nicht auf der Walze ohne Papier zu drucken.
    Gruß
    Peterfido

    Keine Unterstützung per PN!
    Was du auch probieren kannst:
    Richte einen GenericTreiber für deinen Drucker ein.
    Damit umgehst du den Windowstreiber, der meist
    versucht die Texte als Grafik auszudrucken.
    Dann wird tatsächlich nur Text gedruckt, bzw. die
    Steuerzeichen die halt gerade gesendet werden.
    Dann musst du aber selbst für den Seitenumbruch
    sorgen, falls du diesen benötigst.