串行端口-Pinnacle Plus+电源RS232通讯在C#
本文关键字:RS232 -Pinnacle Plus+ 电源 串行端口 | 更新日期: 2023-09-27 17:59:30
我正试图通过RS232链路与Pinnacle Plus+电源通信,但得到单位没有回复。装置配置为地址1和波特率9600。
代码在C#中
以下是我所做的:
SerialPort PinnacleSerialPort = new SerialPort("COM3", 9600, Parity.Odd, 8, StopBits.One);
PinnacleSerialPort.ReadTimeout = 3000;
PinnacleSerialPort.Open();
byte[] b = { 8, 128, 136 };
PinnacleSerialPort.Write(b, 0, b.Length);
Thread.Sleep(1000);
try
{
int bytes = PinnacleSerialPort.BytesToRead;//RETURNS 0 (ZERO)
Console.WriteLine(string.Format("Bytes to read: {0}", bytes));
byte[] comBuffer = new byte[bytes];
PinnacleSerialPort.Read(comBuffer, 0, bytes);
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
Console.ReadKey();
根据文件包,文件包包括:标头、命令、数据字节(如果存在)、校验和。
标头(1字节):前3位是数据字节数。在我的情况下,它是0=000最后5位是数据包要寻址的单元号。在我的情况下,它是1=00001完整标头为00001 000或十进制8数据字节:由于此命令不需要这些字节,因此省略这些字节命令(1字节):是命令编号。在我的情况下是10000000=128校验和(1字节):在我的情况下,是标题和命令字节的异或,10001000=136
基于此信息,我构建并发送了以下字节[]数组:
byte[] b = {8, 128, 136}
回复应为4个ASCII字符:"PLUS";
然而,我没有得到任何答复。
我尝试了其他不同的命令,但也没有得到回复。
如果有人有这个单位的经验,请告诉我我做错了什么。
真的很感激。
Alex
您可能需要配置流控制。永远不明白为什么串行端口参数指定波特率和奇偶校验而不指定流量控制,因为如果有什么不同的话,它比其他参数更重要。
问题不在于代码。代码很好。RS232电缆连接有故障。自从它被替换后,一切都很好。感谢大家的帮助。