2017-12-12 5 views
0


Ich verwende .NET CF und meine Aufgabe ist es, steuerlichen und nicht-fiskalischen Empfang zu drucken. Also muss ich über Bluetooth mit dem FML 10 KL verbinden. Ich verwende SerialPort, um dies zu tun, aber nach dem Senden von Befehlen passiert nichts.
Ich habe versucht, die Befehle wie folgt zu senden:Drucken von Datecs FML 10KL

byte[] buf = new byte[218]; 
    using (StreamWriter writer = new StreamWriter(inPort.BaseStream)) 
    { 
     writer.Write(buf); 
     //inPort.NewLine = "\n"; 
     //var msg = inPort.ReadLine(); 
    } 

I "buf" mit meinem Befehl zu füllen.
Danach versuche ich, die Antwort zu lesen, aber jedes Mal, wenn ich Timeout bekomme. Auch ich habe versucht, mit Text und nicht Byte-Array zu "schreiben", aber ich bekomme das gleiche Ergebnis. Wenn mir jemand einen Rat geben kann, wäre das großartig.

+0

Ich würde empfehlen, den 'Write' mit Text aus Ihrer' SerialPort' Klasse zu verwenden, wie Sie vorgeschlagen haben. Aber Sie müssen sicherstellen, dass Ihr 'SerialPort' korrekt eingerichtet ist. Überprüfen Sie die folgenden Einstellungen: BaudRate, DataBits, Parity, PortName und StopBits. – Baddack

Antwort

0

Die meisten seriellen Geräte einschließlich Bluetooth SPP und Socket-gesteuerter Geräte unterstützen kein Unicode. Wenn Sie eine Zeichenkette haben, müssen Sie die Kodierung ASCII (oder UTF8) getBytes verwenden, um ein Bytearray zu erhalten, das für die serielle oder direkte Socket-Verbindung geeignet ist. Wenn Sie sich nicht darum kümmern, erhalten Sie möglicherweise eine Bytefolge von {0x00, 0x41} (Unicode) für ein 'A' anstelle der benötigten {0x41}.

Wenn Sie versuchen, etwas zu drucken, vergewissern Sie sich, dass der gesendete Code gültig ist, indem Sie die Daten in eine Datei schreiben und die Datei so senden, wie sie eine Terminalanwendung (früher HyperTerminal) verwendet.

Die meisten Drucker unterstützen einen Dump-Modus. Vergewissern Sie sich, dass der von Ihnen erstellte Code unverändert an den Drucker gesendet wird, indem Sie den Speicherabzugsmodus verwenden und mit dem für den Druck verwendeten validierten Code vergleichen.

Das Betriebssystem und das Zielgerät verwenden möglicherweise einen Puffer. Stellen Sie sicher, dass der Puffer geleert wird, und schließen Sie dann den Stream, bevor Sie die Verbindung trennen.

Mit der Serial Port-Klasse sicherstellen, dass das Gerät und die Klasse die gleichen Parameter verwenden, dh sowohl 8Bit usw. Für Bluetooth SPP wird die Baudrate übernommen, Sie können 115200 oder 57600 ohne Fehler verwenden.

Ich habe eine Klasse gefunden, die das Datecs Fiscal Printing Protocol unterstützt: https://github.com/wqweto/UcsFiscalPrinters/blob/master/Samples/Demo1/Program.cs sollten Sie wahrscheinlich verwenden, oder schauen Sie sich an, wie die Klasse auf den Datecs druckt.

0


Ich fand mein Problem.Es war die Verbindung zum mobilen Drucker. Ich verbinden und wie diese zu schreiben:

Serialport inport = new Serialport ("COM5", 115200, Parity.None, 8, StopBits.One); inport.Write (buf, 0, buf.Length); Thread.Sleep (1000);

Ich muss Thread.Sleep verwenden, da der Puffer voll wird und einige der Daten nicht gedruckt werden.