|
@@ -82,7 +82,7 @@ namespace ShakerFpga
|
|
|
}
|
|
|
private void GeneratorRegister(Register register, StringBuilder stringBuilder)
|
|
|
{
|
|
|
- string protype = GetProType(register);
|
|
|
+ string protype = GetProType(register,out var typename);
|
|
|
string proname = $"{register.Name.Split('_')[0]}";
|
|
|
proname = RemovePropertySpecialcharacters(proname);
|
|
|
stringBuilder.AppendLine($" private {protype} _{proname};");
|
|
@@ -104,14 +104,33 @@ namespace ShakerFpga
|
|
|
stringBuilder.AppendLine($" ///<para> 数据类型:{type}</para>");
|
|
|
}
|
|
|
stringBuilder.AppendLine($" /// </summary>");
|
|
|
- stringBuilder.AppendLine($" public {protype} {proname}");
|
|
|
- stringBuilder.AppendLine(" {");
|
|
|
- stringBuilder.AppendLine(" get");
|
|
|
- stringBuilder.AppendLine(" {");
|
|
|
- stringBuilder.AppendLine($" _" + proname + $" ??= ({protype})fpga.Properties[\"{register.Name}\"];");
|
|
|
- stringBuilder.AppendLine($" return _" + proname + ";");
|
|
|
- stringBuilder.AppendLine(" }");
|
|
|
- stringBuilder.AppendLine(" }");
|
|
|
+ if(register.Indicator)
|
|
|
+ {
|
|
|
+ stringBuilder.AppendLine($" public {typename} {proname}");
|
|
|
+ stringBuilder.AppendLine(" {");
|
|
|
+ stringBuilder.AppendLine(" get");
|
|
|
+ stringBuilder.AppendLine(" {");
|
|
|
+ stringBuilder.AppendLine($" _" + proname + $" ??= ({protype})fpga.Properties[\"{register.Name}\"];");
|
|
|
+ stringBuilder.AppendLine($" return _" + proname + ".Value;");
|
|
|
+ stringBuilder.AppendLine(" }");
|
|
|
+ stringBuilder.AppendLine(" }");
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ stringBuilder.AppendLine($" public {typename} {proname}");
|
|
|
+ stringBuilder.AppendLine(" {");
|
|
|
+ stringBuilder.AppendLine(" get");
|
|
|
+ stringBuilder.AppendLine(" {");
|
|
|
+ stringBuilder.AppendLine($" _" + proname + $" ??= ({protype})fpga.Properties[\"{register.Name}\"];");
|
|
|
+ stringBuilder.AppendLine($" return _" + proname + ".Value;");
|
|
|
+ stringBuilder.AppendLine(" }");
|
|
|
+ stringBuilder.AppendLine(" set");
|
|
|
+ stringBuilder.AppendLine(" {");
|
|
|
+ stringBuilder.AppendLine($" _" + proname + $" ??= ({protype})fpga.Properties[\"{register.Name}\"];");
|
|
|
+ stringBuilder.AppendLine($" _" + proname + ".Value = value;");
|
|
|
+ stringBuilder.AppendLine(" }");
|
|
|
+ stringBuilder.AppendLine(" }");
|
|
|
+ }
|
|
|
}
|
|
|
private void GeneratorFifo(DMA dma,StringBuilder stringBuilder)
|
|
|
{
|
|
@@ -197,13 +216,15 @@ namespace ShakerFpga
|
|
|
string proname = Regex.Replace(s,@"\((.+?)\)","", RegexOptions.IgnoreCase).Replace("(", "_").Replace(")", "_").Replace("/", "_").Replace("__", "_").Trim('_');
|
|
|
return char.ToUpper(proname[0]) + proname.Substring(1);
|
|
|
}
|
|
|
- private string GetProType(Register register)
|
|
|
+ private string GetProType(Register register,out string nomalTypeNames)
|
|
|
{
|
|
|
+ nomalTypeNames = "";
|
|
|
string value = "";
|
|
|
switch (register.Datatype)
|
|
|
{
|
|
|
case NIFPGA.lvbitx.Datatype.Boolean:
|
|
|
- if(!register.Indicator)
|
|
|
+ nomalTypeNames = "bool";
|
|
|
+ if (!register.Indicator)
|
|
|
{
|
|
|
value = "FPGAWriteProperty<bool>";
|
|
|
}
|
|
@@ -213,6 +234,7 @@ namespace ShakerFpga
|
|
|
}
|
|
|
break;
|
|
|
case NIFPGA.lvbitx.Datatype.Int8:
|
|
|
+ nomalTypeNames = "sbyte";
|
|
|
if (!register.Indicator)
|
|
|
{
|
|
|
value = "FPGAWriteProperty<sbyte>";
|
|
@@ -223,6 +245,7 @@ namespace ShakerFpga
|
|
|
}
|
|
|
break;
|
|
|
case NIFPGA.lvbitx.Datatype.Uint8:
|
|
|
+ nomalTypeNames = "byte";
|
|
|
if (!register.Indicator)
|
|
|
{
|
|
|
value = "FPGAWriteProperty<byte>";
|
|
@@ -233,6 +256,7 @@ namespace ShakerFpga
|
|
|
}
|
|
|
break;
|
|
|
case NIFPGA.lvbitx.Datatype.Int16:
|
|
|
+ nomalTypeNames = "short";
|
|
|
if (!register.Indicator)
|
|
|
{
|
|
|
value = "FPGAWriteProperty<short>";
|
|
@@ -243,6 +267,7 @@ namespace ShakerFpga
|
|
|
}
|
|
|
break;
|
|
|
case NIFPGA.lvbitx.Datatype.Uint16:
|
|
|
+ nomalTypeNames = "ushort";
|
|
|
if (!register.Indicator)
|
|
|
{
|
|
|
value = "FPGAWriteProperty<ushort>";
|
|
@@ -253,6 +278,7 @@ namespace ShakerFpga
|
|
|
}
|
|
|
break;
|
|
|
case NIFPGA.lvbitx.Datatype.Int32:
|
|
|
+ nomalTypeNames = "int";
|
|
|
if (!register.Indicator)
|
|
|
{
|
|
|
value = "FPGAWriteProperty<int>";
|
|
@@ -263,6 +289,7 @@ namespace ShakerFpga
|
|
|
}
|
|
|
break;
|
|
|
case NIFPGA.lvbitx.Datatype.Uint32:
|
|
|
+ nomalTypeNames = "uint";
|
|
|
if (!register.Indicator)
|
|
|
{
|
|
|
value = "FPGAWriteProperty<uint>";
|
|
@@ -273,6 +300,7 @@ namespace ShakerFpga
|
|
|
}
|
|
|
break;
|
|
|
case NIFPGA.lvbitx.Datatype.Int64:
|
|
|
+ nomalTypeNames = "long";
|
|
|
if (!register.Indicator)
|
|
|
{
|
|
|
value = "FPGAWriteProperty<long>";
|
|
@@ -283,6 +311,7 @@ namespace ShakerFpga
|
|
|
}
|
|
|
break;
|
|
|
case NIFPGA.lvbitx.Datatype.Uint64:
|
|
|
+ nomalTypeNames = "ulong";
|
|
|
if (!register.Indicator)
|
|
|
{
|
|
|
value = "FPGAWriteProperty<ulong>";
|
|
@@ -293,6 +322,7 @@ namespace ShakerFpga
|
|
|
}
|
|
|
break;
|
|
|
case NIFPGA.lvbitx.Datatype.Float:
|
|
|
+ nomalTypeNames = "float";
|
|
|
if (!register.Indicator)
|
|
|
{
|
|
|
value = "FPGAWriteProperty<float>";
|
|
@@ -303,6 +333,7 @@ namespace ShakerFpga
|
|
|
}
|
|
|
break;
|
|
|
case NIFPGA.lvbitx.Datatype.Double:
|
|
|
+ nomalTypeNames = "double";
|
|
|
if (!register.Indicator)
|
|
|
{
|
|
|
value = "FPGAWriteProperty<double>";
|
|
@@ -313,7 +344,8 @@ namespace ShakerFpga
|
|
|
}
|
|
|
break;
|
|
|
case NIFPGA.lvbitx.Datatype.FXP:
|
|
|
- if(!register.Indicator)
|
|
|
+ nomalTypeNames = "double";
|
|
|
+ if (!register.Indicator)
|
|
|
{
|
|
|
value = "FPGAFXPWriteProperty";
|
|
|
}
|
|
@@ -326,7 +358,8 @@ namespace ShakerFpga
|
|
|
switch (register.ArrayValueType)
|
|
|
{
|
|
|
case NIFPGA.lvbitx.Datatype.Boolean:
|
|
|
- if(!register.Indicator)
|
|
|
+ nomalTypeNames = "bool[]";
|
|
|
+ if (!register.Indicator)
|
|
|
{
|
|
|
value = "FPGAArrayWriteProperty<bool>";
|
|
|
}
|
|
@@ -336,6 +369,7 @@ namespace ShakerFpga
|
|
|
}
|
|
|
break;
|
|
|
case NIFPGA.lvbitx.Datatype.Int8:
|
|
|
+ nomalTypeNames = "sbyte[]";
|
|
|
if (!register.Indicator)
|
|
|
{
|
|
|
value = "FPGAArrayWriteProperty<sbyte>";
|
|
@@ -346,6 +380,7 @@ namespace ShakerFpga
|
|
|
}
|
|
|
break;
|
|
|
case NIFPGA.lvbitx.Datatype.Uint8:
|
|
|
+ nomalTypeNames = "byte[]";
|
|
|
if (!register.Indicator)
|
|
|
{
|
|
|
value = "FPGAArrayWriteProperty<byte>";
|
|
@@ -356,6 +391,7 @@ namespace ShakerFpga
|
|
|
}
|
|
|
break;
|
|
|
case NIFPGA.lvbitx.Datatype.Int16:
|
|
|
+ nomalTypeNames = "short[]";
|
|
|
if (!register.Indicator)
|
|
|
{
|
|
|
value = "FPGAArrayWriteProperty<short>";
|
|
@@ -366,6 +402,7 @@ namespace ShakerFpga
|
|
|
}
|
|
|
break;
|
|
|
case NIFPGA.lvbitx.Datatype.Uint16:
|
|
|
+ nomalTypeNames = "ushort[]";
|
|
|
if (!register.Indicator)
|
|
|
{
|
|
|
value = "FPGAArrayWriteProperty<ushort>";
|
|
@@ -376,6 +413,7 @@ namespace ShakerFpga
|
|
|
}
|
|
|
break;
|
|
|
case NIFPGA.lvbitx.Datatype.Int32:
|
|
|
+ nomalTypeNames = "int[]";
|
|
|
if (!register.Indicator)
|
|
|
{
|
|
|
value = "FPGAArrayWriteProperty<int>";
|
|
@@ -386,6 +424,7 @@ namespace ShakerFpga
|
|
|
}
|
|
|
break;
|
|
|
case NIFPGA.lvbitx.Datatype.Uint32:
|
|
|
+ nomalTypeNames = "uint[]";
|
|
|
if (!register.Indicator)
|
|
|
{
|
|
|
value = "FPGAArrayWriteProperty<uint>";
|
|
@@ -396,6 +435,7 @@ namespace ShakerFpga
|
|
|
}
|
|
|
break;
|
|
|
case NIFPGA.lvbitx.Datatype.Int64:
|
|
|
+ nomalTypeNames = "long[]";
|
|
|
if (!register.Indicator)
|
|
|
{
|
|
|
value = "FPGAArrayWriteProperty<long>";
|
|
@@ -406,6 +446,7 @@ namespace ShakerFpga
|
|
|
}
|
|
|
break;
|
|
|
case NIFPGA.lvbitx.Datatype.Uint64:
|
|
|
+ nomalTypeNames = "ulong[]";
|
|
|
if (!register.Indicator)
|
|
|
{
|
|
|
value = "FPGAArrayWriteProperty<ulong>";
|
|
@@ -416,6 +457,7 @@ namespace ShakerFpga
|
|
|
}
|
|
|
break;
|
|
|
case NIFPGA.lvbitx.Datatype.Float:
|
|
|
+ nomalTypeNames = "float[]";
|
|
|
if (!register.Indicator)
|
|
|
{
|
|
|
value = "FPGAArrayWriteProperty<float>";
|
|
@@ -426,6 +468,7 @@ namespace ShakerFpga
|
|
|
}
|
|
|
break;
|
|
|
case NIFPGA.lvbitx.Datatype.Double:
|
|
|
+ nomalTypeNames = "double[]";
|
|
|
if (!register.Indicator)
|
|
|
{
|
|
|
value = "FPGAArrayWriteProperty<double>";
|
|
@@ -436,6 +479,7 @@ namespace ShakerFpga
|
|
|
}
|
|
|
break;
|
|
|
case NIFPGA.lvbitx.Datatype.FXP:
|
|
|
+ nomalTypeNames = "double[]";
|
|
|
if (!register.Indicator)
|
|
|
{
|
|
|
value = "FPGAArrayFXPWriteProperty";
|