| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 | using PlcSiemens.O;using PlcSiemens.Protocol.Common;namespace PlcSiemens.Protocol.Upload{    public class StartUploadParamsRequest    {        public byte FunSUpld;    // function start upload 0x1D        public byte[] Uk6;     // Unknown 6 bytes        public byte UploadID;// At begining is 0) we will put upload id incoming from plc        public byte Len1;        public byte Prefix;        public byte BlkPrfx;     // always 0x30        public byte BlkType;        public byte[] AsciiBlk; // BlockNum in ascii        public byte A;           // always 0x41 ('A')        public ushort PacketLength        {            get            {                return 0x12;            }        }        public void GetByteBuffer(ByteBuffer buffer)        {            buffer.Push(FunSUpld);            buffer.Push(Uk6);            buffer.Push(UploadID);            buffer.Push(Len1);            buffer.Push(Prefix);            buffer.Push(BlkPrfx);            buffer.Push(BlkType);            buffer.Push(AsciiBlk);            buffer.Push(A);        }        public void Build(BlockType blockType, ushort blockNum)        {            FunSUpld = (byte)PduFuncType.PduStartUpload;            byte byte00 = 0x00;            Uk6 = new[] { byte00, byte00, byte00, byte00, byte00, byte00 };            UploadID = 0x00;            Len1 = 0x09;            Prefix = 0x5F;            BlkPrfx = 0x30; // '0'            BlkType = (byte)blockType;            int tmp = blockNum;            AsciiBlk = new byte[5];            AsciiBlk[0] = (byte)((tmp / 10000) + 0x30);            tmp = tmp % 10000;            AsciiBlk[1] = (byte)((tmp / 1000) + 0x30);            tmp = tmp % 1000;            AsciiBlk[2] = (byte)((tmp / 100) + 0x30);            tmp = tmp % 100;            AsciiBlk[3] = (byte)((tmp / 10) + 0x30);            tmp = tmp % 10;            AsciiBlk[4] = (byte)((tmp / 1) + 0x30);            A = 0x41; // 'A'        }    }}
 |