Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 检测连接到c中串行端口的打印机中页面的可用性#_C#_Printing_Serial Port - Fatal编程技术网

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

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

我有一台打印机连接到我电脑的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();
但当我运行修改后的代码时,它会冻结整个应用程序。我是新来的,所以我在任何地方都很蠢。 建议某事……。

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端口进行通信,那么您必须首先向其发送特定命令。查看打印机的编程手册。