热点推荐

查看: 230|回复: 2
收起左侧

[已解决] halcon18.05 htuple string转换乱码问题

[复制链接]

该用户从未签到

1

主题

5

帖子

43

积分

Rank: 1

积分
43

优质会员

发表于 2018-6-12 14:59:19 | 显示全部楼层 |阅读模式

51Halcon诚邀您的加入,专注于机器视觉开发与应用技术,我们一直都在努力!

您需要 登录 才可以下载或查看,没有帐号?会员注册

x
在VC++中,采用sprintf(szBuffer,"%s",DecodedDataStrings[0].S()); 这样的方法打印字符串(内容全部是数字),出现乱码,该如何解决,有朋友知道的么?

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题加上【已解决】

如何回报帮助你解决问题的坛友,可以以【悬赏】的方式提问,伸手党遭人唾弃,做一个热心并受欢迎的人!

  • TA的每日心情
    无聊
    昨天 09:15
  • 签到天数: 342 天

    连续签到: 34 天

    [LV.8]以坛为家I

    336

    主题

    1141

    帖子

    4539

    积分

    Rank: 9

    积分
    4539

    突出贡献优秀版主荣誉管理论坛元老优质会员最佳新人

    发表于 2018-6-12 16:12:44 | 显示全部楼层
    我刚刚测试了一下这个代码,结果是没有值的。不过经过系统分析,我找到了根本原因!VC++代码如下:
    1. HObject  ho_Image, ho_SymbolXLDs;
    2. HTuple  hv_DataCodeHandle, hv_ResultHandles, hv_DecodedDataStrings;

    3. ReadImage(&ho_Image, "1.png");
    4. CreateDataCode2dModel("QR Code", HTuple(), HTuple(), &hv_DataCodeHandle);
    5. FindDataCode2d(ho_Image, &ho_SymbolXLDs, hv_DataCodeHandle, HTuple(), HTuple(),&hv_ResultHandles, &hv_DecodedDataStrings);
    复制代码
    1.png
    这里我测试生成的QR码,内容为:1234567890,经过楼主的方法DecodedDataStrings[0].S()并没有效果,于是分析如下:
    HTuple中对字符串进行了改写,和以前的版本有些不一样了,所以可以看到.S()方法返回的数据是HString类型,声明如下:
    1.   HString S() const     { return (*this)[0].S(); }
    复制代码
    那么这个HString应该是Halcon内部的字符串类,那么肯定可以转我们标准C++类型的方法,继续查找找到下面方法:
    1. // Pointer to string data
    2.   const char* Text() const;
    复制代码
    哈哈,结果出来了,很简单就是这个方法了!赶紧修改原来的代码测试下:
    1. char* pChText = new char[255];
    2. memset(pChText, 0x00, 255);

    3. HString str = hv_DecodedDataStrings.S();
    4. sprintf_s(pChText, 255, "%s", str.Text());
    复制代码

    直接写也是可以的
    1. sprintf_s(pChText, 255, "%s", hv_DecodedDataStrings.S().Text());
    复制代码


    2.png
    这回就可以成功进行赋值了!!!

    提示:sprintf这个函数不是打印函数,是格式化字符串的函数,打印的是printf!


    无效附件更新 权限提升操作 删帖申请 举报以及其他需要帮助请加入QQ群:214663141 广告位招商 有意者联系

    该用户从未签到

    1

    主题

    5

    帖子

    43

    积分

    Rank: 1

    积分
    43

    优质会员

     楼主| 发表于 2018-6-13 16:20:09 | 显示全部楼层
    原来如此,果然搞定了,多谢多谢:handshake

    发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

    如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题加上【已解决】

    如何回报帮助你解决问题的坛友,可以以【悬赏】的方式提问,伸手党遭人唾弃,做一个热心并受欢迎的人!

    您需要登录后才可以回帖 会员登录 | 会员注册

    本版积分规则

    经营性网站备案信息 经营性网站
    备案信息

    中国互联网举报中心 中国互联网
    举报中心

    中国文明网传播文明 中国文明网
    传播文明

    诚信网站

    深圳市市场监督管理局企业主体身份公示 工商网监
    电子标识

    快速回复 返回顶部 返回列表