CRC16 Check eines Pakets

Hallo Liebes Programmierer,

ich habe meine Probleme mit der CRC16 Checksumme. Ich schreibe zurzeit ein kleines Tool, welches Daten eines Microcontrollers aufnimmt und per Anfrage dann wieder ausgeben kann. Leider klappt der "Security Check noch nicht. Ich habe in meiner Anwendung der Klassen, welche die drei Pakettypen wiederspiegeln. Diese Klassen haben verschiedene Parameter, die vom ankommenden Datenpaket der Controllers gefüllt werden sollen. Ich habe nun eine Art Dummypaket, um die CRC16-Methode zu prüfen, leider kommt jedes mal, wenn ich die Methode aufrufe die Ausgabe “System.Byte []” heraus :(.
Ich weiß leider nicht, woran das liegt, könnt ihr mir da evtl helfen?
Vielen Dank schonmal für eure Mühe
PS: Ich habe zwei der Klassen rausgenommen, damit mein Post nicht so lang ist.
C# Code:

[ol]
[li]using System; [/li][li]using System.Collections.Generic; [/li][li]using System.Linq; [/li][li]using System.Text; [/li][li]namespace Open_Target_Protocol [/li][li]{ [/li][li] }public class Crc16 [/li][li] { [/li][li] const ushort polynomial = 0x1021; [/li][li] static ushort[] table = new ushort[256]; [/li][li] public static ushort ComputeChecksum(byte[] bytes) [/li][li] { [/li][li] ushort crc = 0; [/li][li] for (int i = 0; i < bytes.Length; ++i) [/li][li] { [/li][li] byte index = (byte)(crc ^ bytes**); [/li][li] crc = (ushort)((crc >> 8) ^ table[index]); [/li][li] } [/li][li] return crc; [/li][li] } [/li][li] public static byte[] ComputeChecksumBytes(byte[] bytes) [/li][li] { [/li][li] ushort crc = ComputeChecksum(bytes); [/li][li] return BitConverter.GetBytes(crc); [/li][li] } [/li][li] public Crc16() [/li][li] { [/li][li] ushort value; [/li][li] ushort temp; [/li][li] for (ushort i = 0; i < table.Length; ++i) [/li][li] { [/li][li] value = 0; [/li][li] temp = i; [/li][li] for (byte j = 0; j < 8; ++j) [/li][li] { [/li][li] if (((value ^ temp) & 0x0001) != 0) [/li][li] { [/li][li] value = (ushort)((value >> 1) ^ polynomial); [/li][li] } [/li][li] else [/li][li] { [/li][li] value >>= 1; [/li][li] } [/li][li] temp >>= 1; [/li][li] } [/li][li] table** = value; [/li][li] } [/li][li] } [/li][li] } [/li][li] public class SIP**//System Information Packet** [/li][li] { [/li][li] //Variables [/li][li] public static int rangeNumber; [/li][li] public static string SystemNotice; [/li][li] public static string time; [/li][li] public static void setRangeNumber(int a) [/li][li] { [/li][li] if (a<=0)//Default [/li][li] { [/li][li] a = 1; [/li][li] } [/li][li] rangeNumber = a; [/li][li] } [/li][li] public static int getRangeNumber() [/li][li] { [/li][li] return rangeNumber; [/li][li] } [/li][li] public static void setSystemNotice(int b) [/li][li] { [/li][li] if (b == 1)//Race has started [/li][li] { [/li][li] SystemNotice = “L”; [/li][li] } [/li][li] if (b == 0)//Standby [/li][li] { [/li][li] SystemNotice = “S”; [/li][li] } [/li][li] } [/li][li] public static string getSystemNotice() [/li][li] { [/li][li] return SystemNotice; [/li][li] } [/li][li] public static string getTimestamp() [/li][li] { [/li][li] time = DateTime.Now.ToString(“HHmmssfff”);//HHMMSSCC [/li][li] return time; [/li][li] } [/li][li] public static string SecurityCeck(byte[] Data) [/li][li] { [/li][li] //string check = Convert.ToString(CRC.CRC16S(Data)); [/li][li] string check = Convert.ToString(Crc16.ComputeChecksumBytes(Data)); [/li][li] return check; [/li][li] } [/li][li] } [/li][li] class Program [/li][li] { [/li][li] static void Main(string[] args) [/li][li] { [/li][li] string test = “SIP:1:l:14514504”; [/li][li] byte[] bytes = Encoding.ASCII.GetBytes(test); [/li][li] SIP.setRangeNumber(16); [/li][li] Console.WriteLine(SIP.SecurityCeck(bytes)); [/li][li] Console.WriteLine(SIP.getRangeNumber()); [/li][li] Console.WriteLine(HCP.getTimestamp()); [/li][li] Console.ReadLine(); [/li][li] } [/li][li] } [/li][li]} [/li][/ol]

Hat sich erledigt, ich weiß wo der Fehler liegt. Danke trotzdem

Und wo war er?