首页 新闻 会员 周边

串口接收数据

0
悬赏园豆:50 [已关闭问题] 关闭于 2013-06-14 16:29
        private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
        {
            MessageBox.Show("1");
        }

        private void serialPort1_ErrorReceived(object sender, System.IO.Ports.SerialErrorReceivedEventArgs e)
        {
            MessageBox.Show("2");
        }

        private void serialPort1_PinChanged(object sender, System.IO.Ports.SerialPinChangedEventArgs e)
        {
            MessageBox.Show("3");
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            serialPort1.Open();
        }

代码就是这么简单,设置是对的,超级终端可以接收数据,但是程序里面不触发接收数据事件。

清海扬波的主页 清海扬波 | 小虾三级 | 园豆:825
提问于:2013-06-10 14:41
< >
分享
所有回答(1)
0

这样接受数据? 怀疑  SerialPort  都没申明 怎么接受? 不知道你是不是用的这个我发个代码你吧 以前做的:

首先你open 那些我就不发了。

        SerialPort spt = new SerialPort();
        Thread acceptThread;//接收数据的线程
        /// <summary>
        /// 线程启动allyn2011-11-1
        /// </summary>
        public void StarThread()
        {
            Thread.Sleep(1000);
            acceptThread = new Thread(spt_DataReceived);
            acceptThread.Start();
        }
        /// <summary>
        /// 线程委托方法
        /// </summary>
        private void spt_DataReceived()
        {
            try
            {
                Thread.Sleep(1000);
                int receiveLen = spt.BytesToRead;
                byte[] ReceiveData = new byte[receiveLen];
                for (int i = 0; i < receiveLen; i++)
                {
                   ReceiveData[i] = (byte)spt.ReadByte();
                }
               byte[] dataSub = new byte[1024];
               SplitByte(dataSub, ReceiveData);
            }
            catch (Exception ex)
            {
                ex.GetBaseException();
            }

        }
        /// <summary>
        /// 接收数据处理
        /// </summary>
        /// <param name="dataSub"></param>
        /// <param name="ReceiveData"></param>
        public void SplitByte(byte[] dataSub, byte[] ReceiveData)
        {
            //这里就是对你接受的处理处理到了 
        }

或者用这个接受也可以spt.ReadLine()

s_p | 园豆:138 (初学一级) | 2013-06-11 20:42

呵呵,其实你仔细看就知道我是直接拉的控件了,最后解决了,是要添加一个DtrEnable就可以了,原因是因为“在开发中有些串口设备需要串口供电”。

支持(0) 反对(0) 清海扬波 | 园豆:825 (小虾三级) | 2013-06-13 09:26

@清海扬波: 呵呵 我做的没有用控件!

支持(0) 反对(0) s_p | 园豆:138 (初学一级) | 2013-06-13 09:28
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册