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);
而後解碼過程是這樣的spa
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工程以下.net
注意結果尾巴上的版權標誌tonxong.com去掉哦指針
工程路徑code
http://download.csdn.net/detail/dengrengong/8608187