开启左侧

set_front和write_message报错

[复制链接]
liangxiong 发表于 2019-2-20 20:46:11 | 显示全部楼层 |阅读模式
22.PNG 33.PNG
set_font (WindowHandle, '-*-' + FontNameUnix + '-*-' + FontSizes[Size] + '-*-*-*-*-*-iso8859-1'),报Wrong front name
write_message (WindowHandle, 10, 10, 'Image '+Index+': Pattern to be tested was found ambiguously', false),报如上左图错误
绝地武士 发表于 2019-2-21 11:42:04 | 显示全部楼层
建议楼主用query_font (WindowHandle, Font) 先查询下字体,然后在根据字体构造下去设置。
你这样发出来我也不知道你那几个变量值对不对,每个人电脑字体都不一样的。
 楼主| liangxiong 发表于 2019-2-21 20:35:50 | 显示全部楼层
write_message这个函数一直报错,这样设置变量有问题吗?
write_message (WindowHandle, 950, 10, 'Press \'Run\' to continue', 0)
Criss 发表于 2019-2-21 22:33:42 | 显示全部楼层
首先,write_message这个算子我在12版本中没有发现,用了18.11 Steady中可以,这个算子的意思是把一个消息写入文件中,定义如下:
  1. write_message( : : MessageHandle, FileName, GenParamName, GenParamValue : )
复制代码
楼主的代码如下:
  1. write_message (WindowHandle, 10, 10, 'Image '+Index+': Pattern to be tested was found ambiguously', false)
复制代码
算子参数个数都对应不上,第一个是消息句柄,变成了窗口句柄!第二个是文件路径名称,变成了10,10这样的参数!第三、四个是参数名称和参数值,设置了一个字符串和false值,参数个数不匹配为最明显错误,后面的错误就是句柄错误或者参数设置错误了(虽然还没有轮到提示)。

再来看看set_font错误
  1. set_font (WindowHandle, '-*-' + FontNameUnix + '-*-' + FontSizes[Size] + '-*-*-*-*-*-iso8859-1'),报Wrong front name
复制代码
楼主没有说明halcon版本,从代码初步推测write_message低版本没有,那么我当是18.11好了,那么看看定义是什么?
  1. set_font( : : WindowHandle, Font : )
复制代码
第一个是窗口句柄,不是消息句柄,第二个是输入控制类型参数字体,既然要设置我们可以要先查有没有这些类型,需要用的算子为:
  1. WindowHandle:=0
  2. dev_get_window (WindowHandle)
  3. query_font (WindowHandle, Font)
复制代码
查到了我电脑上有280个字体:
QQ截图20190221222022.png
那么set_font中Font格式应该是怎样,我们查到set_font中的一句话:
  1. The syntax for the specification of Font is the following:

  2. FONTNAME[-STYLE]-FONT_SIZE.
复制代码
英语不好的可以翻译,大概意思就是字体指定的符号可以是下面这样指定:字体名称[-样式-]-字体大小!其他我们都知道,样式是怎样的呢?
  1. The optional STYLE may be one of the following (other values are possible as well): 样式选项可以是下面任意一个值
  2. Normal,Bold,BoldItalic, or Italic. 普通、粗体、粗斜体或斜体
复制代码

“'default-Normal-12'”是我通过get_font查询到我当前系统用的字体和大小,是默认的普通12号字体!我找个熟悉的字体,发现73号是黑体,试试看:
QQ截图20190221222903.png
先读取一幅图像,至于为什么,不多说了,看代码:
  1. read_image (Image, 'printer_chip/printer_chip_01')
  2. set_font (WindowHandle, Font[73]+'-Bold-50')
  3. disp_message (WindowHandle, '20号加粗黑体字体设置', 'window', 12, 12, 'green', 'true')
复制代码
效果如下:
QQ截图20190221223047.png
再看看楼主设置的字体,楼主这是早期版本获取的格式吧?有没有查验过是不是这样的格式?你的代码已经提示你错误的字体了,你可以尝试读取出字体再进行设置!
希望能够帮到你,就写了很多详细的解释,希望楼主能够看懂,解决了给我一个赞,打字教学不容易!






阿友 发表于 2022-2-11 09:16:45 | 显示全部楼层
Criss 发表于 2019-2-21 22:33
首先,write_message这个算子我在12版本中没有发现,用了18.11 Steady中可以,这个算子的意思是把一个消息 ...

write_message的参数不一样 应该是halcon版本问题,估计楼主在试跑《机器视觉算法与应用》这本书的例程出现的错误
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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