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
时间: 2024-12-21 02:46:23