2

我正在尝试使用简单的写入命令将字符串写入 Com5 上的内部打印机。WriteLine 方法打印得很好,但 Write 不会。下面是我正在调用的代码。它只是调用 .NET 函数的简单包装函数。

  public static void Write(string printString)
  {
     //intialize the com port
     SerialPort com5 = new SerialPort("COM5", 9600, Parity.None, 8, StopBits.One);
     com5.Handshake = Handshake.XOnXOff;
     com5.Open();

     //write the text to the printer
     com5.Write(printString);
     Thread.Sleep(100);

     com5.Close();
  }

  public static void WriteLine(string printString)
  {
     //intialize the com port
     SerialPort com5 = new SerialPort("COM5", 9600, Parity.None, 8, StopBits.One);
     com5.Handshake = Handshake.XOnXOff;
     com5.Open();

     //write the text to the printer
     com5.WriteLine(printString);
     Thread.Sleep(100);

     com5.Close();
  }
4

3 回答 3

1

WriteLine will append a new line character to the string. Perhaps this "flushes" a buffer to get the printer to respond to the input.

于 2013-07-16T17:26:01.997 回答
1

你如何找到它是否写的?我的意思是如果另一端是应用程序监听?那么它是在寻找 CrLf 吗?您可以在字符串中添加新行并将其发送到 Write 并查看吗?如果这行得通?Coz writeline 和 write 除了新行之外,两者的工作方式应该相似。

于 2013-07-16T17:27:14.153 回答
0

SerialPort 对象使用 Stream 对象在较低级别进行读取和写入。它可以通过属性 BaseStream 访问。也许如果您在写指令之前刷新流,它将强制流中的更新。

...
//write the text to the printer
com5.Write(printString);
com5.BaseStream.Flush();
Thread.Sleep(100);
...

艾丽西亚。

于 2014-05-22T13:28:35.130 回答