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'
- }
- }
- }
|