Esempio n. 1
0
 private void Data2ReceivedHandler(object sender, SecsDataReceivedEventArgs arg)
 {
     Stream2TextBox.Text   = arg.SecsMessage.S.ToString();
     Function2TextBox.Text = arg.SecsMessage.F.ToString();
     StatusTextBox.AppendText("get msg header for device 0.\n");
     Message2TextBox.Text = arg.SecsMessage.ToString();
     Message2TextBox.AppendText("\n");
     Message2TextBox.AppendText(arg.SecsMessage.SecsItem.ToString());
     StatusTextBox.AppendText("get msg data for device 0.\n");
 }
Esempio n. 2
0
        private void dealwithMessage(byte[] bytes, int length, bool isMessageComplelte = false)
        {
            if (isMessageComplelte == true)
            {
            }
            else
            {
                //var newBuffer = new byte[DecoderBufferSize];
                //Array.Copy(bytes, newBuffer, DecoderBufferSize);
                //Array.Reverse(newBuffer);
                //int indexOfZero = 0;
                //for (; indexOfZero< DecoderBufferSize; indexOfZero++)
                //{
                //    if (newBuffer[indexOfZero] != 0)
                //    {
                //        break;
                //    }
                //}
                //int length = DecoderBufferSize - indexOfZero;
                //if (length < 14)
                //{
                //    throw new Exception("the length of message received is wrong.");
                //}
                if (length == 14 && isHeader == true)
                {
                    //it is a header
                    //if(hasCompleted == true)
                    //{
                    //    hasCompleted = false;
                    //    _msg = null;
                    //}
                    isHeader = false;
                    Array.Copy(bytes, messageBytes, length);


                    byte[] messageLengths = new byte[4];
                    Array.Copy(bytes, 0, messageLengths, 0, 4);
                    Array.Reverse(messageLengths, 0, 4);
                    _messageDataLength = (int)BitConverter.ToUInt32(messageLengths, 0);

                    _msgHeader = MessageHeader.Decode(bytes, 4);
                    if (_euip.DeviceID == 0)
                    {
                        StreamTextBox.Text   = _msgHeader.S.ToString();
                        FunctionTextBox.Text = _msgHeader.F.ToString();
                        StatusTextBox.AppendText("get msg header for device 0.\n");
                    }
                    else
                    {
                        Stream2TextBox.Text   = _msgHeader.S.ToString();
                        Function2TextBox.Text = _msgHeader.F.ToString();
                        StatusTextBox.AppendText("get msg header for device 1.\n");
                    }
                }
                else
                {
                    isHeader = true;
                    //Array.Copy(bytes, 0, messageBytes,14, length);
                    //_secsDecoder.Buffer = messageBytes;
                    //_secsDecoder.Decode(14 + length);
                    if (_messageDataLength - 10 == length)
                    {
                        //it is the message
                        int  index = 0;
                        Item item  = decoder.BufferedDecodeItem(bytes, ref index);
                        _msg = new SecsMessage(_msgHeader.S, _msgHeader.F, _msgHeader.ReplyExpected, "", item);
                        if (_euip.DeviceID == 0)
                        {
                            MessageTextBox.Text = _msg.ToString();
                            MessageTextBox.AppendText("\n");
                            MessageTextBox.AppendText(_msg.SecsItem.ToString());
                            StatusTextBox.AppendText("get msg data for device 0.\n");
                        }
                        else
                        {
                            Message2TextBox.Text = _msg.ToString();
                            Message2TextBox.AppendText("\n");
                            Message2TextBox.AppendText(_msg.SecsItem.ToString());
                            StatusTextBox.AppendText("get msg data for device 1.\n");
                        }
                    }
                }
            }
        }