C# 检测连接到c中串行端口的打印机中页面的可用性#
我有一台打印机连接到我电脑的COM1端口,我可以通过简单的代码行轻松打印出来C# 检测连接到c中串行端口的打印机中页面的可用性#,c#,printing,serial-port,C#,Printing,Serial Port,我有一台打印机连接到我电脑的COM1端口,我可以通过简单的代码行轻松打印出来 SerialPort myPort = new SerialPort("COM1", 9600, Parity.None, 8, StopBits.One); myPort.Handshake = Handshake.None; if (myPort.IsOpen == false) //if not open, open the port myP
SerialPort myPort = new SerialPort("COM1", 9600, Parity.None, 8, StopBits.One);
myPort.Handshake = Handshake.None;
if (myPort.IsOpen == false) //if not open, open the port
myPort.Open();
myPort.WriteLine("Hello World");
myPort.Close();
但是在打印之前,我想确保我的打印机有可用的页面,有人能告诉我怎么做,或者我能得到的任何参考资料吗
我想通过这样修改上面的代码来读取端口
SerialPort myPort = new SerialPort("COM1", 9600, Parity.None, 8, StopBits.One);
myPort.Handshake = Handshake.None;
if (myPort.IsOpen == false) //if not open, open the port
myPort.Open();
myPort.WriteLine("Hello World");
System.Threading.Thread.Sleep(100);
label3.Text = myPort.ReadLine();
myPort.Close();
但当我运行修改后的代码时,它会冻结整个应用程序。我是新来的,所以我在任何地方都很蠢。
建议某事……。ReadLine()将冻结,直到收到一行。请参阅
您可以为SerialPort设置ReadTimeout,如下所示:
SerialPort myPort = new SerialPort("COM1", 9600, Parity.None, 8, StopBits.One);
myPort.Handshake = Handshake.None;
if (myPort.IsOpen == false) //if not open, open the port
myPort.Open();
myPort.WriteLine("Hello World");
myPort.ReadTimeout = 500;
System.Threading.Thread.Sleep(100);
label3.Text = myPort.ReadLine();
myPort.Close();
打印机从不使用握手。如果他们通过COM端口进行通信,那么您必须首先向其发送特定命令。查看打印机的编程手册。