public async Task ReceiveMessagesUntilCloseAsync() { byte[] receivePayloadBuffer = new byte[_receivePayloadBufferSize]; WebSocketReceiveResult webSocketReceiveResult = await _webSocket.ReceiveAsync(new ArraySegment <byte>(receivePayloadBuffer), CancellationToken.None); while (webSocketReceiveResult.MessageType != WebSocketMessageType.Close) { if (webSocketReceiveResult.MessageType == WebSocketMessageType.Binary) { byte[] webSocketMessage = await ReceiveMessagePayloadAsync(_webSocket, webSocketReceiveResult, receivePayloadBuffer); ReceiveBinary?.Invoke(this, webSocketMessage); } else { byte[] webSocketMessage = await ReceiveMessagePayloadAsync(_webSocket, webSocketReceiveResult, receivePayloadBuffer); ReceiveText?.Invoke(this, Encoding.UTF8.GetString(webSocketMessage)); } webSocketReceiveResult = await _webSocket.ReceiveAsync(new ArraySegment <byte>(receivePayloadBuffer), CancellationToken.None); } CloseStatus = webSocketReceiveResult.CloseStatus.Value; CloseStatusDescription = webSocketReceiveResult.CloseStatusDescription; }
internal ReceiveTextEvent InvokeEvent(ReceiveTextEvent arg) { if (_api.ValidateEvent(arg)) { ReceiveText?.Invoke(_api, arg); } return(arg); }
public MainWindow() { InitializeComponent(); LoadComboBoxData(); port.Encoding = Encoding.UTF8; port.DataReceived += SerialDataReceived; SerialPortSwitch.Click += (s, e) => TrySwitchSerialPort(); SendDataButton.Click += (s, e) => SendSerialData(TransmitText.Text); RxDataText.Checked += (s, e) => rxDataType = DataType.Text; RxDataHex.Checked += (s, e) => rxDataType = DataType.Hex; RxDataEscape.Checked += (s, e) => rxDataType = DataType.Escape; TxDataText.Checked += (s, e) => txDataType = DataType.Text; TxDataHex.Checked += (s, e) => txDataType = DataType.Hex; TxDataEscape.Checked += (s, e) => txDataType = DataType.Escape; ClearButton.MouseDown += (s, e) => e.Handled = true; ClearButton.MouseUp += (s, e) => ReceiveText.Clear(); MainLRSplitter.MouseEnter += (s, e) => MainLRLine.Opacity = 1; MainLRSplitter.MouseLeave += (s, e) => MainLRLine.Opacity = 0; TxRxTDSplitter.MouseEnter += (s, e) => TxRxTDLine.Opacity = 1; TxRxTDSplitter.MouseLeave += (s, e) => TxRxTDLine.Opacity = 0; var watcher = new ManagementEventWatcher(); watcher.Query = new WqlEventQuery("SELECT * FROM Win32_DeviceChangeEvent WHERE EventType = 2 or EventType = 3"); watcher.EventArrived += (sender, args) => { Dispatcher.Invoke(LoadComs); }; watcher.Start(); timer.AutoReset = false; timer.Enabled = false; timer.Elapsed += (sender, args) => { Dispatcher.Invoke(() => { var a = new DoubleAnimation(0.5, 0, new Duration(TimeSpan.FromSeconds(0.5))) { AutoReverse = false }; ToastGrid.BeginAnimation(OpacityProperty, a); }); }; EncodingComboBox.SelectionChanged += (sender, args) => { try { var encoding = (Encoding)EncodingComboBox.SelectedValue; port.Encoding = encoding; Toast("编码已更改为 " + encoding.EncodingName); } catch (Exception e) { Toast(e.Message); } }; }
//点击关闭串口控件按钮 private void CloseCOM_Click(object sender, EventArgs e) { try { com.Close(); //关闭串口 OpenCOM.Visible = true; //隐藏打开串口 CloseCOM.Visible = false; //显示关闭串口 ball.FillColor = System.Drawing.Color.SaddleBrown; //将球的颜色设置为棕色的 ReceiveText.Clear(); //清除当前串口的内容 } catch { MessageBox.Show("关闭串口失败!未知错误!"); } }
private void OnReceiveText(string webSocketMessage) { ReceiveText?.Invoke(this, webSocketMessage); }
private void SerialDataReceived(object sender, SerialDataReceivedEventArgs e) { string text; switch (rxDataType) { case DataType.Text: text = port.ReadExisting(); break; case DataType.Hex: var n = port.BytesToRead; var data = new byte[n]; port.Read(data, 0, n); var s = new StringBuilder(); foreach (var b in data) { s.Append("0123456789ABCDEF"[(b >> 4) & 0x0F]) .Append("0123456789ABCDEF"[b & 0x0F]).Append(' '); } text = s.ToString(); break; case DataType.Escape: var t = port.ReadExisting(); var r = new StringBuilder(); foreach (var c in t) { if (c < 0x20) { char ch; if (Hex2TextData.TryGetValue(c, out ch)) { r.Append('\\').Append(ch); } else { r.Append("\\x") .Append("0123456789ABCDEF"[(c >> 4) & 0x0F]) .Append("0123456789ABCDEF"[c & 0x0F]); } } else { r.Append(c); } } text = r.ToString(); break; default: port.ReadExisting(); return; } ReceiveText.Dispatcher.Invoke(() => { ReceiveText.AppendText(text); ReceiveText.ScrollToEnd(); }); }
private void OnReceiveText(string webSocketMessage) { string message = _textSubProtocol.Read(webSocketMessage); ReceiveText?.Invoke(this, message); }
private void ListenClientMsg(object cliento) { Socket client = cliento as Socket; try { while (true) { byte[] result = new byte[1024]; int dataLength = client.Receive(result); if (dataLength > 0) { byte[] MessageBytes = result.Take(dataLength).ToArray(); string Receivemeans = ReadMessage.Parser.readMessage(MessageBytes); this.Dispatcher.Invoke(new Action(() => { ReceiveText.AppendText(Receivemeans + "\n"); })); LogUtil.Logger.Info("【数据】" + ScaleConvertor.HexBytesToString(MessageBytes)); LogUtil.Logger.Info("【解析】" + Receivemeans); #region parse switch (MessageBytes[5]) { case 0x01: //呼唤小车 { string name = "08 " + MessageBytes[3].ToString("X2") + " " + MessageBytes[4].ToString("X2") + " 02 01 01 01"; byte[] SendMessageBytes = ScaleConvertor.HexStringToHexByte(name); // sendMsgToClient(GetClientKey(client), SendMessageBytes); break; } case (byte)06: //小车到达 { string name = "06 " + MessageBytes[3].ToString("X2") + " " + MessageBytes[4].ToString("X2") + " 07 01"; byte[] SendMessageBytes = ScaleConvertor.HexStringToHexByte(name); sendMsgToClient(GetClientKey(client), SendMessageBytes); break; } case (byte)03: //小车出发 { string name = "06 " + MessageBytes[3].ToString("X2") + " " + MessageBytes[4].ToString("X2") + " 04 01"; byte[] SendMessageBytes = ScaleConvertor.HexStringToHexByte(name); sendMsgToClient(GetClientKey(client), SendMessageBytes); break; } case (byte)08: //取消小车呼唤 { string name = "08 " + MessageBytes[3].ToString("X2") + " " + MessageBytes[4].ToString("X2") + " 09 02 02 01"; byte[] SendMessageBytes = ScaleConvertor.HexStringToHexByte(name); sendMsgToClient(GetClientKey(client), SendMessageBytes); break; } case 0x0A: //获取货物库位信息 { string name = "11 " + MessageBytes[3].ToString("X2") + " " + MessageBytes[4].ToString("X2") + " 0B 04 01 01 02 03 04 05 48 65 6C 6C 6F"; byte[] SendMessageBytes = ScaleConvertor.HexStringToHexByte(name); sendMsgToClient(GetClientKey(client), SendMessageBytes); break; } case (byte)12: //入库完成指令0X0C { string name = "08 " + MessageBytes[3].ToString("X2") + " " + MessageBytes[4].ToString("X2") + " 0D 04 01 13"; byte[] SendMessageBytes = ScaleConvertor.HexStringToHexByte(name); sendMsgToClient(GetClientKey(client), SendMessageBytes); break; } case (byte)13: //出库指令0X0D { string name = "07 " + MessageBytes[3].ToString("X2") + " " + MessageBytes[4].ToString("X2") + " 0F 02 01"; byte[] SendMessageBytes = ScaleConvertor.HexStringToHexByte(name); sendMsgToClient(GetClientKey(client), SendMessageBytes); break; } case (byte)14: //出库指令0X0E { string name = "07 " + MessageBytes[3].ToString("X2") + " " + MessageBytes[4].ToString("X2") + " 0F 02 01"; byte[] SendMessageBytes = ScaleConvertor.HexStringToHexByte(name); sendMsgToClient(GetClientKey(client), SendMessageBytes); break; } case (byte)16: //出库完成指令0X10 { string name = "08 " + MessageBytes[3].ToString("X2") + " " + MessageBytes[4].ToString("X2") + " 11 02 01 13"; byte[] SendMessageBytes = ScaleConvertor.HexStringToHexByte(name); sendMsgToClient(GetClientKey(client), SendMessageBytes); break; } case (byte)18: //码垛(整个托盘)完成指令0X12 { string name = "08 " + MessageBytes[3].ToString("X2") + " " + MessageBytes[4].ToString("X2") + " 13 01 01 13"; byte[] SendMessageBytes = ScaleConvertor.HexStringToHexByte(name); sendMsgToClient(GetClientKey(client), SendMessageBytes); break; } case (byte)20: //请求启动或停止设备指令0X14 { string name = "09 " + MessageBytes[3].ToString("X2") + " " + MessageBytes[4].ToString("X2") + " 15 01 01 13 01"; byte[] SendMessageBytes = ScaleConvertor.HexStringToHexByte(name); sendMsgToClient(GetClientKey(client), SendMessageBytes); break; } case (byte)22: //启动或停止设备指令0X16 { string name = "0B " + MessageBytes[3].ToString("X2") + " " + MessageBytes[4].ToString("X2") + " 17 01 01 13 01 02 01"; byte[] SendMessageBytes = ScaleConvertor.HexStringToHexByte(name); sendMsgToClient(GetClientKey(client), SendMessageBytes); break; } case (byte)24: //警报指令0X19 { string name = "0B " + MessageBytes[3].ToString("X2") + " " + MessageBytes[4].ToString("X2") + " 19 01 01 13 01 02 01"; byte[] SendMessageBytes = ScaleConvertor.HexStringToHexByte(name); sendMsgToClient(GetClientKey(client), SendMessageBytes); break; } default: break; } #endregion } } } catch (Exception ee) { MessageBox.Show(ee.Message); LogUtil.Logger.Info(ee.Message); RemoveClient(client); } }
private void OnReceiveText(string socketMessage) { var message = _textSubProtocol.Read(socketMessage); ReceiveText?.Invoke(this, message); }