2014-08-01 update 4

This commit is contained in:
parallelbgls
2014-08-01 13:59:48 +08:00
parent 32232fa34c
commit a6e06afb6d
2 changed files with 47 additions and 42 deletions

View File

@@ -42,6 +42,12 @@ namespace ModBus.Net
Protocals.Add(linkProtocal.GetType().Name, linkProtocal); Protocals.Add(linkProtocal.GetType().Name, linkProtocal);
} }
public virtual byte[] SendReceive(params object[] content)
{
int t;
return _protocalLinker.SendReceive(ProtocalUnit.TranslateContent(content));
}
public virtual OutputStruct SendReceive(ProtocalUnit unit, params object[] content) public virtual OutputStruct SendReceive(ProtocalUnit unit, params object[] content)
{ {
int t = 0; int t = 0;

View File

@@ -15,12 +15,11 @@ namespace ModBus.Net
} }
public abstract OutputStruct Unformat(byte[] messageBytes, ref int pos); public abstract OutputStruct Unformat(byte[] messageBytes, ref int pos);
/// <summary> /// <summary>
/// </summary> /// </summary>
/// <param name="contents"></param> /// <param name="contents"></param>
/// <returns></returns> /// <returns></returns>
public byte[] TranslateContent(params object[] contents) public static byte[] TranslateContent(params object[] contents)
{ {
bool b = false; bool b = false;
var newContentsList = new List<object>(); var newContentsList = new List<object>();
@@ -31,7 +30,7 @@ namespace ModBus.Net
{ {
b = true; b = true;
IEnumerable<object> contentArray = IEnumerable<object> contentArray =
ArrayList.Adapter((Array) content).ToArray(typeof (object)).OfType<object>(); ArrayList.Adapter((Array)content).ToArray(typeof(object)).OfType<object>();
newContentsList.AddRange(contentArray); newContentsList.AddRange(contentArray);
} }
else else
@@ -47,54 +46,54 @@ namespace ModBus.Net
switch (t) switch (t)
{ {
case "System.Int16": case "System.Int16":
{ {
translateTarget.AddRange(ValueHelper.Instance.GetBytes((short) content)); translateTarget.AddRange(ValueHelper.Instance.GetBytes((short)content));
break; break;
} }
case "System.Int32": case "System.Int32":
{ {
translateTarget.AddRange(ValueHelper.Instance.GetBytes((int) content)); translateTarget.AddRange(ValueHelper.Instance.GetBytes((int)content));
break; break;
} }
case "System.Int64": case "System.Int64":
{ {
translateTarget.AddRange(ValueHelper.Instance.GetBytes((long) content)); translateTarget.AddRange(ValueHelper.Instance.GetBytes((long)content));
break; break;
} }
case "System.UInt16": case "System.UInt16":
{ {
translateTarget.AddRange(ValueHelper.Instance.GetBytes((ushort) content)); translateTarget.AddRange(ValueHelper.Instance.GetBytes((ushort)content));
break; break;
} }
case "System.UInt32": case "System.UInt32":
{ {
translateTarget.AddRange(ValueHelper.Instance.GetBytes((uint) content)); translateTarget.AddRange(ValueHelper.Instance.GetBytes((uint)content));
break; break;
} }
case "System.UInt64": case "System.UInt64":
{ {
translateTarget.AddRange(ValueHelper.Instance.GetBytes((ulong) content)); translateTarget.AddRange(ValueHelper.Instance.GetBytes((ulong)content));
break; break;
} }
case "System.Single": case "System.Single":
{ {
translateTarget.AddRange(ValueHelper.Instance.GetBytes((float) content)); translateTarget.AddRange(ValueHelper.Instance.GetBytes((float)content));
break; break;
} }
case "System.Double": case "System.Double":
{ {
translateTarget.AddRange(ValueHelper.Instance.GetBytes((double) content)); translateTarget.AddRange(ValueHelper.Instance.GetBytes((double)content));
break; break;
} }
case "System.Byte": case "System.Byte":
{ {
translateTarget.AddRange(ValueHelper.Instance.GetBytes((byte) content)); translateTarget.AddRange(ValueHelper.Instance.GetBytes((byte)content));
break; break;
} }
default: default:
{ {
throw new NotImplementedException("没有实现除整数以外的其它转换方式"); throw new NotImplementedException("没有实现除整数以外的其它转换方式");
} }
} }
} }
return translateTarget.ToArray(); return translateTarget.ToArray();