如何从c++代码调用Linux C库?Barcode Reader Toolkit常见问题集锦

250 阅读4分钟

Softek条形码阅读器是一个工具包,允许开发人员在其应用程序中添加条形码检测。该工具包将图像文件或内存位图作为输入,并返回有关每个条形码的信息,包括值,类型和位置。

通过Barcode Reader Toolkit这款条码开发工具包(SDK),可使您的应用程序从图像中提取条形码信息。

Barcode Reader Toolkit常见问题解答

Q1:如使用Visual C#从条形码读取二进制数据?

如果您正在处理条形码中的二进制数据,例如您在某些二维条形码(PDF417,QrCode或DataMatrix)中找到的,那么以下方法将允许您创建一个包含条形码中原始二进制数据的字节数组 - 包括所有null和8位值。

  1. 使用引用的可打印编码:barcode.Encoding = 1

    这将使用可打印字符或= XX返回条形码值,其中XX是不可打印字符的十六进制值(例如,对于null,您得到= 00)。默认情况下,数据可能会被处理,就好像它包含utf-8编码数据一样。

  2. 使用以下函数将引用的可打印输出从GetBarString转换为字节数组:
    private byte[] convertQPToByteArray(string qpString)
            {
                // Assess how many bytes required
    
                int c = 0;
    
                for (int i = 0; i < qpString.Length; i++, c++)
                    if (qpString[i] == '=')
                        i += 2;
    
                byte[] binaryData = new byte[c];
    
                int zero = Convert.ToInt16('0');
    
                c = 0;
                for (int i = 0; i < qpString.Length; i++, c++)
                {
                    if (qpString[i] == '=')
                    {
                        binaryData[c] = (byte) int.Parse(qpString.Substring(i + 1, 2), System.Globalization.NumberStyles.HexNumber);
                        i += 2;
                    }
                    else
                    {
                        binaryData[c] = Convert.ToByte(qpString[i]);
                    }
                 }
    
                return binaryData;
            }

Q2:如何从c++代码调用Linux C库?

这里有一个快速的例子,说明如何创建和构建一个简单的c++程序,调用基本的Bardecode C库函数…(假设您已经下载了我们的SDK的Linux版本,并且正在安装文件夹中工作。)

代码如下所示:

#include

using namespace std;

extern “C” {
#include “include/barcode.h”
}

int main()
{
void *hBarcode = STCreateBarCodeSession();

char **bartype ;
char **barvalue ;
int n = STReadBarCode(hBarcode, (char *) “images/code39_01.tif”, (char *) “tif”, &barvalue, &bartype);

cout << "Return value = " ; cout << n ; cout << "\n"; if (n > 0)
{
cout << "First barcode value is "; cout << barvalue[0]; cout << "\n"; } return 0 ; } The build (you will have to get the path right for the various libraries - we built this on Ubuntu x64): g++ -o yourcode yourcode.cpp lib/bardecode.a /usr/lib/x86_64-linux-gnu/libtiff.so.5 /usr/lib/x86_64-linux-gnu/libjpeg.so.8 /usr/lib/x86_64-linux-gnu/libpthread.so

Q3:如何在传真上使用条形码?

如果将传真直接接收到服务器上,则发送传真机将成为远程扫描仪,如果将其与条形码的功能相结合,则可以将图像直接存储到数据库中,这非常简洁。

大多数传真机通过将纸张传送到一排传感器下来扫描文档。遗憾的是,传真机的一个常见故障是一个或多个故障传感器。您可以在传真上发现故障传感器,因为它会在每页的同一位置留下贯穿整个传真的白色垂直线。如果这条线碰巧将条形码中的一条条切成两半,那么您可能会遇到问题,因为您已经有效地编辑了条形码。如果发生这种情况3或4次,那么您可能无法阅读它。

解决方案是垂直对齐所有传真条形码。这样一个故障的传感器对您的条形码几乎没有影响。

Q4:在计算机之间移动BardecodeFiler Desktop?

可以使用以下步骤在系统之间移动BardecodeFiler Desktop:

  1. 确定源计算机上BardecodeFiler的版本号。如果单击“选项”,则版本号将显示在左下角。
  2. 转到选项/导入和导出,并将配置保存到“.ini”文件。
  3. 将此文件复制到目标计算机。
  4. 转到http://www.bardecode.com/en1/bardecodefiler-versions/,下载并安装源系统上使用的相同版本
  5. 在目标系统上启动BardecodeFiler,然后转到Options / Import&Export并从步骤2导入“.ini”文件。
  6. 输入许可证密钥(在选项/许可证密钥中),然后在选项/文件夹/位置中手动更改输入,输出和其他文件夹文件夹。

如果在使用Barcode Reader Toolkit中遇到任何问题可在评论区留言哦~