一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种工业视觉软件中嵌入屏幕间的数据传输方法及系统与流程

2022-04-06 21:35:23 来源:中国专利 TAG:


1.本技术涉及工业视觉技术领域,尤其涉及一种工业视觉软件中嵌入屏幕间的数据传输方法及系统。


背景技术:

2.工业视觉软件中,通常使用对象类别扩充组件(ocx:object linking and embedding control extension)的方式对屏幕进行封装,然后再将封装后的对象类别扩充组件(ocx)嵌入到用户软件中使用。
3.如图1所示,现有技术中,工业视觉行业可视化建模软件(visionassembly)与对象类别扩充组件(ocx)之间的数据传输方式为即时传输,即工业视觉行业可视化建模软件(visionassembly)中每进行一次操作改变,都会触发一次消息发送,再通过对象类别扩充组件(ocx)接收消息并处理。如图2所示,工业视觉行业可视化建模软件(visionassembly)在一次执行周期,即完成对输入图像运行状态的监控过程中,均会将刷新后的数据以消息的形式发送至对象类别扩充组件(ocx),图2中的箭头均为工业视觉行业可视化建模软件(visionassembly)产生的消息。
4.然而实际应用中,工业视觉行业可视化建模软件(visionassembly)的一次执行周期可能会产生若干次数据刷新,若干次刷新后的数据均需要以消息形式发送至对象类别扩充组件(ocx)中进行处理。工业视觉行业可视化建模软件(visionassembly)发送的消息数量可能多达上千条,对象类别扩充组件(ocx)运行一次就需要处理上千条消息。由于对象类别扩充组件(ocx)运行一次需要处理的消息数量过多,从而导致用户软件界面的刷新卡顿,并且,每次数据变化均触发消息发送会导致资源消耗过多。


技术实现要素:

5.本技术提供了一种工业视觉软件中嵌入屏幕间的数据传输方法及系统,以解决现有技术中存在的由于对象类别扩充组件(ocx)运行一次需要处理的消息数量过多,从而导致用户软件界面的刷新卡顿,并且,每次数据变化均触发消息发送会导致资源消耗过多的问题。
6.第一方面,本技术提供一种工业视觉软件中嵌入屏幕间的数据传输方法,应用于工业视觉行业可视化建模软件端,所述数据传输方法包括:
7.获取数据信息;
8.将所述数据信息发送至共享内存;
9.向包含所述数据信息的共享内存中写入指令信息,所述共享内存包括数据区和命令区,所述数据区用于存储所述数据信息,所述命令区用于存储所述指令信息。
10.上述技术方案中,工业视觉行业可视化建模软件的一次执行周期中的所有操作数据只需要向共享内存传输一次数据,传输速度更快,资源消耗较小。
11.在本技术的较佳实施例中,获取数据信息,包括:
12.通过视图组件获取原始图像图形数据;
13.通过图形序列化组件对所述原始图像图形数据进行序列化,得到字符串。
14.在本技术的较佳实施例中,所述数据信息通过内存通讯组件发送至共享内存的数据区中进行存储。
15.在本技术的较佳实施例中,所述指令信息通过执行引擎组件写入共享内存的命令区中进行存储。
16.在本技术的较佳实施例中,共享内存的数据区包括第一共享内存块和第二共享内存块;
17.所述第一共享内存块和所述第二共享内存块相互独立设置,所述第一共享内存块用于存储原始图像图形数据,所述第二共享内存块用于存储字符串。
18.第二方面,本技术提供一种工业视觉软件中嵌入屏幕间的数据传输方法,应用于对象类别扩充组件端,所述数据传输方法包括:
19.按照预设周期读取共享内存中的指令信息,所述指令信息包括有效触发指令和无效触发指令;
20.读取到所述有效触发指令时,所述对象类别扩充组件读取共享内存中的数据信息;
21.将所述数据信息显示到屏幕区域;
22.其中,所述共享内存包括数据区和命令区,所述数据区用于存储所述数据信息,所述命令区用于存储所述指令信息。
23.在本技术的较佳实施例中,读取到所述有效触发指令时,所述对象类别扩充组件读取共享内存中的数据信息,包括:
24.通过内存通讯组件读取所述数据区中的数据信息,所述数据信息包括原始图像图形数据和字符串;
25.通过图形反序列化组件将所述字符串反序列为原始图像图形数据。
26.第三方面,本技术提供一种工业视觉软件中嵌入屏幕间的数据传输系统,包括:工业视觉行业可视化建模软件、共享内存和对象类别扩充组件;
27.所述工业视觉行业可视化建模软件与所述共享内存通信连接,所述共享内存与所述对象类别扩充组件组件通信连接;
28.所述工业视觉行业可视化建模软件用于向所述共享内存写入数据信息和指令信息;
29.所述共享内存用于接收并存储所述数据信息和指令信息,所述共享内存包括数据区和命令区,所述数据区用于存储所述数据信息,所述命令区用于存储所述指令信息;
30.所述对象类别扩充组件用于从所述共享内存中读取所述数据信息和指令信息。
31.在本技术的较佳实施例中,所述工业视觉行业可视化建模软件包括:
32.通信连接的执行引擎组件、视图组件、图形序列化组件和内存通讯组件;
33.其中,所述执行引擎组件用于向所述共享内存写入指令信息;
34.所述视图组件用于获取原始图像图形数据;
35.所述图形序列化组件用于将所述原始图像图形数据进行序列化,得到字符串;
36.所述内存通讯组件用于将所述原始图像图形数据和所述字符串写入所述共享内
存。
37.在本技术的较佳实施例中,所述对象类别扩充组件包括:
38.通信连接的内存通讯组件、图形反序列化组件和屏幕嵌入显示组件;
39.其中,所述内存通讯组件用于读取所述共享内存中的数据信息和指令信息,所述数据信息包括原始图像图形信息和字符串;
40.所述图形反序列化组件用于将所述字符串反序列化为原始图像图形数据;
41.所述屏幕嵌入显示组件用于将所述原始图像图形数据显示到屏幕区域。
42.第四方面,本技术提供一种终端设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现一种工业视觉软件中嵌入屏幕间的数据传输方法的步骤。
43.第五方面,本技术提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现一种工业视觉软件中嵌入屏幕间的数据传输方法的步骤。
44.本技术提供的一种工业视觉软件中嵌入屏幕间的数据传输方法及系统,相较于现有技术而言,具有以下有益效果:
45.(1)本技术通过共享内存的方式传输工业视觉行业可视化建模软件和对象类别扩充组件之间的图像图形数据,工业视觉行业可视化建模软件的一次执行周期中的所有操作数据只需要向共享内存传输一次数据,传输速度更快,资源消耗较小。
46.(2)本技术中不需要将工业视觉行业可视化建模软件一次执行周期内的每一次操作数据均使用消息当做进程间通信传输至对象类别扩充组件,减少了对象类别扩充组件一次运行需要接收处理的消息数量,可以减少用户软件窗口的刷新压力,使得用户软件窗口的操作更流畅,不会出现卡顿现象。
47.(3)本技术通过对象类别扩充组件定时读取共享内存的数据区和命令区,当读取到命令区为有效触发指令时,可以直接从数据区读取字符串并将其反序列化为原始图像图形数据进行显示,避免了屏幕嵌入和业务逻辑的耦合,传输速度更快。
附图说明
48.为了更清楚地说明本技术的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
49.图1是现有技术中工业视觉行业可视化建模软件和对象类别扩充组件之间数据传输的结构示意图;
50.图2是现有技术中工业视觉行业可视化建模软件和对象类别扩充组件之间数据传输的软件界面示意图;
51.图3是本技术实施例1的一种工业视觉软件中嵌入屏幕间的数据传输方法流程图;
52.图4是本技术实施例1中获取数据信息的流程图;
53.图5是本技术实施例2的一种工业视觉软件中嵌入屏幕间的数据传输方法流程图;
54.图6是本技术实施例2中读取数据信息的流程图;
55.图7a是本技术实施例3的一种工业视觉软件中嵌入屏幕间的数据传输系统示意框
图;
56.图7b是本技术实施例3的一种数据传输的软件界面示意图;
57.图8是本技术实施例3中工业视觉行业可视化建模软件的结构示意框图;
58.图9是本技术实施例3中对象类别扩充组件的结构示意框图;
59.图10是本技术应用例的一张含有一条直线,且图像分辨率为640*480的输入图像示意图;
60.图11是本技术应用例中共享内存的数据区示意图。
具体实施方式
61.为使本技术的目的、实施方式和优点更加清楚,下面将结合本技术示例性实施例中的附图,对本技术示例性实施方式进行清楚、完整地描述,显然,所描述的示例性实施例仅是本技术一部分实施例,而不是全部的实施例。
62.因此,以下对在附图中提供的本技术的实施例的详细描述并非旨在限制要求保护的本技术的范围,而是仅仅表示本技术的选定实施例。基于本技术中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
63.基于本技术描述的示例性实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本技术所附权利要求保护的范围。此外,虽然本技术中公开内容按照示范性一个或几个实例来介绍,但应理解,可以就这些公开内容的各个方面也可以单独构成一个完整实施方式。
64.需要说明的是,本技术中对于术语的简要说明,仅是为了方便理解接下来描述的实施方式,而不是意图限定本技术的实施方式。除非另有说明,这些术语应当按照其普通和通常的含义理解。
65.为便于对申请的技术方案进行,以下首先在对本技术所涉及到的一些概念进行说明。
66.屏幕嵌入:用于将生产界面的图像区域投影到设备软件上。
67.在本技术中,诸如“第一”和“第二”等术语仅仅是用来将一个实体或者操作与另一个实体或者操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或顺序。另外,术语“包括”、“包含”、“用于”或者任何其他变体意在涵盖非排他性的包含,从而使得其不仅包括明确列出的要素,还包括没有明确列出的其他要素。
68.图1中的发送消息1、消息2和消息n是指工业视觉行业可视化建模软件(visionassembly)运行一个执行周期每次刷新的操作数据,现有技术中,对象类别扩充组件(ocx)需要一次接收并处理n条消息,n为正整数,且实际应用中,n较大。
69.图2是现有技术中的一种具体数据传输的软件界面示意图,图2中的工业视觉行业可视化建模软件(visionassembly)对输入图像的一次执行周期包括图2中的多个找线工具、找圆工具、图像文件夹和几何定位等,并将一次执行周期内每一次操作刷新的数据信息以消息(图2中的箭头表示多个消息及其写入的方向)作为中间通信进程的形式写入对象类别扩充组件(ocx)中,对象类别扩充组件(ocx)一次需要接收处理较多条消息,容易造成窗口刷新卡顿,图2中的消息数量较少,仅做示例说明。
70.实施例1
71.如图3所示,本实施例1提供了一种工业视觉软件中嵌入屏幕间的数据传输方法,应用于工业视觉行业可视化建模软件端,所述数据传输方法包括:
72.s101,获取数据信息,其中,所述数据信息包括原始图像图形数据和字符串,所述字符串通过对所述原始图像图形数据进行序列化之后得到;
73.s102,将所述数据信息发送至共享内存;
74.s103,向包含所述数据信息的共享内存中写入指令信息,所述共享内存包括数据区和命令区,所述数据区用于存储所述数据信息,所述命令区用于存储所述指令信息。
75.进一步地,在本实施例1的一种具体实施方式中,如图4所示,步骤s101包括:
76.s1010,通过视图组件(gcimageviewctrl)获取所述原始图像图形数据;
77.s1011,通过图形序列化组件(gcembeddedinfotransformer)对所述原始图像图形数据进行序列化,得到字符串。
78.更进一步地,在本实施例1的一种具体实施方式中,步骤s101和步骤s102中的所述数据信息通过内存通讯组件(gcembeddeddisplaycomm)发送至所述共享内存的数据区中进行存储。
79.更进一步地,在本实施例1的一种具体实施方式中,步骤s103中的所述指令信息通过执行引擎组件(gcengine)写入所述共享内存的命令区中进行存储。
80.需要说明的是,在本实施例1中,所述共享内存的数据区包括第一共享内存块和第二共享内存块,所述第一共享内存块用于存储所述原始图像图形数据,所述第二共享内存块用于存储所述字符串,且所述第一共享内存块和所述第二共享内存块的存储区域相互独立,互不干扰。另外,所述指令信息包括有效触发指令和无效触发指令,有效触发指令标识为1,无效触发指令标识为0。
81.采用本实施例1的数据传输方法将数据信息和指令信息写入共享内存的过程如下:
82.工业视觉行业可视化建模软件(visionassembly)每运行一个执行周期,即完成对输入图像运行状态的监控过程后,首先,通过执行引擎组件(gcengine)中的回调函数从视图组件(gcimageviewctrl)中抽取原始图像图形数据,再将原始图像图形数据通过内存通讯组件(gcembeddeddisplaycomm)写入共享内存中。另外,采用图形序列化组件(gcembeddedinfotransformer)将原始图像图形数据序列化为字符串,通过内存通讯组件(gcembeddeddisplaycomm)写入共享内存。最后,当工业视觉行业可视化建模软件(visionassembly)完成向共享内存的数据区中写入数据信息(原始图像图形数据和字符串)之后,通过执行引擎组件(gcengine)向共享内存的命令区写入指令信息,完成工业视觉行业可视化建模软件(visionassembly)向共享内存的数据传输。
83.实施例2
84.如图5所示,本实施例2提供了一种工业视觉软件中嵌入屏幕间的数据传输方法,应用于对象类别扩充组件端,所述数据传输方法包括:
85.s201,按照预设周期读取共享内存中的指令信息,所述指令信息包括有效触发指令和无效触发指令;
86.s202,读取到所述有效触发指令时,所述对象类别扩充组件读取共享内存中的数
据信息,所述共享内存包括数据区和命令区,所述数据区用于存储所述数据信息,所述命令区用于存储所述指令信息;
87.s203,将所述数据信息显示到屏幕区域。
88.进一步地,在本实施例2的一种具体实施方式中,步骤s201中的所述预设周期通过软件定时器进行设置,即在软件程序中设置定时器周期。具体地,在本实施例2中,定时器周期在软件程序中设置为100ms,即每间隔100ms,对象类别扩充组件对共享内存的命令区进行一次读取,当读取到所述命令区有有效触发指令时,对象类别扩充组件对共享内存的数据区进行读取,获取数据信息并将其显示到屏幕区域上。需要特别说明的是,本实施例2的定时器周期仅为对象类别扩充组件读取共享内存的一种间隔数值,仅做实例说明,并不能构成对本技术技术方案的限制。
89.进一步地,在本实施例2的一种具体实施方式中,如图6所示,步骤s202包括:
90.s2020,通过内存通讯组件(gcembeddeddisplaycomm)读取所述共享内存数据区的数据信息,所述数据信息包括原始图像图形数据和字符串;
91.s2021,通过图形反序列化组件(gcembeddedinfotransformer)将所述字符串反序列为原始图像图形数据。
92.更进一步地,在本实施例2的一种具体实施方式中,步骤s203中通过屏幕嵌入显示组件(gcscreendisplay)将所述数据信息显示到屏幕区域。
93.采用本实施例2的数据传输方法从共享内存中调取数据信息和指令信息的过程如下:
94.对象类别扩充组件(ocx)按照定时器周期通过内存通讯组件(gcembeddeddisplaycomm)定时读取所述共享内存的命令区的指令信息。当所述指令信息为1时,即为有效触发指令。此时,通过通过内存通讯组件(gcembeddeddisplaycomm)读取所述共享内存的数据区的数据信息,包括原始图像图形数据和字符串。另外,通过图形反序列化组件(gcembeddedinfotransformer)将所述字符串反序列为原始图像图形数据。最后,对象类别扩充组件(ocx)通过屏幕嵌入显示组件(gcscreendisplay)将所述原始图像图形数据显示到屏幕区域,完成共享内存到对象类别扩充组件(ocx)的数据传输。当所述指令信息为0时,即为无效触发指令,此时,对象类别扩充组件(ocx)不读取共享内存的数据信息。
95.实施例3
96.与前述一种工业视觉软件中嵌入屏幕间的数据传输方法的实施例1和实施例2相对应,本技术还提供了一种工业视觉软件中嵌入屏幕间的数据传输系统的实施例3。如图7a和图7b所示,该数据传输系统包括:工业视觉行业可视化建模软件(visionassembly)、共享内存和对象类别扩充组件(ocx),所述工业视觉行业可视化建模软件(visionassembly)与所述共享内存通信连接,所述共享内存与所述对象类别扩充组件(ocx)组件通信连接;
97.所述工业视觉行业可视化建模软件(visionassembly)用于向所述共享内存写入数据信息和指令信息;
98.所述共享内存用于接收并存储所述数据信息和指令信息,所述共享内存包括数据区和命令区,所述数据区用于存储所述数据信息,所述数据信息包括原始图像图形信息和字符串,所述命令区用于存储所述指令信息,所述指令信息包括有效触发指令和无效触发指令,有效触发指令标识为1,无效触发指令标识为0;
99.所述对象类别扩充组件(ocx)用于从所述共享内存中读取所述数据信息和指令信息,当读取到所述指令信息为有效触发指令时,才可读取共享内存中的数据信息。
100.需要说明的是,图7b是本实施例3的一种具体数据传输的软件界面示意图,图7b中的工业视觉行业可视化建模软件(visionassembly)对输入图像的一次执行周期包括图7b中的多个找线工具、找圆工具、图像文件夹和几何定位等,并将一次执行周期内的数据信息写入共享内存,对象类别扩充组件(ocx)从共享内存中读取数据信息。此外,需要指出的是,图7a和图7b中的写入表示写入数据信息或指令信息,读取表示读取数据信息或指令信息,图7b中的箭头表示数据信息写入和读取的方向。
101.进一步地,在本实施例3的一种具体实施方式中,如图8所示,所述工业视觉行业可视化建模软件(visionassembly)包括:通信连接的执行引擎组件(gcengine)、视图组件(gcimageviewctrl)、图形序列化组件(gcembeddedinfotransformer)和内存通讯组件(gcembeddeddisplaycomm);
102.其中,所述执行引擎组件(gcengine)用于控制工业视觉行业可视化建模软件(visionassembly)运行,并向所述共享内存写入指令信息;
103.所述视图组件(gcimageviewctrl)用于获取所述原始图像图形数据,属于显示图像的组件;
104.所述图形序列化组件(gcembeddedinfotransformer)用于对所述视图组件(gcimageviewctrl)中获取到的所述原始图像图形数据进行序列化,得到字符串;
105.所述内存通讯组件(gcembeddeddisplaycomm)用于将所述视图组件(gcimageviewctrl)中获取到的所述原始图像图形数据和所述图形序列化组件(gcembeddedinfotransformer)中的字符串写入所述共享内存。
106.进一步地,在本实施例1的一种具体实施方式中,如图9所示,所述对象类别扩充组件(ocx)包括:通信连接的内存通讯组件(gcembeddeddisplaycomm)、图形反序列化组件(gcembeddedinfotransformer)和屏幕嵌入显示组件(gcscreendisplay);
107.其中,所述内存通讯组件(gcembeddeddisplaycomm)用于读取所述共享内存中的数据信息和指令信息,所述数据信息包括原始图像图形信息和字符串;
108.所述图形反序列化组件(gcembeddedinfotransformer)用于将所述字符串反序列化为原始图像图形数据;
109.所述屏幕嵌入显示组件(gcscreendisplay)用于将所述原始图像图形数据显示到屏幕区域。
110.本技术提供一种终端设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现本技术实施例1和实施例2中一种工业视觉软件中嵌入屏幕间的数据传输方法的步骤。
111.本技术提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现本技术实施例1和实施例2中一种工业视觉软件中嵌入屏幕间的数据传输方法的步骤。
112.应用例
113.参见图10,为一张含有一条直线,且图像分辨率为640*480的输入图像,采用本技术实施例1和实施例2的数据传输方法和实施例3的数据传输系统对如图10所示的输入图像
进行数据传输的过程如下:
114.在工业视觉行业可视化建模软件(visionassembly)中对如图10所示的输入图像进行状态监控,此时,工业视觉行业可视化建模软件(visionassembly)中需要执行图像文件和找线工具两次操作。
115.其次,通过内存通讯组件(gcembeddeddisplaycomm)将两次操作的数据写入共享内存的数据区。如图11所示,共享内存的数据区包括第一共享内存块和第二共享内存块,第一共享内存块中用于存储原始图像图形数据,第二共享内存块用于存储对原始图像图形数据进行序列化之后的字符串,即图像尺寸和直线序列化数据。如图11所示,第二共享内存块中图像尺寸存储为640,480,1,表示长度为640像素,宽度为480像素的灰度图像,直线序列化数据存储为20,20,15,表示经过参考点坐标为(20,20),且旋转角度为15
°
的直线。
116.最后,当对象类别扩充组件(ocx)读取到指令信息为有效触发指令时,对象类别扩充组件(ocx)从第一共享内存块中读取原始图像图形数据,从第二共享内存块中读取字符串,即原始图像图形数据的序列化数据,包括图像尺寸和直线序列化数据,再将其反序列为原始图像图形数据,并显示到屏幕区域。
117.需要说明的是,本领域人员所公知的,原始图像图形数据中包含不需要进行序列化的部分和需要序列化为字符串进行写入的部分,在读取时,也应该将两者结合输出显示在屏幕区域,本领域技术人员结合本技术的方案描述可以得出本技术的完整技术方案,因此,本技术的描述不会造成方案不清楚。另外,在应用例中,输入图像及其具体参数、第一共享内存块和第二共享内存块的数量均是为了更清楚地说明本技术的技术方案实现的原理及主要过程,本技术的实施例1-3可以适应于多种不同的输入图像,本领域技术人员也可根据实际需求设置第一共享内存块和第二共享内存块的数量及大小,本技术对其不做具体限制。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献