C#学习记录(五)第一次上机实验

时间:2023-01-14 21:00:28

这一次上机实验的内容是关于CRC循环冗余校验的。虽然实验内容是用英语写的,逐句阅读并不难理解。

 

实验内容简单来说是先要编写一个控制台应用程序,读取一个文件的内容,根据CRC循环冗余校验的规则进行运算,最后将运算的结果输出到控制台。

然后编写一个窗体应用程序对这个控制台程序进行调用,读取用户在窗体中输入的文件路径,最后将校验后的内容输出到窗体当中显示。

 

对于我,这次实验的难点主要并不在控制台程序中的校验过程的试验,而是C#中流的输入输出以及不同程序之间的连接通信。C#中的流的输入输出与我之前学习的C++的流输入输出有很大的不同,个人感觉相比C++要略微复杂一些。

这是控制台程序中的输入输出的一些代码

 1  try
 2             {
 3                 FileStream fStream = new FileStream(args[0], FileMode.Open, FileAccess.Read);
 4 
 5                 BinaryReader binReader = new BinaryReader(fStream);
 6             byte message;
 7                 while (true)
 8                 {
 9                     message = binReader.ReadByte();
10                     CalcCRC.CalculateCRC(message);
11                 }
12             }
13             catch (EndOfStreamException e)
14                 {
15 
16                 }

 

这是窗体应用程序中调用控制台应用程序的代码

 1  private void buttonOK_Click(object sender, EventArgs e)
 2         {
 3             Process process = new Process();
 4             process.StartInfo.FileName = @"f:\C#\C#选修\Project1\Project1\bin\Release\Project1.exe";
 5             process.StartInfo.RedirectStandardInput = true;
 6             process.StartInfo.RedirectStandardOutput = true;
 7             process.StartInfo.CreateNoWindow = true;
 8             process.StartInfo.UseShellExecute = false;
 9             process.StartInfo.Arguments = filePathTextbox.Text;
10             process.Start();
11 
12             string outPut = process.StandardOutput.ReadLine();
13 
14             outputTextbox.Text = outPut;
15            
16         }

 

刚开始编写的时候,我采取的并不是将文件路径直接传入控制台程序的方法,而是将文件在窗体应用程序中读取并分段传入控制台程序中运算。控制台程序读取传入内容有两种方法,一种是作为参数传入,在程序中保存在Main函数的args参数中;另一种是采用流读入的方法传入。若在控制台中输入"*.exe arg1 arg2"的方式运行程序,以上两种方法都能够传入参数没有问题。然而,若是用另一个程序通过process的方法运行,这两种方法必须严格区分。开始我编写控制台程序用args传入参数,然后在用process的方法调用的时候发现无论如何都无法传入参数,便是没有将这两种方式区分开来。

 

最后贴上窗体程序的运行结果

C#学习记录(五)第一次上机实验

C#学习记录(五)第一次上机实验