void Onclick_Collectx() { bool Success = true; byte[] Trans_Matrix = new byte[0]; byte[] Trans_Buffer = new byte[2048]; byte[] Collect_Buffer1 = new byte[512]; byte[] Collect_Buffer2 = new byte[512]; byte[] Collect_Buffer3 = new byte[512]; byte[] Collect_Buffer4 = new byte[512]; int Trans_No = 0; byte[] Trans_No_B = new byte[4]; Trans_No_B = BitConverter.GetBytes(5); FileStream Image_Matrix_add = new FileStream(".//in_test.txt", FileMode.Create); BinaryWriter Image_Matrix = new BinaryWriter(Image_Matrix_add);; MyInvoke_T Re_T = new MyInvoke_T(Refresh_Text); MyInvoke_B Re_B = new MyInvoke_B(Refresh_Bar); Usb_Mine.SetOutTime("In", 3); Usb_Mine.SetOutTime("Out", 3); this.Dispatcher.BeginInvoke(Re_T, "世界线回调中......"); int TransTime_S = System.Environment.TickCount; for (int i = 0; i < 1000; i++) { while (true) { for (int j = 0; j < 8; j++) { if (j == 0) { Trans_Buffer[j] = 0x87; } else if (j == 1) { Trans_Buffer[j] = 0x86; } else if (j == 2) { Trans_Buffer[j] = 0x01; } else if (j == 3) { Trans_Buffer[j] = 0x00; } else { Trans_Buffer[j] = Trans_No_B[j - 4]; } } Success = Usb_Mine.Trans(512, Trans_Buffer); if (!Success) { Usb_Mine.Reset(); Usb_Mine.ReConnect(); } else { break; } } Thread.Sleep(2); for (int k = 0; k < 4; k++) { switch (k) { case 0: Success = Usb_Mine.Collect(512, Collect_Buffer1); break; case 1: Success = Usb_Mine.Collect(512, Collect_Buffer2); break; case 2: Success = Usb_Mine.Collect(512, Collect_Buffer3); break; case 3: Success = Usb_Mine.Collect(512, Collect_Buffer4); break; } if (!Success) { Success = false; break; } Success = true; } if (!Success) { i--; Usb_Mine.Reset(); Usb_Mine.ReConnect(); } else { Image_Matrix.Write(Collect_Buffer1); Image_Matrix.Write(Collect_Buffer2); Image_Matrix.Write(Collect_Buffer3); Image_Matrix.Write(Collect_Buffer4); Image_Matrix.Flush(); Trans_No++; Trans_No_B = BitConverter.GetBytes(Trans_No); } this.Dispatcher.BeginInvoke(Re_B, Trans_No * 100 / 1000); this.Dispatcher.BeginInvoke(Re_T, "世界线回调中......\n " + Convert.ToString(Trans_No * 100 / 1000 * 100.0 / 1000) + "%"); } int TransTime_E = System.Environment.TickCount; Image_Matrix_add.Close(); this.Dispatcher.BeginInvoke(Re_T, "世界线回复速率\n " + Convert.ToString(1024000 * 1000.0 / (TransTime_E - TransTime_S) / 1048576) + "MB/s"); Collect.Abort(); }
void Onclick_Transx() { if (!Usb_Mine.ReConnect()) { MessageBox.Show("人家还没有没有准备好啦,笨蛋!"); } else { bool Success = true; bool Trans_Ack = true; byte[] Trans_Matrix = new byte[0]; byte[] Trans_Buffer = new byte[512]; int Trans_No = 0; byte[] Trans_No_B = new byte[4]; FileStream Image_Matrix_add = new FileStream(".//3D_Martix.txt", FileMode.Open); BinaryReader Image_Matrix = new BinaryReader(Image_Matrix_add); Trans_Matrix = Image_Matrix.ReadBytes(Convert.ToInt32(Image_Matrix.BaseStream.Length)); //int Trans_Matrix_len = Trans_Matrix.Length / 512; int Trans_Matrix_len = 50001; int Trans_Matrix_Rem = Trans_Matrix.Length % 512; MyInvoke_B Re_B = new MyInvoke_B(Refresh_Bar); MyInvoke_T Re_T = new MyInvoke_T(Refresh_Text); Random ra = new Random(65535); byte[] rai = new byte[2]; Usb_Mine.SetOutTime("In", 2); Usb_Mine.SetOutTime("Out", 2); this.Dispatcher.BeginInvoke(Re_T, "世界线变动中......\n " + "0.00" + "%"); int TransTime_S = System.Environment.TickCount; FileStream FsDebug = new FileStream(".//Debug.txt", FileMode.OpenOrCreate, FileAccess.Write); StreamWriter StrDebug = new StreamWriter(FsDebug, System.Text.Encoding.UTF8); for (int i = 0; i < Trans_Matrix_len; i++) { int a = 0; int b = 0; ra.NextBytes(rai); Trans_No_B = BitConverter.GetBytes(Trans_No); if (i < Trans_Matrix_len) { for (int j = 0; j < 512; j++) { if (j == 0) { Trans_Buffer[j] = 0xA0; } else if (j == 1) { Trans_Buffer[j] = 0x81; } else if (j == 2) { Trans_Buffer[j] = 0x00; } else if (j == 3) { Trans_Buffer[j] = 0x41; } else if (j < 8) { Trans_Buffer[j] = Trans_No_B[j - 4]; } else if (j < 510) { //Trans_Buffer[j] = Trans_Matrix[i * 502 + j - 8]; if (a == 255) { a = 0; } else { a++; } //a = 255; Trans_Buffer[j] = Convert.ToByte(a); } else { Trans_Buffer[j] = Convert.ToByte(rai[j - 510]); } } } else if (i == Trans_Matrix_len) { for (int j = 0; j < Trans_Matrix_Rem; j++) { if (j == 0) { Trans_Buffer[j] = 0xA0; } else if (j == 1) { Trans_Buffer[j] = 0x81; } else if (j == 2) { Trans_Buffer[j] = 0x00; } else if (j == 3) { Trans_Buffer[j] = 0x80; } else if (j < 8) { Trans_Buffer[j] = Trans_No_B[j - 4]; } else { Trans_Buffer[j] = Trans_Matrix[i * 502 + j - 8]; } } for (int j = Trans_Matrix_Rem; j < 510; j++) { Trans_Buffer[j] = 0x00; } for (int j = 0; j < 2; j++) { Trans_Buffer[j + 510] = Convert.ToByte(rai[j]); } } Success = Usb_Mine.Trans(512, Trans_Buffer); if (Success) { Trans_Ack = Usb_Mine.Collect(2, Trans_Buffer); if (!Trans_Ack) { i--; Usb_Mine.Reset(); } else { if (rai[0] == Trans_Buffer[0] && rai[1] == Trans_Buffer[1]) { Trans_No++; if (Trans_No % 100 == 0) { this.Dispatcher.BeginInvoke(Re_B, Trans_No * 100 / Trans_Matrix_len); this.Dispatcher.BeginInvoke(Re_T, "世界线变动中......\n " + Convert.ToString(Trans_No * 100.0 / Trans_Matrix_len) + "%"); } } else { StrDebug.Write(System.Convert.ToString(rai[0], 16).Insert(0, new string('0', 2 - System.Convert.ToString(rai[0], 16).Length)) + System.Convert.ToString(rai[1], 16).Insert(0, new string('0', 2 - System.Convert.ToString(rai[1], 16).Length)) + "\n"); StrDebug.Write(System.Convert.ToString(Trans_Buffer[0], 16).Insert(0, new string('0', 2 - System.Convert.ToString(Trans_Buffer[0], 16).Length)) + System.Convert.ToString(Trans_Buffer[1], 16).Insert(0, new string('0', 2 - System.Convert.ToString(Trans_Buffer[1], 16).Length)) + "\n\n"); StrDebug.Flush(); //StrDebug.Write(System.Convert.ToString(rai[0], 2).Insert(0, new string('0', 8 - System.Convert.ToString(rai[0], 2).Length)) + System.Convert.ToString(rai[1], 2).Insert(0, new string('0', 8 - System.Convert.ToString(rai[1], 2).Length)) + "\n"); //StrDebug.Write(System.Convert.ToString(Trans_Buffer[0], 2).Insert(0, new string('0', 8 - System.Convert.ToString(Trans_Buffer[0], 2).Length)) + System.Convert.ToString(Trans_Buffer[1], 2).Insert(0, new string('0', 8 - System.Convert.ToString(Trans_Buffer[1], 2).Length)) + "\n\n"); i--; Usb_Mine.Reset(); } } } else { i--; Usb_Mine.Reset(); } } int TransTime_E = System.Environment.TickCount; StrDebug.Close(); FsDebug.Close(); Image_Matrix.Close(); Image_Matrix_add.Close(); this.Dispatcher.BeginInvoke(Re_B, 100); this.Dispatcher.Invoke(Re_T, "世界线偏斜速率\n " + Convert.ToString(Trans_Matrix.Length * 1000.0 / (TransTime_E - TransTime_S) / 1048576) + "MB/s"); Trans.Abort(); } }