Ejemplo n.º 1
0
        /// <summary>
        /// 开始读取串口数据
        /// </summary>
        private void ReadPort()
        {
            while (m_keepReading)
            {
                if (m_serialPort.IsOpen)
                {
                    int size = m_serialPort.BytesToRead;
                    if (size > 0)
                    {
                        byte[] buffer = new byte[size];

                        try
                        {
                            Application.DoEvents();

                            m_serialPort.Read(buffer, 0, size);

                            DataReceive?.Invoke(buffer);

                            Thread.Sleep(100);
                        }
                        catch (Exception ex)
                        {
                            Console.WriteLine(ex.Message);
                        }
                    }
                }
            }
        }
Ejemplo n.º 2
0
 private void OnReceive(IBuffer buffer)
 {
     mBaseNetworkStream.Import(buffer);
     if (Packet != null)
     {
         try
         {
             Packet.Decode(this, this.Stream);
         }
         catch (Exception e_)
         {
             ProcessError(e_, "client packet decoding error!");
         }
     }
     else
     {
         try
         {
             mReceiveArgs.Stream = this.Stream;
             if (awaitPipeStream.Pending)
             {
                 awaitPipeStream.Success(this.Stream.ToPipeStream());
             }
             else
             {
                 DataReceive?.Invoke(this, mReceiveArgs);
             }
         }
         catch (Exception e_)
         {
             ProcessError(e_, "client  buffer process error!");
         }
     }
 }
Ejemplo n.º 3
0
        private void _serialPort_DataReceived(object sender, SerialDataReceivedEventArgs e)
        {
            if (_serialPort.BytesToRead == 0)
            {
                return;
            }
            var length = _serialPort.BytesToRead;
            var datas  = new byte[length];

            _serialPort.Read(datas, 0, length);
            var code = Encoding.UTF8.GetString(datas);

            _buffer.Read(code)?.ForEach(p => DataReceive?.Invoke(this, new DataReceiveEventArgs(p)));
        }
Ejemplo n.º 4
0
 protected virtual void OnDataReceive(WSReceiveArgs e)
 {
     try
     {
         DataReceive?.Invoke(this, e);
     }
     catch (Exception e_)
     {
         try
         {
             e.Error = new BXException($"ws client receive error {e_.Message}", e_);
             DataReceive?.Invoke(this, e);
         }
         catch { }
     }
 }
Ejemplo n.º 5
0
        public SocketServer()
        {
            Server = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            Server.Bind(new IPEndPoint(IPAddress.Parse("127.0.0.1"), 1111));
            Server.Listen(10);
            var task = new Task(() =>
            {
                try
                {
                    while (true)
                    {
                        var client = Server.Accept();
                        var ip     = ((IPEndPoint)client.RemoteEndPoint).ToString();
                        if (!DicClient.Keys.Contains(ip))
                        {
                            DicClient.Add(ip, client);
                        }
                        else
                        {
                            DicClient[ip].TryDispose();
                            DicClient[ip] = client;
                        }
                        var t = new Task(() =>
                        {
                            try
                            {
                                var data   = new byte[65535];
                                var length = client.Receive(data);
                                data       = data.Take(length).ToArray();
                                DataReceive?.Invoke(client, data);
                            }
                            catch (Exception ex)
                            {
                            }
                        });
                        t.Start();
                    }
                }
                catch (Exception ex)
                {
                }
            });

            task.Start();
        }
Ejemplo n.º 6
0
        private void OnReceive()
        {
            var error = mSslStream?.SyncDataError;

            if (SSL && error != null)
            {
                ProcessError(error, $"sync SslStream data error {error.Message}@{error.StackTrace}");
                DisConnect();
                return;
            }
            if (Packet != null)
            {
                try
                {
                    Packet.Decode(this, this.Stream);
                }
                catch (Exception e_)
                {
                    ProcessError(e_, "client packet decoding error!");
                }
            }
            else
            {
                try
                {
                    mReceiveArgs.Stream = this.Stream;
                    if (awaitPipeStream.Pending)
                    {
                        awaitPipeStream.Success(this.Stream.ToPipeStream());
                    }
                    else
                    {
                        DataReceive?.Invoke(this, mReceiveArgs);
                    }
                }
                catch (Exception e_)
                {
                    ProcessError(e_, "client  buffer process error!");
                }
            }
        }
Ejemplo n.º 7
0
 private void OnReceive(IBuffer buffer)
 {
     mBaseNetworkStream.Import(buffer);
     if (SSL && mSslStream.SyncDataError != null)
     {
         ProcessError(mSslStream.SyncDataError, $"sync SslStream data error {mSslStream.SyncDataError.Message}");
         DisConnect();
         return;
     }
     if (Packet != null)
     {
         try
         {
             Packet.Decode(this, this.Stream);
         }
         catch (Exception e_)
         {
             ProcessError(e_, "client packet decoding error!");
         }
     }
     else
     {
         try
         {
             mReceiveArgs.Stream = this.Stream;
             if (awaitPipeStream.Pending)
             {
                 awaitPipeStream.Success(this.Stream.ToPipeStream());
             }
             else
             {
                 DataReceive?.Invoke(this, mReceiveArgs);
             }
         }
         catch (Exception e_)
         {
             ProcessError(e_, "client  buffer process error!");
         }
     }
 }
Ejemplo n.º 8
0
        private void OnClientError(IClient c, ClientErrorArgs e)
        {
            if (OnWSConnected)
            {
                if (e.Error is BXException)
                {
                    OnWSConnected = false;
                }
                lock (mLockReceive)
                {
                    if (mReceiveCompletionSource != null)
                    {
                        var completed = mReceiveCompletionSource;
                        mReceiveCompletionSource = null;
                        Task.Run(() =>
                        {
                            completed.Error(e.Error);
                        });
                        return;
                    }
                }

                if (DataReceive != null)
                {
                    try
                    {
                        WSReceiveArgs wse = new WSReceiveArgs();
                        wse.Client = this;
                        wse.Error  = e.Error;
                        DataReceive?.Invoke(this, wse);
                    }
                    catch { }
                }
            }
            else
            {
                OnConnectResponse(e.Error, null);
            }
        }
Ejemplo n.º 9
0
 private void OnClientError(IClient c, ClientErrorArgs e)
 {
     if (OnWSConnected)
     {
         if (e.Error is BXException)
         {
             OnWSConnected = false;
         }
         try
         {
             WSReceiveArgs wse = new WSReceiveArgs();
             wse.Client = this;
             wse.Error  = e.Error;
             DataReceive?.Invoke(this, wse);
         }
         catch { }
     }
     else
     {
         OnConnectResponse(e.Error, null);
     }
 }
Ejemplo n.º 10
0
 protected virtual void OnDataReceive(UdpDataReceiveEventArgs e)
 {
     DataReceive?.Invoke(this, e);
 }