private void TestCmdFrame(byte[] a, int cmd, CRC.CRC8 crc) { int dataStartIndex = FileTransferProtocol.CommandDataIndex; //帧头 Trace.Assert(a[0] == FileTransferProtocol.FrameHead); //帧偏移 Trace.Assert((a[a.Length - 3] * 256 + a[a.Length - 4]) == a.Length - 1); //命令字 Trace.Assert(a[1] == cmd); //crc //Trace.Assert(a[1] == crc.Crc(a, dataStartIndex, a.Length - 3)); Trace.Assert(a[a.Length - 1] == 0x7F); }
private void btnTestCOMTCP_Click(object sender, EventArgs e) { CRC.CRC8 crc = new CRC.CRC8(); int dataStartIndex = FileTransferProtocol.CommandDataIndex; //测试:准备发送新的文件 string filename = @"c:\abc.txt"; byte[] FileInfo = FileTransferProtocol.GetFrameFileInfo(255 + 256, filename); //帧头 Trace.Assert(FileInfo[0] == FileTransferProtocol.FrameHead); //crc //Trace.Assert(FileInfo[1] == crc); //命令字 Trace.Assert(FileInfo[1] == 0x00); //文件长度 Trace.Assert(FileInfo[2] == 0xFF); Trace.Assert(FileInfo[3] == 0x01); Trace.Assert(FileInfo[4] == 0); Trace.Assert(FileInfo[5] == 0); byte[] bs = System.Text.Encoding.Default.GetBytes(filename); Trace.Assert(FileInfo[6] == bs[0]); Trace.Assert(FileInfo[7] == bs[1]); //帧偏移 Trace.Assert((FileInfo[FileInfo.Length - 4] + FileInfo[FileInfo.Length - 3] * 256) == (FileInfo.Length - 1)); Trace.Assert(FileInfo[FileInfo.Length - 2] == 0x7F); Trace.Assert(FileInfo[FileInfo.Length - 1] == 0xFF); byte[] data = new byte[] { 0x01, 0x02, 0xFF, 0xEF, 0xCC, 0xDD, 0x00, 0xAA }; byte[] FileData = FileTransferProtocol.GetFrameFileData(0x01AABBFF, data); //帧头 Trace.Assert(FileData[0] == FileTransferProtocol.FrameHead); //帧偏移 Trace.Assert((FileData[FileData.Length - 3] * 256 + FileData[FileData.Length - 4]) == (FileData.Length - 1)); //命令字 Trace.Assert(FileData[1] == 0x1); //文件偏移 Trace.Assert(FileData[2] == 0xFF); Trace.Assert(FileData[3] == 0xBB); Trace.Assert(FileData[4] == 0xAA); Trace.Assert(FileData[5] == 0x01); //文件数据 Trace.Assert(FileData[6] == 0x01); Trace.Assert(FileData[7] == 0x02); Trace.Assert(FileData[8] == 0xFF); Trace.Assert(FileData[9] == 0xEF); Trace.Assert(FileData[10] == 0xCC); Trace.Assert(FileData[11] == 0xDD); //crc //byte[] x = new byte[] { 0x02, 0xFF, 0xBB, 0xAA, 0x01, 0x01, 0x02, 0xFF, 0xEF, 0xCC, 0xDD, 0x00, 0xAA, FileData[FileData.Length - 3], FileData[FileData.Length - 2] }; //Trace.Assert(FileData[1] == crc.Crc(x, 0, x.Length)); Trace.Assert(FileData[FileData.Length - 1] == 0x7F); //文件发送完毕 byte[] f = FileTransferProtocol.GetFrameFileSendFinish(); //帧头 Trace.Assert(f[0] == FileTransferProtocol.FrameHead); //帧偏移 Trace.Assert((f[f.Length - 3] * 256 + f[f.Length - 4]) == f.Length - 1); //命令字 Trace.Assert(f[1] == 0x02); //crc //Trace.Assert(f[1] == crc.Crc(f, dataStartIndex, f.Length - 3)); Trace.Assert(f[f.Length - 1] == 0x7F); //表示可以新的文件 byte[] a = FileTransferProtocol.GetFrameWhatIsYourMNandVersion(); TestCmdFrame(a, 0xFD, crc); //表示已经接收数据 //byte[] Ac = FileTransferProtocol.GetFrameMNAndVersion(1,"123"); //TestCmdFrame(Ac, 0xFE, crc); //表示已经保存文件完毕 byte[] s = FileTransferProtocol.GetFrameCloseSocket(); TestCmdFrame(s, 0xFF, crc); }