【发布时间】:2017-05-19 20:32:32
【问题描述】:
我目前正在尝试向通过 USB 端口连接的微芯片发送一个 64 字节长的命令。我尝试使用SerialPort.Write 命令发送一个字节数组,但发现它实际上将有效负载拆分为 16 个字节的数据包,分别发送这些数据包,中间有空的 NAK。我的代码如下:
SerialPort Chip = new SerialPort("COM4");
byte[] Reset = new byte[64];
byte[] Command = new byte[64];
Reset[0] = 0x70;
Reset[1] = 0xAB;
Reset[2] = 0xCD;
Reset[3] = 0xEF;
for (int z = 4; z < 64; z++)
{
Reset[z] = 0x00;
}
for (int z = 0; z < 64; z++)
{
Command[z] = 0x00;
}
Command[0] = 0x60;
Command[7] = 0x80;
Command[8] = 0x02;
Command[9] = 0x03;
Command[10] = 0x10;
Command[11] = 0x01;
Chip.Open();
Chip.Write(Reset,0,64);
Thread.Sleep(25);
Chip.Write(Command,0,64);
有谁知道用一个数据包发送我的命令的方法吗?
此外,当我尝试使用名为 HTerm 的程序发送 64 字节命令时也会发生同样的情况,而其他人用 C++ 编写的程序似乎工作得很好,但我对 C++ 的了解很少,所以这对我没有帮助.
【问题讨论】:
-
您应该为 SerialPort 指定 BaudRate、Parity、DataBits、StopBits、Handshake 与设备上设置的相同
-
设备使用 9600 的波特率,8 个数据位,1 个停止位,并且没有握手,这是默认设置。
-
你熟悉串口吗?你试过发送字符串吗
-
我试过发送字符串,情况还是一样。
-
您使用什么方法来读取/检查结果?你在用一些成熟的工具吗?
标签: c# arrays serial-port usb