public int SysInfoPDU(LogicChannel channelData, int offset, ReceivedData result) { var subType = TetraUtils.BitsToByte(channelData.Ptr, offset, 2); result.SetValue(GlobalNames.MAC_Broadcast_Type, subType); offset += 2; switch (subType) { case 1: //Debug.Write(" AcсessDef_PDU"); offset = Global.ParseParams(channelData, offset, _accessDefineRules, result); break; case 0: //Debug.Write(" Broadcast_PDU"); offset = Global.ParseParams(channelData, offset, _sysInfoRules, result); break; } return(offset); }
private unsafe void ParseTextMessage(LogicChannel channelData, int offset, ReceivedData result) { if (result.Contains(GlobalNames.OutOfBuffer)) { return; } var codingSheme = result.Value(GlobalNames.Text_coding_scheme); Encoding encTable = Encoding.GetEncoding("iso-8859-1"); int symbLength = 8; switch (codingSheme) { case 1: encTable = Encoding.GetEncoding("iso-8859-1"); break; case 2: encTable = Encoding.GetEncoding("iso-8859-2"); break; case 3: encTable = Encoding.GetEncoding("iso-8859-3"); break; case 4: encTable = Encoding.GetEncoding("iso-8859-4"); break; case 5: encTable = Encoding.GetEncoding("iso-8859-5"); break; case 6: encTable = Encoding.GetEncoding("iso-8859-6"); break; case 7: encTable = Encoding.GetEncoding("iso-8859-7"); break; case 8: encTable = Encoding.GetEncoding("iso-8859-8"); break; case 9: encTable = Encoding.GetEncoding("iso-8859-9"); break; case 10: encTable = Encoding.GetEncoding("iso-8859-10"); break; case 11: encTable = Encoding.GetEncoding("iso-8859-13"); break; case 12: encTable = Encoding.GetEncoding("iso-8859-14"); break; case 13: encTable = Encoding.GetEncoding("iso-8859-15"); break; case 14: encTable = Encoding.GetEncoding(437); break; case 15: encTable = Encoding.GetEncoding(737); break; case 16: encTable = Encoding.GetEncoding(850); break; case 17: encTable = Encoding.GetEncoding(852); break; case 18: encTable = Encoding.GetEncoding(855); break; case 19: encTable = Encoding.GetEncoding(857); break; case 20: encTable = Encoding.GetEncoding(860); break; case 21: encTable = Encoding.GetEncoding(861); break; case 22: encTable = Encoding.GetEncoding(863); break; case 23: encTable = Encoding.GetEncoding(865); break; case 24: encTable = Encoding.GetEncoding(866); break; case 25: encTable = Encoding.GetEncoding(869); break; default: break; result.Add(GlobalNames.UnknowData, 1); return; } Decoder dec = encTable.GetDecoder(); var messageLength = (channelData.Length - offset) / symbLength; if (messageLength < 0) { return; } string message; byte[] symbolsArray = new byte[messageLength]; int index = 0; while (messageLength > 0) { symbolsArray[index++] = TetraUtils.BitsToByte(channelData.Ptr, offset, symbLength); offset += symbLength; messageLength--; } message = encTable.GetString(symbolsArray); Debug.WriteLine(" data:" + message); }