public BordmonitorText[] ParseItems()
{
if (items != null)
{
return items;
}
if (Field != BordmonitorFields.Item)
{
throw new Exception("Wrong Field type.");
}
#if NETMF
var res = new System.Collections.ArrayList();
#else
var res = new System.Collections.Generic.List<BordmonitorText>();
#endif
if (Data.Length > 3)
{
var index = (byte)(Data[3] & 0x0F);
bool isChecked = false;
var offset = 4;
for (int i = offset; i < Data.Length; i++)
{
var isNext = Data[i] == 0x06;
var isLast = i == Data.Length - 1;
if (isNext || isLast)
{
if (!isNext)
{
isChecked = Data[i] == 0x2A;
}
var s = ASCIIEncoding.GetString(Data, offset, i - offset + (isNext ? 0 : 1) - (isChecked ? 1 : 0), false).Trim().ASCIIToUTF8();
res.Add(new BordmonitorText(Field, s, index, isChecked));
index++;
if (isNext && isLast)
{
res.Add(new BordmonitorText(Field, "", index, false));
}
offset = i + 1;
continue;
}
isChecked = Data[i] == 0x2A;
}
}
#if NETMF
items = (BordmonitorText[])res.ToArray(typeof(BordmonitorText));
#else
items = res.ToArray();
#endif
return items;
}