RS 485未显示任何结果

时间:2018-04-02 00:43:29

标签: c# rs485

我正在尝试从rs 485通信接口读取数据并在文本框中写入,但我没有从此代码中获取数据。我正在进行水测量,我是c#的初学者。我见过这样的类似问题,但无法得到答案。数据格式是这样的。 D014802,+ 000.042,+ 000.082,003680,+ 000805.66,+ 025.25,0193FA,0.99697,0000,B7C9 帮助我。

 public partial class MainForm : Form
    {

    SerialPort aSerialPort;
    InputRegister mobjGlobalform2;
    Form3 mobjGlobalform3;
    LoginForm AdminLogin = new LoginForm();
    //Form6 softwareVersion = new Form6();
    bool isUserMode = true;
    public MainForm()
    {
        InitializeComponent();
        getAvailablePorts();
    }

    private void btn_close_Click(object sender, EventArgs e)
    {
        Application.Exit();
    }

    private void checkBox1_CheckedChanged(object sender, EventArgs e)
    {
        InputRegister mobjform2 = new InputRegister();

        if (checkBox1.Checked)
        {
            mobjGlobalform2 = mobjform2;
            mobjform2.Show();
            if(isUserMode==true)
            {
                mobjform2.groupbox_form2Takuwa.Hide(); 
                mobjform2.Height = 215;
                mobjform2.Width = 575;

            }
        }
        else
        {
            mobjGlobalform2.Close();

            //mobjform2.Close();
        }
    }

    private void checkBox2_CheckedChanged(object sender, EventArgs e)
    {
        Form3 mobjform3 = new Form3();
        if (checkBox2.Checked)
        {
            mobjGlobalform3 = mobjform3;
            mobjform3.Show();
            if(isUserMode==true)
            {
                mobjform3.groupbx_form3takuwamode.Hide(); 
                mobjform3.Height = 254;
                mobjform3.Width = 407;
            }
        }
        else
        {
            mobjGlobalform3.Close();
            //mobjform2.Close();
        }
    }

    private void timer1_Tick_1(object sender, EventArgs e)
    {
        label13.Text = DateTime.Now.ToString();

       // splitContainer1.Panel2.Controls.Add(label13);
        if(AdminLogin.isAdminMode)
        {
            lbl_AdminLogout.Show();
            isUserMode = false;
        }
    }

    private void btn_Clear_Click(object sender, EventArgs e)
    {
        txtbox_ShowData.Text = String.Empty;                  // clear the data from text box
    }

    private void MenuStrip_AdminLogin_Click(object sender, EventArgs e)
    {
        //Form5 mobjform5 = new Form5();
        AdminLogin.Show();
    }

    private void lbl_AdminLogout_Click(object sender, EventArgs e)
    {
        AdminLogin.isAdminMode = false;
        isUserMode = true;
        lbl_AdminLogout.Hide();
        MessageBox.Show("Logout Successful");
    }

    private void btn_SoftwareVersion_Click(object sender, EventArgs e)
    {
        //softwareVersion.Show();
        Form6 Versionform6 = new Form6(); 
        Versionform6.Height = 272;
        Versionform6.Width = 507;
        Versionform6.Show();
    }

    private void btn_connectaddress_Click(object sender, EventArgs e)
    {
        Setting addressconnectform6 = new Setting();
        addressconnectform6.Show();
        if(isUserMode == true)
        {
            addressconnectform6.groupbx_takuwaform7.Hide(); 
            addressconnectform6.Height = 257;
            addressconnectform6.Width = 657;
        }
        else
        {
            addressconnectform6.groupbx_takuwaform7.Show();

        }
   }
    #region combox
    // port show in combobox
    private void getAvailablePorts()
    {
        string[] ports = SerialPort.GetPortNames();
        cbbx_comport.Items.Clear();
        foreach (string comport in ports)
        {
            cbbx_comport.Items.Add(comport);
        }

    }
    #endregion

    private void btn_Connect_Click(object sender, EventArgs e)
    {
        initializeSensor();
        aSerialPort.DataReceived += new SerialDataReceivedEventHandler(Rs485DataReceivedEventHandler);

    }
    private void Rs485DataReceivedEventHandler(object sender, SerialDataReceivedEventArgs e)
    {
        SerialPort sData = sender as SerialPort;
        string recvData = sData.ReadLine();

      this.Invoke((MethodInvoker)delegate { DataReceived(recvData); });
    }
    private void initializeSensor()
    {
        aSerialPort = new SerialPort(cbbx_comport.Text);
        aSerialPort.BaudRate = 38400;
        aSerialPort.Parity = Parity.None;
        aSerialPort.StopBits = StopBits.One;
        aSerialPort.DataBits = 8;
        if (aSerialPort.IsOpen == false)
        {
            try
            {
                aSerialPort.Open();
                //aSerialPort.WriteLine("c");   //clear 
                //aSerialPort.WriteLine("o");
            }
            catch { }

        }
    }
    private void DataReceived(string recvData)
    {

        txtbx_sensorData.Text = recvData;

    }

1 个答案:

答案 0 :(得分:1)

您正在实例化一个局部变量,而不是该字段。

而不是

SerialPort aSerialPort = new SerialPort(cbbx_comport.Text);

尝试

aSerialPort = new SerialPort(cbbx_comport.Text);