串口保持提示超时错误

时间:2017-12-26 01:38:23

标签: c# serial-port

private void serialPort_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{
    if (Clos_flag) return;
    try
    {
        Listening = true;
        if (serialPort.IsOpen)
        {
            this.txt_weight.Invoke(new MethodInvoker(delegate
            {
                serialPort.NewLine = "\r";
                string weight = serialPort.ReadLine();
                weight = weight.Trim();
                MessageBox.Show(weight);
                if (weight.IndexOf("i") > 0)
                {
                   weight = weight.Substring(3, 8);
                   txt_weight.Text = weight.Substring(0, weight.LastIndexOf("0") + 1);
                }
            }));
        }
    }
    catch (Exception eg)
    {
        MessageBox.Show(eg.ToString());
    }
    finally
    {
        Listening = false;
    }
}

我使用上面的代码来读取称重机,但它会一直提示超时错误我不确定编码的哪一部分是错误的。

1 个答案:

答案 0 :(得分:0)

您检查配置序列端口。 运行代码serialPort.Open()时可能出错。

你可以参考代码:

void InitialComport1()
{
    mySerialPort1 = new SerialPort(Temp._comport1);

    if (mySerialPort1.IsOpen)
    {
        mySerialPort1.Close();
    }

    mySerialPort1.BaudRate = Temp._baudRate1;
    mySerialPort1.Parity = Parity.None;
    mySerialPort1.StopBits = StopBits.One;
    mySerialPort1.DataBits = Temp._dataBit1;
    mySerialPort1.Handshake = Handshake.None;
    mySerialPort1.RtsEnable = true;
    mySerialPort1.DataReceived += new SerialDataReceivedEventHandler(DataReceivedHandler1);

    try
    {
        mySerialPort1.Open();
    }
    catch
    {
        Messagebox.Show("Error myserialPort1")
    }
}

private void DataReceivedHandler1(object sender, SerialDataReceivedEventArgs e)
{
    try
    {
        string indata = mySerialPort1.ReadLine();
        try
        {
            string mass = indata.Substring(7, 7);
            SetText1((Convert.ToInt32(mass)).ToString());
        }
        catch
        {
            string mass = indata.Substring(3, 7);
            SetText1((Convert.ToInt32(mass)).ToString());
        }
    }
    catch (Exception eg)
    {
        MessageBox.Show(eg.ToString());
    }
}