当前位置: 代码迷 >> C# >> 还是serialport有关问题。详细说明在帖子里
  详细解决方案

还是serialport有关问题。详细说明在帖子里

热度:96   发布时间:2016-05-05 04:28:17.0
还是serialport问题。详细说明在帖子里
     private void BTNSend_Click(object sender, EventArgs e)
        {
            
            try
            {

                this.serialPort1.Write(this.TXTSend.Text.ToString().Trim());
                this.serialPort1.DataReceived += new SerialDataReceivedEventHandler(serialPort1_DataReceived);//为何这一句执行完了就结束了??不会调用serialPort1_DataReceived,加断点都不会执行
            }
            catch (Exception Ex)
            {
                throw Ex;
            }
        }



    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;
            }
        }
------解决思路----------------------
看来SP更能理解你的问题
我是没往那方面联想
谁能想到你连回调函数是什么都还没弄清楚

既然它是个事件,那当然是你串口收到数据的时候,才会由系统去调用它执行,而不是立即执行
否则就不用什么+=了
直接在代码里执行serialPort1_DataReceived()不就好了