Beispiel #1
0
        /// <summary>
        /// 发送数据,执行完WriteFrame及AddPackage后执行此函数才发送数据
        /// </summary>
        public void Send()
        {
            SendFrame.PackageNum = (byte)SendBlock.Amount;
            SendBuffer[0]        = SendFrame.S1;
            SendBuffer[1]        = SendFrame.S2;
            SendBuffer[2]        = SendFrame.Source;
            SendBuffer[3]        = SendFrame.Target;
            SendBuffer[4]        = SendFrame.Reserve;
            SendBuffer[5]        = SendFrame.PackageNum;
            int    j = FrameLength;
            ZBlock p;

            for (int i = 0; i < SendFrame.PackageNum; i++)
            {
                byte sum = 0;
                p = SendBlock.FetchObject();

                SendBuffer[j] = p.Word;
                sum          += SendBuffer[j];
                j++;

                SendBuffer[j] = p.Reserve;
                sum          += SendBuffer[j];
                j++;

                for (int k = 0; k < BlockLength - 3; k++)
                {
                    SendBuffer[j] = p.Data[k];
                    sum          += SendBuffer[j];
                    j++;
                }
                SendBuffer[j] = sum;
                j++;
            }

            SerialObject.WriteBytes(SendBuffer, 0, j);
            _SendFrameNum++;
            _SendBlockNum += SendFrame.PackageNum;
        }
Beispiel #2
0
 /// <summary>
 /// 读取接收到缓存中的帧头
 /// </summary>
 public ZFrame FetchFrame()
 {
     return(ReceiveFrame.FetchObject());
 }
Beispiel #3
0
 /// <summary>
 /// 读取接收到缓存中的数据包
 /// </summary>
 public ZBlock FetchBlock()
 {
     return(ReceiveBlock.FetchObject());
 }
Beispiel #4
0
 //接收数据
 void SerialObject_OnReceviceByte()
 {
     while (SerialObject != null && SerialObject.BufferByteNum > 0)
     {
         Buffer.InsertObject(SerialObject.ReadByte());
         while (Buffer.Amount > 0)
         {
             if (Buffer[0] != S1)
             {
                 Buffer.FetchObject();
                 _LostByteNum++;
             }
             else
             {
                 break;
             }
         }
         if (CheckFrame())
         {
             AnalyseProtocol();
         }
     }
 }