Пример #1
0
        private void _server_ClientDataReceived(object sender, ClientDataReceivedEventArgs e)
        {
            string requestHeader = Encoding.UTF8.GetString(e.Data);

            foreach (string line in requestHeader.Split('\n'))
            {
                if (!line.StartsWith("GET"))
                {
                    continue;
                }

                foreach (string part in line.Split(' '))
                {
                    if (!part.StartsWith("/"))
                    {
                        continue;
                    }

                    string streamName = part.Substring(1);

                    if (!_streamers.ContainsKey(streamName))
                    {
                        continue;
                    }

                    _streamers[streamName].AddClient(e.ClientConnection);
                    return;
                }
            }

            _server.DisconnectClient(e.ClientConnection);
        }
Пример #2
0
 private void Client_DataReceived(object sender, ClientDataReceivedEventArgs e)
 {
     foreach (var sample in
              Enumerable.Range(0, e.Size / 4).Select(i => BitConverter.ToSingle(e.Buffer, i * 4)))
     {
         buffer.Enqueue(sample);
     }
 }
Пример #3
0
 private void OnClientDataReceived(object sender, ClientDataReceivedEventArgs e)
 {
     if (!Encoding.UTF8.GetString(e.Data).Contains(string.Format("GET {0}", (object)"/live")))
     {
         this._server.DisconnectClient(e.ClientConnection);
     }
     else
     {
         this._streamer.AddClient(e.ClientConnection);
     }
 }
Пример #4
0
        private void OnClientDataReceived(object sender, ClientDataReceivedEventArgs e)
        {
            string requestHeader = Encoding.UTF8.GetString(e.Data);

            if (!requestHeader.Contains($"GET {ServerUrl}"))
            {
                // TODO: 404 Error Message
                _server.DisconnectClient(e.ClientConnection);
                return;
            }

            _streamer.AddClient(e.ClientConnection);
        }
Пример #5
0
        private async void OnClientDataReceived(object sender, ClientDataReceivedEventArgs e)
        {
            byte[] bytes      = e._dataBytes;
            string receiveStr = DataHelper.ByteArrayToHexString(bytes);

            //用于确认连接成功的
            if (receiveStr == "10010000")
            {
                await _client.SendAsync(DataHelper.HexStringToByteArray("11010010"));
            }
            else
            {
                Object obj  = (Object)DataHelper.DeserializeWithBinary(bytes);
                Type   type = obj.GetType();
                //操作模式的反馈
                if (type == typeof(OperationModeResponse))
                {
                    OperationModeResponse operationModeResponse = obj as OperationModeResponse;
                    if (operationModeResponse.Response == "OfflineIsOk")
                    {
                        operationMode = "offline";
                    }
                    if (operationModeResponse.Response == "OnlineIsOk")
                    {
                        operationMode = "online";
                    }
                    //operationMode = operationModeResponse.Response;
                    MessageBox.Show(operationModeResponse.Response);
                }
                //初始化的反馈
                if (type == typeof(InitializeResponse))
                {
                    InitializeResponse initializeResponse = obj as InitializeResponse;

                    MessageBox.Show(initializeResponse.Response);
                }

                #region 来自PLC相关的数据
                //入库上料反馈
                if (type == typeof(WarehousePLCInputLoadTrayResponse))
                {
                    WarehousePLCInputLoadTrayResponse classPLCInputLoadTrayResponse = obj as WarehousePLCInputLoadTrayResponse;

                    MessageBox.Show(classPLCInputLoadTrayResponse.InputLoadTrayResponse);
                }
                //读取RFID的反馈
                if (type == typeof(WarehousePLCReadRFIDResponse))
                {
                    WarehousePLCReadRFIDResponse classPLCReadRFIDResponse = obj as WarehousePLCReadRFIDResponse;
                    InputOldRFIDNumber = classPLCReadRFIDResponse.ReadRFIDResponse;
                }
                //写入RFID的反馈
                if (type == typeof(WarehousePLCWriteRFIDResponse))
                {
                    WarehousePLCWriteRFIDResponse WarehousePLCWriteRFIDResponse = obj as WarehousePLCWriteRFIDResponse;
                    MessageBox.Show(WarehousePLCWriteRFIDResponse.WriteRFIDResponse);
                }
                //入库执行的反馈
                if (type == typeof(WarehousePLCInputExecuteResponse))
                {
                    WarehousePLCInputExecuteResponse classPLCInputExecuteResponse = obj as WarehousePLCInputExecuteResponse;

                    MessageBox.Show(classPLCInputExecuteResponse.InputExecuteResponseStorageLocation.ToString());
                    MessageBox.Show(classPLCInputExecuteResponse.InputExecuteResponseResult);
                }
                //出库执行的反馈
                if (type == typeof(WarehousePLCOutputExecuteResponse))
                {
                    WarehousePLCOutputExecuteResponse WarehousePLCOutputExecuteResponse = obj as WarehousePLCOutputExecuteResponse;
                    MessageBox.Show(WarehousePLCOutputExecuteResponse.OutputExecuteResponseStorageLocation.ToString());
                    MessageBox.Show("出库状态" + WarehousePLCOutputExecuteResponse.OutputExecuteResponseResult);
                }
                #endregion

                #region 来自AGV相关的数据
                if (type == typeof(AGVQueryCurrentPositionResponse))
                {
                    AGVQueryCurrentPositionResponse classAGVQueryCurrentPositionResponse = obj as AGVQueryCurrentPositionResponse;
                    switch (classAGVQueryCurrentPositionResponse.QueryCurrentPositionResponse)
                    {
                    case 1: AGVCurrentPosition = "入库点"; break;

                    case 2: AGVCurrentPosition = "出库点"; break;

                    case 3: AGVCurrentPosition = "对接平台点"; break;

                    case 10: AGVCurrentPosition = "原点"; break;

                    default: break;
                    }
                }
                if (type == typeof(AGVTaskResponse))
                {
                    AGVTaskResponse classAGVTaskResponse = obj as AGVTaskResponse;
                    switch (classAGVTaskResponse.TaskResponse)
                    {
                    case 1: MessageBox.Show("到达入库点!"); break;

                    case 2: MessageBox.Show("到达出库点!"); break;

                    case 3: MessageBox.Show("到达对接平台点!"); break;

                    case 10: MessageBox.Show("回原点完成!"); break;

                    case 6: MessageBox.Show("放料盘完成!"); break;

                    case 7: MessageBox.Show("进料盘完成!"); break;

                    default: break;
                    }
                }
                #endregion

                #region 来自CloudPlatform相关的数据
                //获取所有的库位信息,用于显示
                if (type == typeof(List <CloudPlatformStorageQueryResponse>))
                {
                    List <CloudPlatformStorageQueryResponse> classStorageQueryShowResponses = obj as List <CloudPlatformStorageQueryResponse>;
                    App.Current.Dispatcher.Invoke(() => { _storagesList.Clear(); });//更新新的数据之前先清空列表
                    //List<StorageInfoModel> test = new List<StorageInfoModel>();
                    foreach (var item in classStorageQueryShowResponses)
                    {
                        var list = new StorageInfoModel
                        {
                            Location         = item.StorageQueryLocation,
                            Category         = item.StorageQueryCategory,
                            Amount           = item.StorageQueryAmount,
                            RFIDNumber       = item.StorageQueryRFID,
                            EditStoragesInfo = item.StorageQueryCategory != "null",
                            EditOutput       = item.StorageQueryCategory != "null"
                        };
                        App.Current.Dispatcher.Invoke(() => { _storagesList.Add(list); });
                    }
                }
                //获取所有的入库记录,用于显示
                if (type == typeof(List <CloudPlatformQueryInputRecordResponse>))
                {
                    List <CloudPlatformQueryInputRecordResponse> classQueryInputRecordResponses = obj as List <CloudPlatformQueryInputRecordResponse>;
                    App.Current.Dispatcher.Invoke(() => { _inputRecordList.Clear(); });//更新新的数据之前先清空列表

                    foreach (var item in classQueryInputRecordResponses)
                    {
                        var list = new InputRecordModel
                        {
                            RFIDNumber    = item.QueryInputRecordResponseRFIDNumber,
                            Location      = item.QueryInputRecordResponseLocation,
                            Amount        = item.QueryInputRecordResponseAmount,
                            OperationTime = item.QueryInputRecordResponseOperationTime,
                            Category      = item.QueryInputRecordResponseCategory
                        };
                        App.Current.Dispatcher.Invoke(() => { _inputRecordList.Add(list); });
                    }
                }
                //获取所有的出库记录用于显示
                if (type == typeof(List <CloudPlatformQueryOutputRecordResponse>))
                {
                    List <CloudPlatformQueryOutputRecordResponse> classQueryOutputRecordResponses = obj as List <CloudPlatformQueryOutputRecordResponse>;
                    App.Current.Dispatcher.Invoke(() => { _outputRecordList.Clear(); });//更新新的数据之前先清空列表

                    foreach (var item in classQueryOutputRecordResponses)
                    {
                        var list = new OutputRecordModel
                        {
                            Location      = item.QueryOutputRecordResponseLocation,
                            RFIDNumber    = item.QueryOutputRecordResponseRFIDNumber,
                            Amount        = item.QueryOutputRecordResponseAmount,
                            OperationTime = item.QueryOutputRecordResponseOperationTime,
                            Category      = item.QueryOutputRecordResponseCategory
                        };
                        App.Current.Dispatcher.Invoke(() => { _outputRecordList.Add(list); });
                    }
                }
                //获取所有的库位修改记录用于显示
                if (type == typeof(List <CloudPlatformQueryModifyStorageRecordResponse>))
                {
                    List <CloudPlatformQueryModifyStorageRecordResponse> cloudPlatformQueryModifyStorageRecordResponses = obj as List <CloudPlatformQueryModifyStorageRecordResponse>;
                    App.Current.Dispatcher.Invoke(() => { _modifyStorageRecordList.Clear(); });

                    foreach (var item in cloudPlatformQueryModifyStorageRecordResponses)
                    {
                        var list = new ModifyStorageRecordModel
                        {
                            Location   = item.Location,
                            ModifyType = item.Type,
                            RFIDNumber = item.RFIDNumber,
                            Category   = item.CategoryNew,
                            Amount     = item.AmountNew,
                            ModifyTime = item.ModifyTime
                        };

                        App.Current.Dispatcher.Invoke(() => { _modifyStorageRecordList.Add(list); });
                    }
                }
                //手动维护库位信息的反馈
                if (type == typeof(CloudPlatformModifyStorageInfoResponse))
                {
                    CloudPlatformModifyStorageInfoResponse cloudPlatformModifyStorageInfoResponse = obj as CloudPlatformModifyStorageInfoResponse;
                    MessageBox.Show(cloudPlatformModifyStorageInfoResponse.Type.ToString());
                    MessageBox.Show(cloudPlatformModifyStorageInfoResponse.Location.ToString());
                    MessageBox.Show(cloudPlatformModifyStorageInfoResponse.RFIDNumber);
                    MessageBox.Show(cloudPlatformModifyStorageInfoResponse.CategoryNew);
                    MessageBox.Show(cloudPlatformModifyStorageInfoResponse.AmountNew.ToString());
                    MessageBox.Show(cloudPlatformModifyStorageInfoResponse.Result);
                }
                #endregion
            }
        }