PDF417程序详细设计文档.docVIP

  1. 1、本文档共3页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
PDF417程序详细设计文档 程序逻辑模型: PDF417程序为面向对象程序,单文档界面,主要包括三个类: CbmpObject: 完成对程序入口数据BMP文件进行包装处理,判断文件格式,读出点阵数据等工作; CstdDataObject: 程序的核心类,完成对点阵数据中条码的搜索,格式判断,数据译码等工作; CdisplayDataView: 对最终数据输出显示。 三个类的实现见图1: (图1) 类成员说明: 对于类CbmpObject: 成员数据: dImageWidth,dImageHeight //图像在像素单位上的确宽度,高度 dBitCounts; //每像素所占位数 lpFileBuffer; //文件头指针 lpBmpData; //位图文件中数据区域指针 lpColorData; //位图文件中颜色表指针 dBytesPerLine; //每一行图形所占用的字节数 bi; //文件信息头指针 成员函数: BOOL IsBlack(UINT x,UINT y); //判断点(x,y)是否为条颜色BLACK BYTE GetPointValue(UINT x,UINT y); //得到一点的数据 void BmpDataReverse(); //把BMP图像数据反转 注:BMP在存储数据时,以第n,n-1,n-2,···,2,1行的顺序存放(行从左上角数起),在转换成标准数据矩阵时,需要以1,2,3,···,n-2,n-1,n的顺序存放,所 BOOL ReadBmpFile(CString BmpFileName); //从文件BmpFileName中读出数据 对于类CStdDataObject: 成员数据: Height,Width //最终阅读出的条码的行数,列数 DBytesPerLine //图行点阵数据中每行包括的字节数 PEndData //最终解码产生的数据 p417Data //PDF417条码数据 BarDataList //PDF417条码模块数据列表 pArrayMemory //点阵内存区域 dImageHeight //图像高度 dImageWidth //图像宽度 成员函数: BOOL IsValidData(UCHAR* pStr,UINT len,int CurrentRow); //判断一串数据是否符合条码格式 BOOL IsBarHeader(Region* pReg); //判断一区域是否为条码起始符; BOOL IsBarTail(Region* pReg); //判断一区域是否为条码结束符; BOOL IsMatch(Region reg1,Region reg2); //判断两个区域是否分别属于一个条码的起始和结束符; UINT GetLineDataA(UINT xa, UINT ya, UINT xb, UINT yb, UPOINT* PointArray) //遍历由(xa,ya)到(xb,yb)的直线,并把此直线上所有的点坐标存入PointArray中,返回点的个数; UINT GetLineDataB(UINT xa, UINT ya, UINT xb, UINT yb, UCHAR* BWArray); //遍历由(xa,ya)到(xb,yb)的直线,得到此直线上所有的点数据,并化成位信息存入BWArray中 BOOL IsRect(Region r); //判断一区域是否为矩形 BOOL Act(); //对条码像素点阵进行处理 void EmptyRegionInXY(UINT x, UINT y, Region* pRegion); //用递归算法实现穷尽一个区域((x,y)为此区域内的任一点),并得到此区域的上下左右各点的坐标存入Region中; void FindAllCell(Cell* pCell,CListstruct _Region,struct _Region RegionList); //在条码像素点阵数据中查找所有匹配pCell的区域,并存入类的RegionList中 void Whitten(UINT x, UINT y); //转换像素点为白色 BOOL StdIsBlack(UINT x, UINT y); //判断像素点是否为黑色 void GetStdData(CBmpObject* pObj); //从图形对象pObj中得到数据,并存入对象的pArrayMemory中 void NumberModeTrans(

文档评论(0)

16588ww + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档