А может быть чуть иначе :), извините не помню сам уже..
public string GetRegAscii(int ftNum, int quant, int paramlen = 2)
{
string outStr = "";
List<string> lStr = new List<string>();
for (int i=0; i<quant; i++)
{
var str = "";
if (paramlen == 2)
{
ushort us = Convert.ToUInt16(Val(ftNum + i));
byte[] buf = BitConverter.GetBytes(us);
str = Encoding.ASCII.GetString(buf).TrimEnd((char)0);
}
else if (paramlen == 4)
{
uint ui = Convert.ToUInt32(Val(ftNum + i));
byte[] buf = BitConverter.GetBytes(ui);
str = Encoding.ASCII.GetString(buf).TrimEnd((char)0);
}
else if (paramlen == 8)
{
ulong ul = Convert.ToUInt64(Val(ftNum + i));
byte[] buf = BitConverter.GetBytes(ul);
str = Encoding.ASCII.GetString(buf).TrimEnd((char)0);
}
lStr.Add(str);
}
if (lStr.Count > 0) { outStr = string.Join("", lStr.ToArray()); }
return outStr;
}
Тут в данному случае указываем во входной формуле SplitAscii(()=> GetRegAscii(300, 1, 8))
8 здесь, длина канала, если вам попадает сразу 8 байт, по умолчанию 2 и можно не вводить (если мы по регистрово настраиваем)
300 — это номер канала, куда прилетают данные
1 — всего один канал обрабатывать
Формат String