Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/68.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
libqrencode生成一些android/ios阅读器无法读取的qr码_C_Embedded_Qr Code - Fatal编程技术网

libqrencode生成一些android/ios阅读器无法读取的qr码

libqrencode生成一些android/ios阅读器无法读取的qr码,c,embedded,qr-code,C,Embedded,Qr Code,我正在开发一个嵌入式应用程序,其中一个设备在LCD屏幕上生成二维码 代码生成部分似乎工作得很好,但我似乎在解码时遇到了一些问题 我通过函数生成二维码 QRcode *qr = QRcode_encodeString8bit("http://some/url/", 0, QR_ECLEVEL_Q); 然后将其转换为可由图像库读取并显示在屏幕上的格式。然而,尽管Android上的“QR Droid”应用程序可以读取并将我发送到URL,但另一个名为“QR条形码扫描器”的应用程序似乎无法识别代码,尽管

我正在开发一个嵌入式应用程序,其中一个设备在LCD屏幕上生成二维码

代码生成部分似乎工作得很好,但我似乎在解码时遇到了一些问题

我通过函数生成二维码

QRcode *qr = QRcode_encodeString8bit("http://some/url/", 0, QR_ECLEVEL_Q);
然后将其转换为可由图像库读取并显示在屏幕上的格式。然而,尽管Android上的“QR Droid”应用程序可以读取并将我发送到URL,但另一个名为“QR条形码扫描器”的应用程序似乎无法识别代码,尽管它似乎可以检测到对齐点。iOS也是如此——有些应用程序读得很好,有些应用程序的行为就像它不是代码一样

这个问题的可能原因是什么?我尝试了不同的纠错级别,但不是这样

提前感谢您的回复

编辑:显然代码是水平翻转的。我改变了我将它转换成16位图像的方式,它成功了。我将写下一段代码片段,以备将来参考,以防其他人遇到同样的问题

QRcode *qr = QRcode_encodeString8bit(string, 0, QR_ECLEVEL_H);
int i, j;
for (i = 0; i < qr->width; i++) {
    for (j = qr->width - 1; j >= 0; j--) { //flipped this
        if (qr->data[(j * qr->width) + i] & 0x1)
            *(qr_img++) = COLOR_16BIT_BLACK;
        else
            *(qr_img++) = COLOR_16BIT_WHITE;
    }
}
QRcode*qr=QRcode\u encodeString8bit(string,0,qr\u ECLEVEL\u H);
int i,j;
对于(i=0;iwidth;i++){
对于(j=qr->width-1;j>=0;j-){//翻转了这个
if(qr->data[(j*qr->width)+i]&0x1)
*(qr_img++)=彩色16位黑色;
其他的
*(qr_img++)=彩色16位白色;
}
}

@smparks我不确定二维码是否已翻转。zxing读起来还行,而且它不允许镜像代码(没有TRY_更努力)

是的,有效二维码的镜像永远无效;旋转是一种很好的方法。我想如果库总是生成无效的二维码,我会感到惊讶。QR Droid也是基于zxing的,所以如果它还特意读取这些无效代码的话,我们会感到惊讶


但其他证据再次表明镜像是问题所在。

@smparks我不确定二维码是否被翻转。zxing读起来还行,而且它不允许镜像代码(没有TRY_更努力)

是的,有效二维码的镜像永远无效;旋转是一种很好的方法。我想如果库总是生成无效的二维码,我会感到惊讶。QR Droid也是基于zxing的,所以如果它还特意读取这些无效代码的话,我们会感到惊讶


但其他证据再次表明镜像是问题所在。

在我的例子中,工作的代码(与输出相同资源的qr代码生成器相比)如下所示

QRcode *qr;
qr = QRcode_encodeString("ABC012345", 0, QR_ECLEVEL_H, QR_MODE_8, 1);

int i_qr, j_qr;
for (i_qr = 0; i_qr < qr->width; i_qr++) {
    for (j_qr = 0; j_qr < qr->width; j_qr++) { 
        if (qr->data[(i_qr * qr->width) + j_qr] & 0x1)
            printf("*");
        else
            printf(" ");
    }
    printf("\n");
}
QRcode*qr;
qr=QRcode\u encodeString(“ABC012345”,0,qr\u ECLEVEL\u H,qr\u MODE\u 8,1);
int i_qr,j_qr;
对于(i_qr=0;i_qrwidth;i_qr++){
对于(j_qr=0;j_qrwidth;j_qr++){
if(qr->data[(i_qr*qr->width)+j_qr]&0x1)
printf(“*”);
其他的
printf(“”);
}
printf(“\n”);
}

在我的例子中,工作的代码(与输出相同资源的qr代码生成器相比)如下所示

QRcode *qr;
qr = QRcode_encodeString("ABC012345", 0, QR_ECLEVEL_H, QR_MODE_8, 1);

int i_qr, j_qr;
for (i_qr = 0; i_qr < qr->width; i_qr++) {
    for (j_qr = 0; j_qr < qr->width; j_qr++) { 
        if (qr->data[(i_qr * qr->width) + j_qr] & 0x1)
            printf("*");
        else
            printf(" ");
    }
    printf("\n");
}
QRcode*qr;
qr=QRcode\u encodeString(“ABC012345”,0,qr\u ECLEVEL\u H,qr\u MODE\u 8,1);
int i_qr,j_qr;
对于(i_qr=0;i_qrwidth;i_qr++){
对于(j_qr=0;j_qrwidth;j_qr++){
if(qr->data[(i_qr*qr->width)+j_qr]&0x1)
printf(“*”);
其他的
printf(“”);
}
printf(“\n”);
}

问题要么是编码器,要么不是(解码器)。你真的必须发布一个二维码示例。我将尝试抓取一张高分辨率的二维码照片-因为它运行在嵌入式系统上,而不是桌面计算机上,我不能简单地制作一个二维码并立即发布。但是来自在线生成器的代码,例如()无论如何都会扫描所有读卡器-所以我想知道的是,他们用来生成代码的参数是什么,或者其他开发人员通常使用的参数是什么。@SeanOwen,这是一张高分辨率的图片:这张图片是镜像的,例如,从它应该的位置翻转过来的。有些读卡器设计用于镜像代码,但通常镜像代码不起作用。@smparks非常感谢!水平翻转是有效的。问题要么是编码器,要么不是(解码器)。你真的必须发布一个二维码示例。我将尝试抓取一张高分辨率的二维码照片-因为它运行在嵌入式系统上,而不是桌面计算机上,我不能简单地制作一个二维码并立即发布。但是来自在线生成器的代码,例如()无论如何都会扫描所有读卡器-所以我想知道的是,他们用来生成代码的参数是什么,或者其他开发人员通常使用的参数是什么。@SeanOwen,这是一张高分辨率的图片:这张图片是镜像的,例如,从它应该的位置翻转过来的。有些读卡器设计用于镜像代码,但通常镜像代码不起作用。@smparks非常感谢!水平翻转起作用了。