分析和理解此代码的步骤是什么?
代码:Write
方法由SerialPort
类(SerialPort
类)
SerialPort.Write(new byte[1] { (byte)PacketTypeShimmer2.START_STREAMING_COMMAND }, 0, 1);
这是名为。
的枚举器public enum PacketTypeShimmer2 : byte
{ ....
START_STREAMING_COMMAND = 0x07,
....
};
答案 0 :(得分:3)
This is the API。它说:
使用来自的数据将指定数量的字节写入串行端口 一个缓冲区。
参数是缓冲区,偏移量和计数。以下是定义:
以下是一行代码中的参数:
new byte[1] { (byte)PacketTypeShimmer2.START_STREAMING_COMMAND }
0
1
缓冲区实际上是一个单一大小的字节数组(new byte[1]{...}
部分)。此数组包含enum
作为byte
:
START_STREAMING_COMMAND = 0x07,
答案 1 :(得分:2)
也许这有助于将事情分解成更小的部分。首先,您的enum
继承自byte
,因此可以投放到byte
。这是理解其余部分的关键。
接下来,让我们看一下SerialPort.Write
方法。它采用以下参数:
a byte[]
- 要写的数据
一个int - 偏移量(从字节数组开始的位置)
一个int - 长度(在字节数组中读取的距离)
所以,现在我们知道了,让我们来看看这个电话。我猜第一部分是什么让你难过,所以我们也要打破它:
var buffer = new byte[1] { (byte) PacketTypeShimmer2.START_STREAMING_COMMAND };
var offset = 0;
var length = 1;
SerialPort.Write(buffer, offset, length);
第一行是简单地声明一个长度为1的字节数组,并使用数组初始化语法对其进行初始化(这是调用new
后大括号的作用)。
第二行和第三行是相当自我解释的,方法调用本身也是如此。
希望这有助于打破一切并使其易于理解。