窗口设计简单可以先抛开,你先解决数据发数据/接收问题,其他只是显示而已。
public string GetData(SerialPort port, string textSend)//获取相关数据
{
StringBuilder sb = new StringBuilder();
byte[] bufSend = StrToHexByte(textSend);//16进制字符串转化成byte数组
try
{
port.Open();
port.Write(bufSend, 0, bufSend.Length);
Thread.Sleep(200);
int n = port.BytesToRead;
if (n!=0)
{
byte[] readedBytes = new byte[n];
port.Read(readedBytes, 0, readedBytes.Length);
Thread.Sleep(200);
if (CRCCheck(readedBytes))//CRC验证
{
foreach (byte b in readedBytes)
{
sb.Append(b.ToString("X2") + " ");
}
}
}
}
catch (Exception ex)
{
throw new Exception("[UpsCommunicate:][GetData-1:]"+ex.Message);
}
finally
{
if (port.IsOpen)
{
port.Close();
}
}
return sb.ToString();
}
篇幅不够,crc验证和16进制转byte数据的方法就不写了