namespace e_2016_06_23
{
    public partial class Smart_meter : Form
    {
        string path =   "C:\\Users\\Public\\data\\data_logging.txt";
        string path_m = "C:\\Users\\Public\\data\\energy_monitoring.txt";        public Smart_meter()
        {
            InitializeComponent();
        }        private void Form1_Load(object sender, EventArgs e)
        {
            String[] input = SerialPort.GetPortNames();
            comboBox1.Items.AddRange(input);
            comboBox16.Items.AddRange(input);
        }        void button1(object sender, EventArgs e)
        {
            try
            {
                serialPort1.PortName = comboBox1.Text;
                serialPort1.BaudRate = Convert.ToInt32(comboBox2.Text);
                serialPort1.DataBits = Convert.ToInt32(comboBox3.Text);
                serialPort1.StopBits = (StopBits)Enum.Parse(typeof(StopBits), comboBox4.Text);
                serialPort1.Parity = (Parity)Enum.Parse(typeof(Parity), comboBox5.Text);
                serialPort1.Open();
                progressBar1.Value = 100;
            }
            catch (Exception err)
            {
                MessageBox.Show(err.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
        void button7_Click(object sender, EventArgs e)
        {
            try
            {
                serialPort2.PortName = comboBox16.Text;
                serialPort2.BaudRate = Convert.ToInt32(comboBox15.Text);
                serialPort2.DataBits = Convert.ToInt32(comboBox13.Text);
                serialPort2.StopBits = (StopBits)Enum.Parse(typeof(StopBits), comboBox14.Text);
                serialPort2.Parity = (Parity)Enum.Parse(typeof(Parity), comboBox12.Text);
                serialPort2.Open();
                progressBar2.Value = 100;
            }
            catch (Exception err)
            {
                MessageBox.Show(err.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
                private void button3_Click(object sender, EventArgs e)
        {
            if (serialPort1.IsOpen)
            {
                string output;
                output = textBox2.Text;
                serialPort1.Write(output);
                textBox2.Text = "";
                from_bs_2 = "";
                serialPort1.DiscardOutBuffer();
            }
        }
        private void button2_Click(object sender, EventArgs e)
        {
            if (serialPort1.IsOpen)
            {
                serialPort1.Close();
                progressBar1.Value = 0;
            }
        }
        private void button8_Click(object sender, EventArgs e)
        {
            if (serialPort2.IsOpen)
            {
            serialPort2.Close();
            progressBar2.Value = 0;
            }
        }        private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
        {
            Thread.Sleep(1000);  // important
            from_bs_2 += serialPort1.ReadExisting();
            Thread.Sleep(1000);
            this.Invoke(new EventHandler(showdata));
            Thread.Sleep(1000);
        }        private void serialPort2_DataReceived(object sender, SerialDataReceivedEventArgs e)
        {
            Thread.Sleep(1000);  // important
            from_EM += serialPort2.ReadExisting();
            Thread.Sleep(1000);
            this.Invoke(new EventHandler(showdata_2));
            Thread.Sleep(1000);
              textBox1.Text += "laishujule";
        }上面是小弟程序中的一部分,其实特别简单,就是两个serialport通信,小弟之前写的只有一个serialport,那个时候一切正常,没有问题,但是今天用一样的方法加了serialport2之后,发现只有serialport1能用,2不能用,点击后显示连接,但是就是不能读取数据,请大家帮忙,真的是跪谢了!