예제 #1
0
        /// <summary>
        /// 重写的数据接收方法,需要连续接收,直到CRC校验成功或是超时,接收时间会比较久
        /// </summary>
        /// <param name="sender">串口对象</param>
        /// <param name="e">串口的数据对象</param>
        protected override void SP_ReadData_DataReceived(object sender, SerialDataReceivedEventArgs e)
        {
            while (true)
            {
                Thread.Sleep(40);

                try
                {
                    if (SP_ReadData.BytesToRead < 1)
                    {
                        continue;
                    }
                    // 继续接收数据
                    receiveCount += SP_ReadData.Read(buffer, receiveCount, SP_ReadData.BytesToRead);

                    // CRC校验成功及退出
                    byte[] data = new byte[receiveCount];
                    Array.Copy(buffer, 0, data, 0, receiveCount);
                    if (SoftCRC16.CheckCRC16(data))
                    {
                        break;
                    }
                }
                catch (Exception ex)
                {
                    isComError  = true;
                    ComErrorMsg = ex.Message;
                    break;
                }
            }
            resetEvent.Set( );
        }
예제 #2
0
        /// <summary>
        /// 串口数据接收的回调方法
        /// </summary>
        /// <param name="sender">数据发送</param>
        /// <param name="e">消息</param>
        protected virtual void SP_ReadData_DataReceived(object sender, SerialDataReceivedEventArgs e)
        {
            while (true)
            {
                Thread.Sleep(20);
                if (SP_ReadData.BytesToRead < 1)
                {
                    break;
                }

                // 继续接收数据
                receiveCount += SP_ReadData.Read(buffer, receiveCount, SP_ReadData.BytesToRead);
            }
            resetEvent.Set( );
        }
예제 #3
0
        private void SP_ReadData_DataReceived(object sender, SerialDataReceivedEventArgs e)
        {
            while (true)
            {
                Thread.Sleep(20);
                int countRece = SP_ReadData.Read(buffer, receiveCount, SP_ReadData.BytesToRead);
                receiveCount += countRece;

                if (countRece == 0)
                {
                    break;
                }
            }
            resetEvent.Set( );
        }
예제 #4
0
        /// <summary>
        /// 串口数据接收的回调方法
        /// </summary>
        /// <param name="sender">数据发送</param>
        /// <param name="e">消息</param>
        protected virtual void SP_ReadData_DataReceived(object sender, SerialDataReceivedEventArgs e)
        {
            while (true)
            {
                Thread.Sleep(20);

                try
                {
                    if (SP_ReadData.BytesToRead < 1)
                    {
                        break;
                    }
                    // 继续接收数据
                    receiveCount += SP_ReadData.Read(buffer, receiveCount, SP_ReadData.BytesToRead);
                }
                catch (Exception ex)
                {
                    isComError  = true;
                    ComErrorMsg = ex.Message;
                    break;
                }
            }
            resetEvent.Set( );
        }
예제 #5
0
 private void SP_ReadData_DataReceived(object sender, SerialDataReceivedEventArgs e)
 {
     Thread.Sleep(20);
     receiveCount = SP_ReadData.Read(buffer, 0, SP_ReadData.BytesToRead);
     resetEvent.Set( );
 }