2017-12-12 4 views
0


.NET CF를 사용하고 있으며 재무 및 비영리 영수증을 인쇄합니다. 그래서 블루투스를 통해 FML 10 KL에 연결해야합니다. 나는 이것을하기 위해 SerialPort을 사용하고 있지만 명령을 보낸 후에는 아무 일도 일어나지 않습니다.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(); 
    } 

내 명령 "BUF"을 채울 수 :
나는 이런 식으로 명령을 전송했습니다.
그 후 나는 응답을 읽으려고하지만 타임 아웃을 얻을 때마다. 또한 바이트 배열이 아닌 텍스트로 "쓰기"를 시도했지만 동일한 결과를 얻습니다. 누구든지 위대한 것이라고 조언 해 줄 수 있다면.

+0

'SerialPort' 클래스의 텍스트로'Write'를 사용하는 것이 좋습니다. 그러나'SerialPort'가 제대로 설정되어 있는지 확인해야합니다. 'BaudRate','DataBits','Parity','PortName','StopBits' 설정을 확인하십시오. – Baddack

답변

0

Bluetooth SPP 및 소켓 제어 장치를 포함한 대부분의 직렬 장치는 유니 코드를 지원하지 않습니다. 문자열이있는 경우 직렬 또는 직접 소켓 연결에 적합한 바이트 배열을 가져 오려면 인코딩 ASCII (또는 UTF8) getBytes를 사용해야합니다. 이 문제가 마음에 들지 않으면 필요한 {0x41} 대신 'A'에 대해 {0x00, 0x41} (유니 코드)의 바이트 시퀀스를 얻을 수 있습니다.

뭔가를 인쇄하려고하면 데이터를 파일에 쓰고 터미널 응용 프로그램 (이전 하이퍼 터미널)을 사용하여 그대로 보내서 보내는 코드가 유효한지 확인하십시오.

대부분의 프린터는 덤프 모드를 지원합니다. 작성한 코드가 덤프 모드를 사용하여 변경되지 않고 프린터로 전송되고 인쇄에 사용 된 유효성이 검사 된 코드와 비교되는지 확인하십시오.

운영 체제와 대상 장치가 버퍼를 사용할 수 있습니다. 버퍼가 플러시되었는지 확인한 다음 연결을 끊기 전에 스트림을 닫으십시오.

직렬 포트 클래스를 사용하면 장치와 클래스가 동일한 매개 변수 (예 : 8Bit 등)를 사용하도록 보장합니다. Bluetooth SPP의 경우 전송 속도가 채택되므로 실패없이 115200 또는 57600을 사용할 수 있습니다.

Datecs Fiscal Printing Protocol을 지원하는 클래스를 찾았습니다 : https://github.com/wqweto/UcsFiscalPrinters/blob/master/Samples/Demo1/Program.cs 아마도 이것을 사용하거나 클래스가 Datecs에서 어떻게 인쇄하는지보십시오.

0


나는 내 문제를 알아 냈습니다. 모바일 프린터와의 연결이었습니다. 나는 연결하고 다음과 같이 쓰고있다 : = 새로운하여 SerialPort ("COM5", 115200, Parity.None, 8, StopBits.One)

하여 SerialPort의 인포; inport.Write (buf, 0, buf.Length); Thread.Sleep (1000);

버퍼가 가득 차고 일부 데이터가 인쇄되지 않기 때문에 Thread.Sleep을 사용해야합니다.