串口WriteLine有时会失败

时间:2013-02-10 15:55:50

标签: c# serial-port

我写了一个简单的程序,通过串口发送AT命令。 我按照指示行事 MSDN EXAMPLE

串口(38400,N,8,1)

serialPort1.PortName = "COM" + "5";// textBox1.Text;
        try
        {
            if (!(serialPort1.IsOpen))
                serialPort1.Open();


            // if (listBox1.SelectedIndex == 0 || listBox1.SelectedIndex == 1)
                serialPort1.WriteLine("atrst");
            // else
            //     serialPort1.WriteLine("araprst");

            serialPort1.Close();
        }
        catch (Exception ex)
        {
            MessageBox.Show("Error opening/writing to serial port :: " + ex.Message, "Error!");
            Application.Exit();
        }

当我使用WriteLine命令时,有时AT命令不会发送到端口。 知道为什么吗? 有没有办法知道WriteLine(String)失败?

1 个答案:

答案 0 :(得分:0)

您所描述的内容有几个原因,MSDN文章中有一些......有趣的...代码。从你的代码片段我可以看到你没有正确设置串口,所以我将发布一个工作示例,你已经给出了设置,并希望它有所帮助。

serialPort = new SerialPort(
                "COM5",      // port name
                38400,       // baud rate
                Parity.None, // parity
                8,           // bits
                StopBits.One // stop bits
            );

serialPort.Handshake = Handshake.None;
serialPort.WriteTimeout = 500;

serialPort.Open();
serialPort.Write("atrst");
serialPort.Close();

这是一种非常简单的方法,不包括错误处理,但它适用于具有您给出的设置的串行设备。除非握手是错误的,考虑到高波特率,这是非常可能的,你应该研究一下。