In Microsoft Visual Studio habe ich einen 16-Bit-Taschenrechner mit Algorithmus zur zyklischen Redundanzprüfung entwickelt, um die Signatur (den Rest) für N-eingegebene Werte beliebiger Zeichenfolgenlänge zu ermitteln. Soweit mir bekannt ist, gibt es bisher keinen Online-Rechner, der mehrere vom Benutzer eingegebene Datenzeilen berechnen kann. Die Anwendung integriert Microsoft Excel-Bibliotheken, mit denen der Schüler externe Excel-Daten angeben kann, die als test_input-Datendatei verwendet werden sollen. Nach dem Start des CRC-16-Bit-Prozesses werden alle Signaturen gesammelt und in einer externen Datenbankdatei test_output gespeichert.

Wie es funktioniert:

Nach dem Öffnen der Datei „ConsoleApp1.sln“ mit Microsoft Visual Studio muss der Benutzer zunächst die Datei „Program.cs“ auf der linken Seite auswählen und die roten Linien aus dem folgenden Code mit ihrem Stammverzeichnis für die Eingabe ändern und Excel-Dateien ausgeben.

using System;
using System.Collections;
using System.Collections.Generic;
using System.Text;
using Microsoft.Office.Interop.Excel;
using _Excel = Microsoft.Office.Interop.Excel;

namespace ConsoleApp1
{
class Program
{
static string mypath = „“;
static _Application excel = new _Excel.Application();
static Workbook wb;
static Worksheet ws;

static void Main(string[] args)
{
Excel(„C:\\Users\\SorinLiviu\\Desktop\\CRC16_Calculator\\ConsoleApp1\\test.xlsx„, 1);
int i = 1;
string mystring = „“;
int intValue;
string hexValue;
byte[] bytes;

Console.WriteLine(„CRC 16-bit Signatures are Generated. Please wait a few seconds… „);
while (ws.Cells[i, 1].Value2 != null)
{
mystring = ((int)(ws.Cells[i, 1].Value2)).ToString() + ‚.‘ + ((int)(ws.Cells[i, 2].Value2)).ToString() + ‚.‘ + ((int)(ws.Cells[i, 3].Value2)).ToString() + ‚.‘ + ((int)(ws.Cells[i, 4].Value2)).ToString();
bytes = Encoding.ASCII.GetBytes(mystring);
// Console.WriteLine(mystring);
intValue = crc16(bytes, mystring.Length);
hexValue = „0X“ + intValue.ToString(„X“);
ws.Cells[i, 5] = hexValue;
//Console.Read();
i++;
}

object misValue = System.Reflection.Missing.Value;
wb.SaveAs(„C:\\Users\\SorinLiviu\\Desktop\\CRC16_Calculator\\ConsoleApp1\\test_output.xlsx„);
wb.Close(true, misValue, misValue);
excel.Quit();

// Call the garbage collector to collect and wait for finalizers to finish.
GC.Collect();
GC.WaitForPendingFinalizers();

Console.WriteLine(„Done. Check your test_output.xlsx to see the generated signatures in column E.“);
Console.Read();
}

static void Excel(string path, int sheet)
{
mypath = path;
wb = excel.Workbooks.Open(mypath);
ws = wb.Worksheets[sheet];
}

static int crc16(byte[] data_p, int length){
int x;
int crc = 0xFFFF;
int i = 0;
while (length > 0){
length -= 1;
x = (((crc >> 8)&(0x0000ffff)) ^ data_p[i] ) & (0x0000ffff);
x = (x ^ x>>4) & (0x0000ffff) ;
crc = ((crc << 8) ^ ((ushort)(x << 12)) ^ ((ushort)(x <<5)) ^ ((ushort)x)) & (0x0000ffff) ;
i += 1;
}
return crc;
}

}
}

Danach klickt der Benutzer auf Ausführen und wartet, bis die Datei „test_output.xlsx“ erstellt wurde, wie im folgenden Bild dargestellt:

Schließlich kann der Benutzer die erzeugten CRC-16-Bit-Signaturen in Spalte E sehen (in meinem Fall repräsentieren die ersten 4 Spalten die Eingabewerte aus den 4 Ecken eines Solartrackers).

Mein CRC 16-Bit-Rechner kann von hier runtergeladen werden.

Leave a Comment

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahren Sie mehr darüber, wie Ihre Kommentardaten verarbeitet werden .

Scroll Up