This commit is contained in:
luosheng
2024-05-20 16:25:21 +08:00
parent 4ecec7a35e
commit d0707a867a
4 changed files with 14 additions and 10 deletions

View File

@@ -59,8 +59,9 @@ namespace Modbus.Net.HJ212
formatMessage += "CN=" + r_message.CN + ";"; formatMessage += "CN=" + r_message.CN + ";";
formatMessage += "PW=" + r_message.PW + ";"; formatMessage += "PW=" + r_message.PW + ";";
formatMessage += "MN=" + r_message.MN + ";"; formatMessage += "MN=" + r_message.MN + ";";
formatMessage += "Flag=5;";
formatMessage += "CP=&&"; formatMessage += "CP=&&";
formatMessage += "DateTime=" + r_message.Datetime.ToString("yyyyMMddHHmmss") + ";"; formatMessage += "DataTime=" + r_message.Datatime + ";";
foreach (var record in r_message.CP) foreach (var record in r_message.CP)
{ {
foreach (var data in record) foreach (var data in record)
@@ -93,15 +94,16 @@ namespace Modbus.Net.HJ212
{ {
public WriteRequestHJ212InputStruct(string st, string cn, string pw, string mn, List<Dictionary<string, string>> cp, DateTime datetime) public WriteRequestHJ212InputStruct(string st, string cn, string pw, string mn, List<Dictionary<string, string>> cp, DateTime datetime)
{ {
QN = datetime.ToString("yyyyMMddHHmmssffff");
ST = st; ST = st;
CN = cn; CN = cn;
PW = pw; PW = pw;
MN = mn; MN = mn;
CP = cp; CP = cp;
Datetime = datetime; Datatime = datetime.ToString("yyyyMMddHHmmss");
} }
public string QN => "20170101000926706"; public string QN { get; }
public string ST { get; } public string ST { get; }
@@ -113,7 +115,7 @@ namespace Modbus.Net.HJ212
public List<Dictionary<string, string>> CP { get; } public List<Dictionary<string, string>> CP { get; }
public DateTime Datetime { get; } public string Datatime { get; }
} }
/// <summary> /// <summary>

View File

@@ -15,10 +15,10 @@ namespace Modbus.Net.HJ212
/// <returns>扩展后的协议内容</returns> /// <returns>扩展后的协议内容</returns>
public byte[] BytesExtend(byte[] content) public byte[] BytesExtend(byte[] content)
{ {
var newFormat = new byte[content.Length + 12]; var newFormat = new byte[content.Length + 14];
Array.Copy(content, 0, newFormat, 6, content.Length); Array.Copy(content, 0, newFormat, 6, content.Length);
//表头长度扩张 //表头长度扩张
var length = content.Length; var length = content.Length + 2;
string lengthString = length.ToString("0000"); string lengthString = length.ToString("0000");
lengthString = "##" + lengthString; lengthString = "##" + lengthString;
var lengthCalc = Encoding.ASCII.GetBytes(lengthString); var lengthCalc = Encoding.ASCII.GetBytes(lengthString);
@@ -27,9 +27,9 @@ namespace Modbus.Net.HJ212
var crc = new byte[2]; var crc = new byte[2];
Crc16.GetInstance().GetCRC(content, ref crc); Crc16.GetInstance().GetCRC(content, ref crc);
string crcString = BitConverter.ToString(crc).Replace("-", string.Empty); string crcString = BitConverter.ToString(crc).Replace("-", string.Empty);
crcString = "&&" + crcString; crcString = "&&" + crcString + "\r\n";
var crcCalc = Encoding.ASCII.GetBytes(crcString); var crcCalc = Encoding.ASCII.GetBytes(crcString);
Array.Copy(crcCalc, 0, newFormat, newFormat.Length - 6, 6); Array.Copy(crcCalc, 0, newFormat, newFormat.Length - 8, 8);
return newFormat; return newFormat;
} }

View File

@@ -118,7 +118,8 @@ namespace Modbus.Net
pipeline.AddLast("handler", this); pipeline.AddLast("handler", this);
})); }));
Channel = await bootstrap.ConnectAsync(new IPEndPoint(IPAddress.Parse(_host), _port)); var isIp = IPAddress.TryParse(_host, out _);
Channel = await bootstrap.ConnectAsync(isIp ? new IPEndPoint(IPAddress.Parse(_host), _port) : new DnsEndPoint(_host, _port));
if (Channel.Open) if (Channel.Open)
{ {

View File

@@ -180,7 +180,8 @@ namespace Modbus.Net
logger.LogDebug($"Udp client {ConnectionToken} send: {string.Concat(datagram.Select(p => " " + p.ToString("X2")))}"); logger.LogDebug($"Udp client {ConnectionToken} send: {string.Concat(datagram.Select(p => " " + p.ToString("X2")))}");
IByteBuffer buffer = Unpooled.Buffer(); IByteBuffer buffer = Unpooled.Buffer();
buffer.WriteBytes(datagram); buffer.WriteBytes(datagram);
var packet = new DatagramPacket((IByteBuffer)buffer.Retain(), new IPEndPoint(IPAddress.Parse(_host), _port)); var isIp = IPAddress.TryParse(_host, out _);
var packet = new DatagramPacket((IByteBuffer)buffer.Retain(), isIp ? new IPEndPoint(IPAddress.Parse(_host), _port) : new DnsEndPoint(_host, _port));
await Channel.WriteAndFlushAsync(packet); await Channel.WriteAndFlushAsync(packet);
} }
catch (Exception err) catch (Exception err)