12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- using System;
- using System.Collections.Generic;
- using System.Text;
- namespace FastReport.Barcode
- {
- /// <summary>
- /// Generates the MSI barcode.
- /// </summary>
- public class BarcodeMSI : LinearBarcodeBase
- {
- private static string[] tabelle_MSI = {
- "51515151", //0
- "51515160", //1
- "51516051", //2
- "51516060", //3
- "51605151", //4
- "51605160", //5
- "51606051", //6
- "51606060", //7
- "60515151", //8
- "60515160" //9
- };
- private int quersumme(int x)
- {
- int sum = 0;
- while (x > 0)
- {
- sum += x % 10;
- x /= 10;
- }
- return sum;
- }
- internal override string GetPattern()
- {
- string result = "60"; // Startcode
- int check_even = 0;
- int check_odd = 0;
- for (int i = 0; i < text.Length; i++)
- {
- if ((i % 2) != 0)
- check_odd = check_odd * 10 + CharToInt(text[i]);
- else
- check_even += CharToInt(text[i]);
- result += tabelle_MSI[CharToInt(text[i])];
- }
- int checksum = quersumme(check_odd * 2) + check_even;
- checksum %= 10;
- if (checksum > 0)
- checksum = 10 - checksum;
- if (CalcCheckSum)
- result += tabelle_MSI[checksum];
- result += "515"; //Stopcode
- return result;
- }
- }
- }
|