Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 用C语言创建Code128条码_C#_Asp.net Core_Barcode_Code128 - Fatal编程技术网

C# 用C语言创建Code128条码

C# 用C语言创建Code128条码,c#,asp.net-core,barcode,code128,C#,Asp.net Core,Barcode,Code128,愚蠢的我,我想,只要写一些带有条形码字体的文本,就会让扫描仪读出来。看来我错了 因此,在阅读了一些关于code128条形码的文档后,我了解到: 条形码以103、104或105开头,具体取决于类型 然后是绳子本身 然后是字符串中每个字符的计算总和乘以其位置的模103 然后附加106 我的代码是: public string Str = "MADS"; public string Barcode = null; public void OnGet() { int start = 104;

愚蠢的我,我想,只要写一些带有条形码字体的文本,就会让扫描仪读出来。看来我错了

因此,在阅读了一些关于code128条形码的文档后,我了解到:

条形码以103、104或105开头,具体取决于类型 然后是绳子本身 然后是字符串中每个字符的计算总和乘以其位置的模103 然后附加106 我的代码是:

public string Str = "MADS";
public string Barcode = null;

public void OnGet()
{

    int start = 104;
    int end = 106;
    int calc = start;
    Barcode = start.ToString();
    for (var i = 0; i < Str.Length; i++)
    {
        calc += (Convert.ToChar(Str[i]) - 32) * (i + 1);
        Barcode += Str[i];
    }

    double rem = calc % 103;
    Barcode += Convert.ToChar((int)rem + 32).ToString() + end;

    Console.WriteLine(Barcode);

}
我不确定条形码字符串中要包含多少内容,以便扫描仪读取它:

MADS, 104MADS, 104MADS,106 还是我完全弄错了

我的推荐信是:

特别是链接1,因为我已经用扫描仪测试了这个结果,它是有效的。 遗憾的是,我不能让我的输出看起来像那样

结论

在阅读了评论和答案后,我认为对我来说最好的方法是使用现有的图书馆

我选择NetBarcode是因为它与.Net Core兼容。

检查此库:

关于Nuget:

它将生成一个包含条形码的图像,条形码作为输入中的文本读取。 用法示例:

BarcodeLib.Barcode b = new BarcodeLib.Barcode();
Image img = b.Encode(BarcodeLib.TYPE.CODE128, "038000356216", Color.Black, Color.White, 290, 120);
检查此库:

关于Nuget:

它将生成一个包含条形码的图像,条形码作为输入中的文本读取。 用法示例:

BarcodeLib.Barcode b = new BarcodeLib.Barcode();
Image img = b.Encode(BarcodeLib.TYPE.CODE128, "038000356216", Color.Black, Color.White, 290, 120);

如果您使用的是条形码字体,则需要在发送到输出的字符串中包含起始字符、数据字符串、校验和和停止字符,以便示例中的最后一个字符是正确的。字体仅查找每个符号,并为您绘制条形图和空格。它对条形码符号和规则本身一无所知

var buttonGen=document.getElementByIdbtnGen; buttonGen.onclick=函数{ var x=document.getElementByIdtextIn.value; 变量i,j,intWeight,intLength,intWtProd=0,arrayData=[],fs; var arraySubst=[Ã,Ä,Æ,È,Ê]; /* *代码128 B的校验和计算 */ intLength=x.length; arrayData[0]=104;//假设代码为128B,将进行修改以支持A、C和切换。 intWtProd=104; 对于j=0;j94{ chrString=arraySubst[chr-95]; }否则{ chrString=String.fromCharCodechr+32; } //更改字体大小样式以匹配下拉列表 fs=document.getElementsByTagname选项[document.getElementByIDSelectedIndex].value; document.getElementByIdtest.style.fontSize=fs+'px'; document.getElementByIdcheck.innerHTML= '校验和='+chr+'或字符'++//使其可见 chrString+',表示文本='+x+'; document.getElementByIdtest.innerHTML= 'Ì'+//开始代码B x+//最初键入的字符串 chrString+//生成的校验和 'Î';//停止代码 } td,th{ 文本对齐:居中; 填充:6px; } .ss{ 字体系列:“自由条码128文本”,草书; 字体大小:24px; } 字体大小: 24px 30px 36px 42px 48px 54px 60像素 66px 72px 78px 84px 90px 96px Ì让网络变得美丽$Î 这是Libre条形码128字体使用的演示

由于Libre条码128字体不生成校验和,因此需要此组件来生成扫描条码

要使用,只需输入要嵌入条形码的文本,然后按生成按钮。快乐条形码

顺便说一下,Libre Barcode 128字体使用以下高ASCII/unicode字符来实现控制代码符号。这实质上是将值增加100,换句话说,‘Ã’是U+00C3 195,‘Î’是U+00CE 206

价值 编码 替补 95A:US,B:DEL,C:95Ã 96A:FNC 3,B:FNC 3,C:96Ä 97A:FNC 2,B:FNC 2,C:97Å 98A:B班,B:A班,C:98Æ 99A:代码C,B:代码C,C:99 100A:代码B,B:FNC 4,C:代码BÈ 101A:FNC 4,B:A代码,C:A代码 102A:FNC 1,B:FNC 1,C:FNC 1Ê 103开始代码AË 104开始代码BÌ 105开始代码CÍ 106停止代码Î
如果您使用的是条形码字体,则需要在发送到输出的字符串中包含起始字符、数据字符串、校验和和停止字符,以便示例中的最后一个字符是正确的。字体仅查找每个符号,并为您绘制条形图和空格。它对条形码符号和规则本身一无所知

var buttonGen=document.getElementByIdbtnGen; buttonGen.onclick=函数{ var x=document.getElementByIdtextIn.value; 变量i、j、整数、整数 h、 intWtProd=0,arrayData=[],fs; var arraySubst=[Ã,Ä,Æ,È,Ê]; /* *代码128 B的校验和计算 */ intLength=x.length; arrayData[0]=104;//假设代码128B,将修改为支持A、C和切换。 intWtProd=104; 对于j=0;j94{ chrString=arraySubst[chr-95]; }否则{ chrString=String.fromCharCodechr+32; } //更改字体大小样式以匹配下拉列表 fs=document.getElementsByTagname选项[document.getElementByIDSelectedIndex].value; document.getElementByIdtest.style.fontSize=fs+'px'; document.getElementByIdcheck.innerHTML= '校验和='+chr+'或字符'++//使其可见 chrString+',表示文本='+x+'; document.getElementByIdtest.innerHTML= 'Ì'+//开始代码B x+//最初键入的字符串 chrString+//生成的校验和 'Î'; // 停止码 } td,th{ 文本对齐:居中; 填充:6px; } .ss{ 字体系列:“自由条码128文本”,草书; 字体大小:24px; } 字体大小: 24px 30px 36px 42px 48px 54px 60像素 66px 72px 78px 84px 90px 96px Ì让网络变得美丽$Î 这是Libre条形码128字体使用的演示

由于Libre条码128字体不生成校验和,因此需要此组件来生成扫描条码

要使用,只需输入要嵌入条形码的文本,然后按生成按钮。快乐条形码

顺便说一下,Libre Barcode 128字体使用以下高ASCII/unicode字符来实现控制代码符号。这实质上是将值增加100,换句话说,‘Ã’是U+00C3 195,‘Î’是U+00CE 206

价值 编码 替补 95A:US,B:DEL,C:95Ã 96A:FNC 3,B:FNC 3,C:96Ä 97A:FNC 2,B:FNC 2,C:97Å 98A:B班,B:A班,C:98Æ 99A:代码C,B:代码C,C:99 100A:代码B,B:FNC 4,C:代码BÈ 101A:FNC 4,B:A代码,C:A代码 102A:FNC 1,B:FNC 1,C:FNC 1Ê 103开始代码AË 104开始代码BÌ 105开始代码CÍ 106停止代码Î
无论如何,谷歌很容易找到这样的库。你能在你的答案中提供除此之外的任何价值吗?用代码128条形码生成的基本用法示例更新了答案。谷歌很容易找到这样的库。你能在回答中提供除此之外的任何值吗?用代码128条形码生成的基本用法示例更新了答案。我编写了一个代码128编码算法,它输出一个黑白条的布尔数组-你缺少编码表。每个字符编码为一组11块白/黑,代表黑/白条的相对厚度。Code128还有一些额外的注意事项,例如切换集。共有3个集合,A/B/C可以更有效地编码不同的字符。集合C用于编码成对的数字,因此,如果条形码包含大量数字,则可以大幅缩短条形码长度。您也不需要文字字符串104等-您可以选择第一个字节为103、104、,105分别表示集合A/B/C的开始。应在编码表中查找该字节,以确定构成编码的条的宽度。例如,char 103=StartA表示使用小写ascii字符集的条形码的开始。这被编码为11010000100,这意味着一个2宽的粗行,后面是一个1宽的间隙,然后是一个1宽的粗行,依此类推。另外,假设您仍然希望自己这样做,而不使用外部库/服务,您可以在输出中使用RLE压缩来保持文件小,而不需要任何外部LIB。您只需在写入条形码数据时使用RLE编码将位图写入磁盘即可。输出一个厚度为1的位图将很难扫描,按乘法因子放大效果很好,但文件大小会很快变大,所以压缩。这都是假设您仍然不能使用其他方法,例如web服务或库。@Charleh感谢您的输入。在阅读了您的评论后,我相信对我来说最好的方法是使用现有的库。没有问题,仅供参考,因为它是用于基于云的ERP系统,并且不允许您与任何编程语言进行互操作。我本可以使用Azure函数,但我喜欢ch
allenge,实现起来很有趣——另外,我想要一个版本,在条形码非常关键的情况下,它并没有任何外部依赖,并且总是100%工作,而不需要外部服务100%可用。我已经编写了一个Code128编码算法,输出一个白/黑条的布尔数组——你们找不到了编码表。每个字符编码为一组11块白/黑,代表黑/白条的相对厚度。Code128还有一些额外的注意事项,例如切换集。共有3个集合,A/B/C可以更有效地编码不同的字符。集合C用于编码成对的数字,因此,如果条形码包含大量数字,则可以大幅缩短条形码长度。您也不需要文字字符串104等-您可以选择第一个字节为103、104、,105分别表示集合A/B/C的开始。应在编码表中查找该字节,以确定构成编码的条的宽度。例如,char 103=StartA表示使用小写ascii字符集的条形码的开始。这被编码为11010000100,这意味着一个2宽的粗行,后面是一个1宽的间隙,然后是一个1宽的粗行,依此类推。另外,假设您仍然希望自己这样做,而不使用外部库/服务,您可以在输出中使用RLE压缩来保持文件小,而不需要任何外部LIB。您只需在写入条形码数据时使用RLE编码将位图写入磁盘即可。输出一个厚度为1的位图将很难扫描,按乘法因子放大效果很好,但文件大小会很快变大,所以压缩。这都是假设您仍然不能使用其他方法,例如web服务或库。@Charleh感谢您的输入。在阅读了您的评论后,我相信对我来说最好的方法是使用现有的库。没有问题,仅供参考,因为它是用于基于云的ERP系统,并且不允许您与任何编程语言进行互操作。我本可以使用Azure功能,但我喜欢挑战,而且实现起来很有趣——另外,我想要一个版本,在条形码非常关键的情况下,它没有任何外部依赖性,并且总是100%工作,而不需要外部服务100%可用。谢谢你,Brian。虽然我最终使用了一个现有的库,但这是原始问题的答案,因此这将是正确的答案。如果每个问题的答案都是使用X库,那么堆栈溢出就不需要存在。由于法律和技术原因,成千上万的程序员无法使用库。谢谢你的支持,谢谢你,布莱恩。虽然我最终使用了一个现有的库,但这是原始问题的答案,因此这将是正确的答案。如果每个问题的答案都是使用X库,那么堆栈溢出就不需要存在。由于法律和技术原因,成千上万的程序员无法使用库。谢谢你的支持。