当前位置: 代码迷 >> C# >> 关于Serialport,帮忙看下这两个步骤有错么
  详细解决方案

关于Serialport,帮忙看下这两个步骤有错么

热度:89   发布时间:2016-05-05 04:28:57.0
关于Serialport,帮忙看下这两个方法有错么
本帖最后由 warren_cao 于 2015-03-17 08:49:45 编辑
////打开串口并发送接收数据
 private void BTNOpenAndSend_Click(object sender, EventArgs e)
        {
            this.serialPort1.BaudRate = 2400;
            this.serialPort1.DataBits = 8;
            this.serialPort1.StopBits = StopBits.One;
            this.serialPort1.Parity = Parity.None;
            this.serialPort1.PortName = "COM2";
            try
            {
                OpenCOM();
                this.serialPort1.Write(this.TXTSend.Text.ToString().Trim());
                this.serialPort1.DataReceived += new SerialDataReceivedEventHandler(serialPort1_DataReceived);
            }
            catch(Exception Ex) 
                {
                    throw Ex;
                }
            finally
            {
                CloseCOM();
            }
        }


////////读取数据并显示
 private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
        {
            string s = "";
            int count = this.serialPort1.BytesToRead;
            byte[] data = new byte[count];
            this.serialPort1.Read(data, 0, count);

            foreach (byte item in data)
            {
                s += Convert.ToChar(item);
            }

            if (this.InvokeRequired)
            {
                this.Invoke(new MethodInvoker(delegate { this.TXTRecieve.Text = s; }));
            }
            else
            {
                this.TXTRecieve.Text = s;
            }
        }
 

------解决思路----------------------
此外,你串口连接设备了吗
你必须确保真的有收到数据,你这个回调方法才会执行
你串口根本没有连设备,那不执行不是正常的吗

不要以为你发送的内容会跑到接收里去,真那样通信不乱套了
发送是发送,接收是接收