如何分析代码行?

时间:2014-07-11 02:40:48

标签: c#

分析和理解此代码的步骤是什么?

代码:Write方法由SerialPort类(SerialPort类)

调用
SerialPort.Write(new byte[1] { (byte)PacketTypeShimmer2.START_STREAMING_COMMAND }, 0, 1);

这是名为。

的枚举器
public enum PacketTypeShimmer2 : byte
{   ....
    START_STREAMING_COMMAND = 0x07,
    ....
};

2 个答案:

答案 0 :(得分:3)

对于该特定方法,

This is the API。它说:

  

使用来自的数据将指定数量的字节写入串行端口   一个缓冲区。

参数是缓冲区,偏移量和计数。以下是定义:

  • buffer:包含要写入端口的数据的字节数组。
  • offset:缓冲区参数中从零开始的字节偏移量,开始将字节复制到端口。
  • count:要写入的字节数。

以下是一行代码中的参数:

  • buffer = new byte[1] { (byte)PacketTypeShimmer2.START_STREAMING_COMMAND }
  • offset = 0
  • count = 1

缓冲区实际上是一个单一大小的字节数组(new byte[1]{...}部分)。此数组包含enum作为byte

START_STREAMING_COMMAND = 0x07,

答案 1 :(得分:2)

也许这有助于将事情分解成更小的部分。首先,您的enum继承自byte,因此可以投放到byte。这是理解其余部分的关键。

接下来,让我们看一下SerialPort.Write方法。它采用以下参数:

  1. a byte[] - 要写的数据

  2. 一个int - 偏移量(从字节数组开始的位置)

  3. 一个int - 长度(在字节数组中读取的距离)

  4. 所以,现在我们知道了,让我们来看看这个电话。我猜第一部分是什么让你难过,所以我们也要打破它:

    var buffer = new byte[1] { (byte) PacketTypeShimmer2.START_STREAMING_COMMAND };
    var offset = 0;
    var length = 1;
    SerialPort.Write(buffer, offset, length);
    

    第一行是简单地声明一个长度为1的字节数组,并使用数组初始化语法对其进行初始化(这是调用new后大括号的作用)。

    第二行和第三行是相当自我解释的,方法调用本身也是如此。

    希望这有助于打破一切并使其易于理解。