DM二维码识别库DMDECODER的使用--MFC例程

    DM码和QR码是当今比较主流的二维码,其中QR码容量大,容量密度为16kb,DM码容量要小一点,可在仅仅25mm²的面积上编码30个数字,但是DM码的容错率更高,所以实际的工业生产中经常使用DM码作为产品的标签。

    DMDECODER是一款比较好用的DM码解析软件,包含有一个DLL和一个lib,使用这个库也比较容易我们先看组成

    

使用该库第一步是导入库路径和库函数如下

//导入dll
#define DLL_EXPORT __declspec(dllexport)  

extern "C" DLL_EXPORT int _stdcall DataMatrix_decode(const char* filename); 
//    DataMatrix_decode_rt --> 对设备采集的图像进行实时处理
//    imageData   : 指向图像数据区的指针(24位位图)
//    width       : 图像宽度
//    height      : 图像高度
extern "C" DLL_EXPORT int _stdcall DataMatrix_decode_rt(unsigned char* imageData, int width, int height); 
extern "C" DLL_EXPORT int _stdcall DataMatrix_output(unsigned char* message); 

然后解码过程是这样的

char* file = (char*)malloc(sourceFilePath.GetLength()+1);//待解码图片路径
        for(int i = 0; i < sourceFilePath.GetLength();i++)
        {
            file[i] = sourceFilePath.GetAt(i);
        }
        file[sourceFilePath.GetLength()] = 0;
        int length = DataMatrix_decode(file); //解码并返回码字长度(解码失败则返回-1)
        if(length>0)
        {
            unsigned char* message = (unsigned char*)malloc(sizeof(char)*(length+1));
            DataMatrix_output(message);//将解码码字保存到数组中
            message[length] = 0;
            convertString.Empty();
            convertString.AppendFormat("%s",message);
            CString show;
            show.Empty();
            show = convertString.Left(convertString.GetLength()-12);
            ((CEdit*)GetDlgItem(IDC_EDIT_COVERT_RESULT))->SetWindowText(show);
            free(message);
        }    

完整的MFC工程如下

注意结果尾巴上的版权标志tonxong.com去掉哦

工程路径

http://download.csdn.net/detail/dengrengong/8608187

 

posted @ 2015-04-18 21:00  邓小俊  阅读(8482)  评论(1编辑  收藏  举报