在 c# 中检测连接到串行端口的打印机中页面的可用性

本文关键字:打印机 可用性 检测 连接 串行端口 | 更新日期: 2023-09-27 18:34:50

我有一台打印机连接到PC的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
            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();

但是当我运行修改后的代码时,它会冻结整个应用程序。我是新来的,如果我在任何地方都很愚蠢,那么大豆。建议一些东西...

在 c# 中检测连接到串行端口的打印机中页面的可用性

ReadLine(( 冻结,直到收到一行。请参考链接

您可以为串行端口设置读取超时,如下所示:

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();