CN116663502B - 汽车开发用文本代码与图形代码的转换方法及转换系统 - Google Patents

汽车开发用文本代码与图形代码的转换方法及转换系统 Download PDF

Info

Publication number
CN116663502B
CN116663502B CN202310640840.3A CN202310640840A CN116663502B CN 116663502 B CN116663502 B CN 116663502B CN 202310640840 A CN202310640840 A CN 202310640840A CN 116663502 B CN116663502 B CN 116663502B
Authority
CN
China
Prior art keywords
code
graphic
text
codes
target text
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202310640840.3A
Other languages
English (en)
Other versions
CN116663502A (zh
Inventor
刘矗
谢乐寅
莫莽
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shanghai Tosun Technology Ltd
Original Assignee
Shanghai Tosun Technology Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Shanghai Tosun Technology Ltd filed Critical Shanghai Tosun Technology Ltd
Priority to CN202310640840.3A priority Critical patent/CN116663502B/zh
Priority to CN202311670985.4A priority patent/CN117610500A/zh
Publication of CN116663502A publication Critical patent/CN116663502A/zh
Application granted granted Critical
Publication of CN116663502B publication Critical patent/CN116663502B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/12Use of codes for handling textual entities
    • G06F40/151Transformation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/166Editing, e.g. inserting or deleting
    • G06F40/169Annotation, e.g. comment data or footnotes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/73Program documentation
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Artificial Intelligence (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Library & Information Science (AREA)
  • Document Processing Apparatus (AREA)

Abstract

本发明属于车用软件开发技术领域,具体涉及一种汽车开发用文本代码与图形代码的转换方法及转换系统,其中汽车开发用文本代码与图形代码的转换方法包括:将图形代码转换为文本代码,并在目标文本代码生成的同时将当前图形代码中各执行单元的配置信息插入到目标文本代码的注释区域;以及将目标文本代码转换回为图形代码时,提取目标文本代码注释区域的配置信息,并加载该配置信息还原图形代码。

Description

汽车开发用文本代码与图形代码的转换方法及转换系统
技术领域
本发明属于车用软件开发技术领域,具体涉及一种汽车开发用文本代码与图形代码的转换方法及转换系统。
背景技术
汽车开发流程中先有基于图形代码构建的模型,但图形代码在计算机端运行,无法成为逻辑运行的载体,而对于汽车开发来说,汽车控制器的逻辑必须基于文本代码执行,故需要将图形代码生成文本代码后,才能在汽车控制器中执行。
另外,在汽车开发过程中,需要依赖版本管理软件例如Git(开源的分布式版本控制系统),对例如基于文本的C代码进行管理,然而这类管理软件难以管理图形代码,难以比对图形代码版本之间的差异。因此版本管理系统中用来比较差异的文件一般为文本代码,当用户浏览不同版本文本代码之间的差异项时,又很难从特定的差异代码中反推出图形代码的实现细节。而且如果文本代码的逻辑出现问题,需要从出问题的程序版本对应的文本代码进行差异比对,并反推回图形代码进行修正,修正完图形代码后并再次生成文本代码,这个从图形代码生成文本代码在汽车控制器中执行,再从文本代码转换回图形代码进行修正,而后从图形代码生成文本代码继续执行的过程会反复进行直至程序正确无误。
因此,如何实现图形代码与文本代码之间能够多次反复进行转换,且反复多次转换后图形代码与文本代码始终保持一一对应的关系的问题是本发明需要解决的。
发明内容
本发明的目的是提供一种汽车开发用文本代码与图形代码的转换方法及转换系统。
为了解决上述技术问题,本发明提供了一种汽车开发用文本代码与图形代码的转换方法,包括:
将图形代码转换为文本代码,并在目标文本代码生成的同时将当前图形代码中各执行单元的配置信息插入到目标文本代码的注释区域;以及
将目标文本代码转换回为图形代码时,由图形程序提取目标文本代码注释区域的配置信息,并加载该配置信息以还原图形代码。
又一方面,本发明还提供了一种文本代码与图形代码的转换装置,包括:
处理器,用于执行如前所述的文本代码与图形代码的转换方法的程序;
存储模块,用于存储执行如前所述的文本代码与图形代码的转换方法的程序;以及
显示模块,用于显示文本代码与图形代码的转换结果。
第三方面,本发明还提供了一种文本代码与图形代码的转换系统,包括:
图形文本转换模块,用于将图形代码转换为文本代码,并在目标文本代码生成的同时将当前图形代码中各执行单元的配置信息插入到目标文本代码的注释区域;以及
图形还原模块,用于将目标文本代码转换回为图形代码时,由图形程序提取目标文本代码注释区域的配置信息,并加载该配置信息以还原图形代码。
第四方面,本发明还提供了一种计算机可读存储介质,该计算机可读存储介质被配置为存储执行如前所述的文本代码与图形代码的转换方法的程序。
第五方面,本发明还提供了一种处理器,该处理器被配置为执行如前所述的文本代码与图形代码的转换方法的程序。
第六方面,本发明还提供了一种应用于汽车开发的文本代码与图形代码的转换方法,包括:
将汽车开发用图形代码转换为文本代码时把当前汽车开发用图形代码中每个基本动作的配置信息插入到目标文本代码的注释区域;以及
提取注释区域的配置信息,并加载配置信息,即可将文本代码完整还原为汽车开发用图形代码。
第七方面,本发明还提供了一种应用于汽车开发的文本代码与图形代码的转换系统,包括:
车用图形文本转换模块,将车用图形代码转换为文本代码,并在目标文本代码生成的同时将当前车用图形代码中各执行单元的配置信息插入到目标文本代码的注释区域;以及
车用图形还原模块,将车用目标文本代码转换回为图形代码时,由车用图形程序提取目标文本代码注释区域的配置信息,并加载该配置信息以还原图形代码。
第八方面,本发明还提供了一种电子设备,包括:处理器、可读存储介质、通讯总线和通信接口;其中所述处理器、所述可读存储介质和所述通信接口通过所述通讯总线实现相互间的通信;
所述可读存储介质用于存储执行如前所述的文本代码与图形代码的转换方法的程序,所述程序使处理器执行所述文本代码与图形代码的转换方法对应的操作。
第九方面,本发明还提供了一种车用开发调试系统,包括:计算机装置、总线适配器或烧写器;其中
所述计算机装置包括:处理器、可读存储介质、通讯总线和通信接口;其中
所述可读存储介质被配置为存储执行所述文本代码与图形代码的转换方法的程序,所述程序使处理器执行所述文本代码与图形代码的转换方法对应的操作以生成文本代码;
所述处理器、所述可读存储介质和所述通信接口通过所述通讯总线实现与总线适配器相互间的通信;
所述处理器被配置为编译所述文本代码中至少一条执行代码;
所述总线适配器被配置为将编译后的执行代码写入调试设备;或
所述烧写器被配置为将编译后的执行代码写入调试设备。
本发明的有益效果是,本发明的文本代码与图形代码的转换方法通过每次将图形代码转换成文本代码时,都会将图形代码的配置信息作为注释插入到目标文本代码的注释区域,从而保证了从文本代码再转换回图形代码时,图形代码能够和原图形代码完全一模一样,即实现了图形代码与文本代码之间可以保持一一对应的关系进行多次往复转换。另外,本发明还通过定位信息既能够定位文本代码中某代码行对应的图形代码中执行单元的位置,在需要排查文本代码逻辑的应用场景下能够大大提高排查便捷性和效率;还能定位图形代码中某执行单元对应的文本代码中相应代码行的位置,在需要对文本代码中的函数等进行进一步测试的应用场景下能够大大提高测试效率。进一步,本发明中涉及的图形代码可直接执行,生成的文本代码也可直接执行,且两者执行过程,以及执行结果完全对应。
本发明的其他特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点在说明书以及附图中所特别指出的结构来实现和获得。
为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例的文本代码与图形代码的转换方法的步骤图;
图2是本发明实施例所涉及的一种图形代码案例;
图3是本发明实施例所涉及的另一种图形代码案例;
图4是本发明实施例所涉及的第三种图形代码案例;
图5是本发明实施例所涉及的第三种图形代码案例中执行单元B的子图形代码;
图6是本发明实施例所涉及的第四种图形代码案例;
图7是本发明实施例所涉及的第五种图形代码案例;
图8是本发明实施例所涉及的第六种图形代码案例;
图9是本发明实施例所涉及的代码与图形代码的转换装置的原理框图;
图10是本发明实施例所涉及的文本代码与图形代码的转换系统的原理框图;
图11是本发明实施例所涉及的应用于汽车开发的文本代码与图形代码的转换系统的原理框图;
图12是本发明实施例所涉及的第七种图形代码案例;
图13是本发明实施例所涉及的第七种图形代码案例中AV_On高亮后的示意图;
图14是本发明实施例所涉及的电子设备原理框图;
图15是本发明实施例所涉及的车用开发调试系统(总线适配器)的连接示意图;
图16是本发明实施例所涉及的车用开发调试系统(烧写器)的连接示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
目前在汽车开发过程中的同类或者相近软件程序只能在图形代码和C代码之间单向生成,而无法做到图形代码和C代码中每个执行动作的严格一一对应,也就是说图形代码在生成C代码后,再次从C代码生成图形代码,原图形代码与再次生成的图形代码之间将出现差异。
以下通过一个案例描述原图形代码与再次生成的图形代码之间出现差异的原因:
一般来说图形代码中重复执行一个动作,只要设置该动作的重复次数即可,例如动作k=k+1需要循环3次,即设定动作k=k+1的重复次数为3,然而根据该图形代码生成的C代码,根据使用场景不同,会有多种结果:
(1)一般的循环逻辑,即通用场景下,生成的C代码如下:
for(i=0;i<3;i++){
k=k+1;
}
(2)高性能需求的场景,生成的C代码如下:
k=k+1;
k=k+1;
k=k+1;
以上两种场景下生成的不同C代码,若再次转换回图形代码,结果是截然不同的,即再次转换回的图形代码可能出现三个动作,而不是一个,或是图形代码使用菱形分支来实现for的语法,而不是简单地使用重复属性。
因此,本实施例提供了一种汽车开发用文本代码与图形代码的转换方法,包括:将图形代码转换为文本代码,并在目标文本代码生成的同时将当前图形代码中各执行单元的配置信息插入到目标文本代码的注释区域;以及将目标文本代码转换回为图形代码时,由图形程序提取目标文本代码注释区域的配置信息,并对配置信息进行加载,得到图形代码中各执行单元的配置信息,根据该配置信息以还原图形代码。
本实施例中的配置信息是图形代码本身,即图形代码持久化后的信息被称为配置信息。图形代码是以框图形式呈现的,包含顺序执行、分支跳转执行、循环执行等内容的程序。
由于每次将图形代码转换成文本代码的同时,都会将图形代码的配置信息作为注释插入到目标文本代码的注释区域,从而保证了从文本代码再转换回图形代码时,图形代码能够和原图形代码完全一模一样,即实现了图形代码与文本代码之间可以保持一一对应的关系进行多次往复转换。
下面结合附图,详细说明本实施例的各种非限制性实施方式。
如图1所示,本实施例提供了一种文本代码与图形代码的转换方法,包括:
步骤S101,将图形代码转换为文本代码,并在目标文本代码生成的同时将当前图形代码中各执行单元的配置信息插入到目标文本代码的注释区域。
步骤S102,将目标文本代码转换回为图形代码时,由图形程序提取目标文本代码注释区域的配置信息,并对配置信息进行加载,得到图形代码中各执行单元的配置信息,根据该配置信息以还原图形代码。
在一些实施例中,所述配置信息经序列化编码后以文本的形式插入到目标文本代码的注释区域;以及将目标文本代码转换回为图形代码时,由图形程序提取注释区域的配置信息文本进行反序列化解码,并加载该配置信息,从而还原得到图形代码。
具体的,本实施例所涉及的图形程序指的是运行在PC机上且以计算机图形来呈现顺序执行、分支跳转执行、循环执行等结构的程序。
在一些实施例中,序列化编码方式例如但不限于采用base64编码方式;若采用base64编码方式,则相应的反序列化解码方式采用base64解码方式。
需要说明的是,在下面涉及的案例内容中将以base64编码方式和base64解码方式为例进行描述。
在一些实施例中,所述文本代码例如但不限于为C代码、Java代码、Python代码、Pascal代码、C++代码、VisualBasic代码、C#代码等等。
需要说明的是,在下面涉及的案例内容中,均以图形代码与C代码之间的转换为例进行描述,且C代码中各函数调用语句括号里面可以为空也可以不为空,当有参数时就不为空,本实施例为了描述方便,统一采用了不带参数的函数调用语句。
在本实施例中,图形代码中的各执行单元类型可提前预设,比如将图形代码中的执行单元预设为顺序执行单元、分支跳转单元、嵌套执行单元以及循环单元,通过图形代码读取各执行单元的类型属性即可识别各执行单元的类型,不同类型的执行单元转换为C代码的方法分别如下:
将图形代码中的顺序执行单元直接转换为对应单元动作的C代码;
将图形代码中的分支跳转单元转换为“if”或“elseif”或“else”结构的C代码;
将图形代码中的嵌套执行单元转换为一个执行嵌套C代码的函数和一个函数调用C代码;以及
将图形代码中的循环单元转换为一个标签、一个goto语句和对应被循环单元动作的C代码。
作为图形代码转换为C代码的一种实施方式,假设以如图2所示的包含顺序执行单元的图形代码为例:
具体的,将该图形代码转换为C代码时,只需要按照执行顺序依次转换执行单元即可,对应的C代码如下:
A();
B();
C();
作为图形代码转换为C代码的另一种实施方式,假设以如图3所示的包含分支跳转执行单元的图形代码为例:
将该图形代码转化为C代码时,需要针对A的返回值,设定两个分支,对于A返回逻辑真时,执行第一个分支,也就是B,当B执行完毕后,逻辑继续往下执行;否则执行第二个分支,也就是C,当C执行完毕后,逻辑跳转到B的下一条命令继续执行。对应的C代码如下:
if(A()){
B();
}else{
C();
}
作为图形代码转换为C代码的第三种实施方式,假设以如图4所示的包含嵌套执行单元的图形代码为例:
如图5所示,该图形代码上的执行单元B是一个嵌套执行单元,其内部为子图形代码。
将该图形代码转化为C代码时,需要将执行单元B的内容首先转化为一个C代码函数,嵌套内层C代码如下所示:
int B(void){
D();
E();
F();
}
则执行单元B的代码生成就变成了调用函数B,嵌套外层C代码如下所示:
A();
B();
C();
作为图形代码转换为C代码的第四种实施方式,假设以图6所示的包含循环执行单元的图形代码为例:
其中执行单元A完成后,执行单元B开始执行,它是一个判断,当返回结果为逻辑真时,继续向下运行执行单元C,否则向右进行跳转,跳转标签是“Loop”,意味着程序将跳到执行单元A的上方,向下继续执行,执行单元A和执行单元B则构成了一个循环。
将该图形代码转化为C代码时,需要在执行单元A的上方设置标签Loop,并在执行单元B返回逻辑假时,使用C代码语言的goto语句跳转至该标签,生成的C代码如下所示:
Loop:
A();
if(B()){
goto Loop;
}
C()。
在一些实施例中,将配置信息插入到目标代码的注释区域的方法包括:生成图形代码的持久化配置信息;以及将持久化配置信息经序列化编码后以文本的形式插入到目标代码的注释区域。
具体的,图形代码与代码的一一对应关系,可以通过字符串或文件的方式进行编码和解码来实现。
例如生成的图形代码的持久化配置信息如下:
conf=5704664608865866268;1;-1;4143886487092279683;-1;0;0;0;0;yOu/2rXj;;-1;0。
该持久化配置信息通过base64编码后,可得到如下字符串s:
Y29uZj01NzA0NjY0NjA4ODY1ODY2MjY4OzE7LTE7NDE0Mzg4NjQ4NzA5MjI3OTY4MzstMTswOzA7MDswO3lPdS8yclhqOzstMTsw。
只需要将字符串s以文本的形式插入到目标C代码的注释区域,就可以在C代码中保存图形代码的所有信息,当需要从C代码转换回图形代码时,只需要从C代码中提取出该字符串s,并对该字符串s进行base64解码操作即可得到图形代码的持久化配置信息,加载该持久化配置信息从而得到完整的图形代码。
在一些实施例中,将图形代码转换为C代码时,除了将当前图形代码中各执行单元的配置信息显示在目标C代码中,还将当前图形代码中各执行单元的定位信息显示在目标C代码中。
具体的,所述定位信息包括与图形代码中各执行单元一一对应的全局唯一id,各全局唯一id通过调用系统API函数coCreateGuid来生成,使用全局唯一id,可以直接定位到执行单元,从而实现了从图形代码到文本代码:通过全局唯一id能够直接定位到与图形代码相对应的各文本代码行;以及从文本代码到图形代码:通过全局唯一id能够直接定位到与文本代码行相对应的执行单元。
作为定位信息显示在目标C代码中的一种可选方式,将图形代码转换为C代码,在目标C代码生成的同时将当前图形代码中各执行单元的定位信息分别插入到相应目标C代码行。
通过定位信息既能够定位C代码中某代码行对应的图形代码中执行单元的位置,在需要排查C代码逻辑的应用场景下能够大大提高排查便捷性和效率;还能定位图形代码中某执行单元对应的C代码中相应代码行的位置,在需要对C代码中的函数等进行进一步测试的应用场景下能够大大提高测试效率。
下面结合案例,详细说明定位信息插入到相应目标C代码行的方法。
假设以如图7所示的图形代码为例:
步骤S201,当从图形代码转换为C代码时,为A、B、C每一个执行单元生成相应的全局唯一id,执行单元与id对应表如下所示:
执行单元 id
A=1; 796586134100579186
B=A+2; 4477997354382728721
C=add(A,B); 623479023297457637
步骤S202,按照转换规则从图形代码逐行生成C代码,并记录行号、C代码与id的对应关系,如下表所示:
行号 C代码 id
1 A=1; 796586134100579186
2 B=A+2; 4477997354382728721
3 C=add(A,B); 623479023297457637
步骤S203,将id作为定位信息,以注释的方式添加到相应目标代码行,优选添加到相应目标代码行的右侧,则生成后的目标C代码内容如下所示:
A=1; //796586134100579186
B=A+2; //4477997354382728721
C=add(A,B);//623479023297457637。
作为定位信息显示在目标代码中的另一种可选方式,将图形代码转换为代码时,建立一个临时文件,用于暂存当前图形代码中各执行单元的定位信息;以及将所述定位信息经序列化编码后以文本的形式插入到目标代码的所述注释区域;其中所述定位信息为各执行单元与相应目标代码行之间的关联文件。
下面结合案例,详细说明定位信息以临时文件呈现在目标C代码注释区域的方法。
假设还是以如图7所示的图形代码为例:
步骤S301,当从图形代码转换为C代码时,为A、B、C每一个执行单元生成相应的全局唯一id,执行单元与id对应表如下所示:
执行单元 id
A=1; 796586134100579186
B=A+2; 4477997354382728721
C=add(A,B); 623479023297457637
步骤S302,按照转换规则从图形代码逐行生成C代码,并记录行号、C代码与id的对应关系,如下表所示:
行号 C代码 id
1 A=1; 796586134100579186
2 B=A+2; 4477997354382728721
3 C=add(A,B); 623479023297457637
C代码生成完毕后,同时得到了一份代码行行号与id相对应的关联文件,一共3行,内容如下:
行号 id
1 796586134100579186
2 4477997354382728721
3 623479023297457637
步骤S303,图形代码将代码行行号与id的关联文件作为定位信息,通过base64编码,得到字符串s1,其内容如下:
Nzk2NTg2MTM0MTAwNTc5MTg2DQo0NDc3OTk3MzU0MzgyNzI4NzIxDQo2MjM0NzkwMjMyOTc0NTc2Mzc;
步骤S304,将编码后的字符串s1以文本的形式插入到目标C代码的注释区域,则目标C代码内容如下所示:
A=1;
B=A+2;
C=add(A,B);
//Nzk2NTg2MTM0MTAwNTc5MTg2DQo0NDc3OTk3MzU0MzgyNzI4NzIxDQo2MjM0NzkwMjMyOTc0NT c2Mzc。
下面结合完整案例,详细说明本实施例的C代码与图形代码的转换方法,具体为从图形代码转换到C代码,再从C代码转换回图形代码的完整步骤。
案例一(定位信息插入到相应目标C代码行的右侧)
假设本例中图形代码如图7所示:
根据本实施例的描述方法,执行图形代码与C代码相互转换的步骤如下:
步骤S401,为A、B、C每一个执行单元生成相应的全局唯一id,执行单元与id对应表如下所示:
执行单元 id
A=1 796586134100579186
B=A+2 4477997354382728721
C=add(A,B) 623479023297457637
步骤S402,按照规则从图形代码逐行生成C代码,并记录行号、C代码与id的对应关系,如下表所示:
行号 C代码 id
1 A=1; 796586134100579186
2 B=A+2; 4477997354382728721
3 C=add(A,B); 623479023297457637
代码生成完毕后,得到了一份目标C代码文件,一共3行,内容如下表所示:
代码生成完毕后,同时还得到了一份代码行行号与id的对应关系的文件,一共3行,内容如下表所示:
行号 id
1 796586134100579186
2 4477997354382728721
3 623479023297457637
步骤S403,将id作为定位信息,以注释的方式添加到相应目标代码行的右侧,则生成后的目标C代码内容如下所示:
A=1; //796586134100579186
B=A+2; //4477997354382728721
C=add(A,B);//623479023297457637。
步骤S404,图形代码将各执行单元的持久化配置信息通过base64编码:
假设持久化配置信息如下:
[ao]
conf=5864543089582057106;1;-1;796586134100579186;-1;0;0;0;0;yOu/2rXj;;-1;0
[a0]
conf=623479023297457637;0;4477997354382728721;-1;-1;0;1;0;0;QyA9IEI_;;0;0
[a1]
conf=4477997354382728721;0;796586134100579186;623479023297457637;-1;0;3;0;0;
QiA9IEEgKyAy;;0;0
[a2]
conf=796586134100579186;0;5864543089582057106;4477997354382728721;-1;0;1;0;0;QSA9IDE_;;0;0
则经过base64编码后得到字符串s2,其内容如下:
W2FvXQ0KY29uZj01ODY0NTQzMDg5NTgyMDU3MTA2OzE7LTE7Nzk2NTg2MTM0MTAwNTc5MTg2Oy0xOzA7MDswOzA7eU91LzJyWGo7Oy0xOzANClthMF0NCmNvbmY9NjIzNDc5MDIzMjk3NDU3NjM3OzA7NDQ3Nzk5NzM1NDM4MjcyODcyMTstMTstMTswOzE7MDswO1F5QTlJRUlfOzswOzANClthMV0NCmNvbmY9NDQ3Nzk5NzM1NDM4MjcyODcyMTswOzc5NjU4NjEzNDEwMDU3OTE4Njs2MjM0NzkwMjMyOTc0NTc2Mzc7LTE7MDszOzA7MDtRaUE5SUVFZ0t5QXk7OzA7MA0KW2EyXQ0KY29uZj03OTY1ODYxMzQxMDA1NzkxODY7MDs1ODY0NTQzMDg5NTgyMDU3MTA2OzQ0Nzc5OTczNTQzODI3Mjg3MjE7LTE7MDsxOzA7MDtRU0E5SURFXzs7MDsw。
步骤S405,图形代码将编码后的字符串s2作为注释以文本的形式插入到目标C代码注释区域,则转换后完整目标C代码如下所示:
A=1; //796586134100579186
B=A+2; //4477997354382728721
C=add(A,B);//623479023297457637。
//W2FvXQ0KY29uZj01ODY0NTQzMDg5NTgyMDU3MTA2OzE7LTE7Nzk2NTg2MTM0MTAwNTc5MTg2Oy0xOzA7MDswOzA7eU91LzJyWGo7Oy0xOzANClthMF0NCmNvbmY9NjIzNDc5MDIzMjk3NDU3NjM3OzA7ND Q3Nzk5NzM1NDM4MjcyODcyMTstMTstMTswOzE7MDswO1F5QTlJRUlfOzswOzANClthMV0NCmNvbmY9ND Q3Nzk5NzM1NDM4MjcyODcyMTswOzc5NjU4NjEzNDEwMDU3OTE4Njs2MjM0NzkwMjMyOTc0NTc2Mzc7LT E7MDszOzA7MDtRaUE5SUVFZ0t5QXk7OzA7MA0KW2EyXQ0KY29uZj03OTY1ODYxMzQxMDA1NzkxODY7MD s1ODY0NTQzMDg5NTgyMDU3MTA2OzQ0Nzc5OTczNTQzODI3Mjg3MjE7LTE7MDsxOzA7MDtRU0E5SURFXz s7MDsw。
步骤S406,至此完成了图形代码到C代码的转换。
步骤S407,当需要从C代码转换回图形代码时,只需要读取C代码文件中各代码行右侧的id信息和注释区域的注释信息,得到图形代码的定位信息和持久化配置信息,图形代码加载持久化配置信息即可还原与C代码一一对应的图形代码。
案例二(定位信息以文本的形式插入到目标C代码的注释区域)
假设本例中图形代码如图8所示。
该图形代码有5个执行单元:A、B、C、D和E。程序执行时,首先执行A,随后执行B,根据B的结果,执行后续步骤。当B返回值为逻辑真时,执行C,否则执行D。当C执行完成后,接下去执行E。当D执行完成后,接下去执行E,NOP无需执行。当E执行完成后,程序结束,NOP无需执行。
根据本实施例的描述方法,执行图形代码与C代码相互转换的步骤如下:
步骤S501,为A、B、C、D、E每一个执行单元生成相应的全局唯一id,该id是64位整型数,不同的执行单元对应的id各不相同,执行单元与id对应表如下所示:
执行单元 id
A 4143886487092279683
B 140467269321627285
C 6482379969619643549
D 3303683057652484263
E 3598387971060086837
步骤S502,按照规则从图形代码逐行生成C代码,生成过程中,对于每行生成的C代码中涉及到的执行单元,图形代码记录了行号、C代码和id的对应关系,其中第四行和第六行没有执行单元信息,id留空,本例中行号、C代码和id的对应关系如下表:
行号 C代码 id
1 A(); 4143886487092279683
2 if(B()){ 140467269321627285
3 C(); 6482379969619643549
4 }else{
5 D(); 3303683057652484263
6 }
7 E(); 3598387971060086837
C代码生成完毕后,得到了一份目标C代码文件,一共7行,内容如下表:
行号 代码
1 A();
2 if(B()){
3 C();
4 }else{
5 D();
6 }
7 E();
C代码生成完毕后,同时还得到了一份代码行行号与id相对应的关联文件,一共7行,内容如下表:
步骤S503,图形代码将代码行行号与id的关联文件通过base64编码,得到字符串s3,其内容如下:
NDE0Mzg4NjQ4NzA5MjI3OTY4Mw0KMTQwNDY3MjY5MzIxNjI3Mjg1DQo2NDgyMzc5OTY5NjE5NjQz NTQ5DQoNCjMzMDM2ODMwNTc2NTI0ODQyNjMNCg0KMzU5ODM4Nzk3MTA2MDA4NjgzNw;
步骤S504,图形代码将各执行单元的持久化配置信息通过base64编码:
假设持久化配置信息如下:
[ao]
conf=5704664608865866268;1;-1;4143886487092279683;-1;0;0;0;0;yOu/2rXj;;-1;0
[a0]
conf=140467269321627285;0;4143886487092279683;6482379969619643549;3303683057652484263;0;0;0;0;Qg__;;0;0
[a1]
conf=6482379969619643549;0;140467269321627285;3598387971060086837;-1;0;1;0;0;Qw__;;0;0
[a2]
conf=3303683057652484263;0;140467269321627285;8309716131964563539;-1;0;1;0;0;RA__;;0;0
[a3]
conf=4182729410035600018;0;8309716131964563539;-1;-1;0;0;0;0;Tk9Q;;-1;0
[a4]
conf=3598387971060086837;0;6482379969619643549;3450332134183460644;-1;0;1;0;
0;RQ__;;0;0
[a5]
conf=8309716131964563539;0;3303683057652484263;4182729410035600018;-1;0;0;0;
0;Tk9Q;;-1;0
[a6]
conf=3450332134183460644;0;3598387971060086837;-1;-1;0;0;0;0;Tk9Q;;-1;0
[a7]
conf=4143886487092279683;0;5704664608865866268;140467269321627285;-1;0;1;0;0;QQ__;;0;0;
则经过base64编码后得到字符串s4,其内容如下:
W2FvXQ0KY29uZj01NzA0NjY0NjA4ODY1ODY2MjY4OzE7LTE7NDE0Mzg4NjQ4NzA5MjI3OTY4Mzst MTswOzA7MDswO3lPdS8yclhqOzstMTswDQpbYTBdDQpjb25mPTE0MDQ2NzI2OTMyMTYyNzI4NTswOzQx NDM4ODY0ODcwOTIyNzk2ODM7NjQ4MjM3OTk2OTYxOTY0MzU0OTszMzAzNjgzMDU3NjUyNDg0MjYzOzA7MDswOzA7UWdfXzs7MDswDQpbYTFdDQpjb25mPTY0ODIzNzk5Njk2MTk2NDM1NDk7MDsxNDA0NjcyNjkz MjE2MjcyODU7MzU5ODM4Nzk3MTA2MDA4NjgzNzstMTswOzE7MDswO1F3X187OzA7MA0KW2EyXQ0KY29uZj0zMzAzNjgzMDU3NjUyNDg0MjYzOzA7MTQwNDY3MjY5MzIxNjI3Mjg1OzgzMDk3MTYxMzE5NjQ1NjM1Mzk7LTE7MDsxOzA7MDtSQV9fOzswOzANClthM10NCmNvbmY9NDE4MjcyOTQxMDAzNTYwMDAxODswOzgz MDk3MTYxMzE5NjQ1NjM1Mzk7LTE7LTE7MDswOzA7MDtUazlROzstMTswDQpbYTRdDQpjb25mPTM1OTgz ODc5NzEwNjAwODY4Mzc7MDs2NDgyMzc5OTY5NjE5NjQzNTQ5OzM0NTAzMzIxMzQxODM0NjA2NDQ7LTE7MDsxOzA7MDtSUV9fOzswOzANClthNV0NCmNvbmY9ODMwOTcxNjEzMTk2NDU2MzUzOTswOzMzMDM2ODMw NTc2NTI0ODQyNjM7NDE4MjcyOTQxMDAzNTYwMDAxODstMTswOzA7MDswO1RrOVE7Oy0xOzANClthNl0NCmNvbmY9MzQ1MDMzMjEzNDE4MzQ2MDY0NDswOzM1OTgzODc5NzEwNjAwODY4Mzc7LTE7LTE7MDswOzA7MDtUazlROzstMTswDQpbYTddDQpjb25mPTQxNDM4ODY0ODcwOTIyNzk2ODM7MDs1NzA0NjY0NjA4ODY1ODY2MjY4OzE0MDQ2NzI2OTMyMTYyNzI4NTstMTswOzE7MDswO1FRX187OzA7MA0K。
步骤S505,图形代码将字符串s3和字符串s4作为注释,以文本的形式,即“//s1,s2”,添加到目标C代码的注释区域,则生成的完整目标C代码如下所示:
A();
if(B()){
C();
}else{
D();
}
E();
//NDE0Mzg4NjQ4NzA5MjI3OTY4Mw0KMTQwNDY3MjY5MzIxNjI3Mjg1DQo2NDgyMzc5OTY5NjE5Nj QzNTQ5DQoNCjMzMDM2ODMwNTc2NTI0ODQyNjMNCg0KMzU5ODM4Nzk3MTA2MDA4NjgzNw,W2FvXQ0KY29uZj01NzA0NjY0NjA4ODY1ODY2MjY4OzE7LTE7NDE0Mzg4NjQ4NzA5MjI3OTY4MzstMTsw OzA7MDswO3lPdS8yclhqOzstMTswDQpbYTBdDQpjb25mPTE0MDQ2NzI2OTMyMTYyNzI4NTswOzQxNDM4ODY0ODcwOTIyNzk2ODM7NjQ4MjM3OTk2OTYxOTY0MzU0OTszMzAzNjgzMDU3NjUyNDg0MjYzOzA7MDsw OzA7UWdfXzs7MDswDQpbYTFdDQpjb25mPTY0ODIzNzk5Njk2MTk2NDM1NDk7MDsxNDA0NjcyNjkzMjE2MjcyODU7MzU5ODM4Nzk3MTA2MDA4NjgzNzstMTswOzE7MDswO1F3X187OzA7MA0KW2EyXQ0KY29uZj0zMzAzNjgzMDU3NjUyNDg0MjYzOzA7MTQwNDY3MjY5MzIxNjI3Mjg1OzgzMDk3MTYxMzE5NjQ1NjM1Mzk7LTE7MDsxOzA7MDtSQV9fOzswOzANClthM10NCmNvbmY9NDE4MjcyOTQxMDAzNTYwMDAxODswOzgzMDk3MTYxMzE5NjQ1NjM1Mzk7LTE7LTE7MDswOzA7MDtUazlROzstMTswDQpbYTRdDQpjb25mPTM1OTgzODc5NzEwNjAwODY4Mzc7MDs2NDgyMzc5OTY5NjE5NjQzNTQ5OzM0NTAzMzIxMzQxODM0NjA2NDQ7LTE7MDsx OzA7MDtSUV9fOzswOzANClthNV0NCmNvbmY9ODMwOTcxNjEzMTk2NDU2MzUzOTswOzMzMDM2ODMwNTc2NTI0ODQyNjM7NDE4MjcyOTQxMDAzNTYwMDAxODstMTswOzA7MDswO1RrOVE7Oy0xOzANClthNl0NCmNv bmY9MzQ1MDMzMjEzNDE4MzQ2MDY0NDswOzM1OTgzODc5NzEwNjAwODY4Mzc7LTE7LTE7MDswOzA7MDtU azlROzstMTswDQpbYTddDQpjb25mPTQxNDM4ODY0ODcwOTIyNzk2ODM7MDs1NzA0NjY0NjA4ODY1ODY2MjY4OzE0MDQ2NzI2OTMyMTYyNzI4NTstMTswOzE7MDswO1FRX187OzA7MA0K。
步骤S506,至此完成了图形代码到C代码的转换。
步骤S507,当需要将此C代码再转换回图形代码时,首先提取该目标C代码注释区域的注释信息,得到逗号分隔的两个字符串s5和字符串s6,其中字符串s5为经过base64编码后的定位信息,字符串s6为经过base64编码后的图形代码的持久化配置信息,图形代码加载这个持久化配置信息,就得到了与C代码一一对应的图形代码。
综上所述,本实施例的代码与图形代码的转换方法通过每次将图形代码转换成C代码时,都会将图形代码的配置信息作为注释插入到目标代码的注释区域,从而保证了从C代码再转换回图形代码时,图形代码能够和原图形代码完全一模一样,即实现了图形代码与C代码之间可以保持一一对应的关系进行多次往复转换。另外,本实施例还通过定位信息既能够定位C代码中某代码行对应的图形代码中执行单元的位置,在需要排查C代码逻辑的应用场景下能够大大提高排查便捷性和效率;还能定位图形代码中某执行单元对应的C代码中相应代码行的位置,在需要对C代码中的函数等进行进一步测试的应用场景下能够大大提高测试效率。进一步,本实施例中涉及的图形代码可直接执行,生成的C代码程序也可直接执行,且两者执行过程,以及执行结果完全对应。
如图9所示,本实施例还提供了一种文本代码与图形代码的转换装置,包括:处理器,用于执行如本实施例所述的文本代码与图形代码的转换方法的程序;存储模块,用于存储执行如实施例所述的文本代码与图形代码的转换方法的程序;以及显示模块,用于显示文本代码与图形代码的转换结果。
其中,关于文本代码与图形代码的具体转换方法与前述文本代码与图形代码的转换方法相同,此处不在赘述。
在一些实施例中,文本代码与图形代码的转换装置也可以作为电子设备中的一种,在以下的描述中对电子设备进行展开说明。
如图10所示,本实施例还提供了一种文本代码与图形代码的转换系统,包括:
图形文本转换模块,用于将图形代码转换为文本代码,并在目标文本代码生成的同时将当前图形代码中各执行单元的配置信息插入到目标文本代码的注释区域;以及
图形还原模块,用于将目标文本代码转换回为图形代码时,由图形程序提取目标文本代码注释区域的配置信息,并加载该配置信息以还原图形代码。
上述图形文本转换模块、图形还原模块执行的功能在处理器中进行实现,图形文本转换模块及图形还原模块的软件代码存储于存储模块中,具体可以参见前述文本代码与图形代码的转换方法的具体描述,此处不在赘述。
本实施例还提供了一种应用于汽车开发的文本代码与图形代码的转换方法,包括:
将汽车开发用图形代码转换为代码,并在目标代码生成的同时将当前汽车开发用图形代码中各执行单元的配置信息插入到目标代码的注释区域;以及将汽车开发用目标代码转换回为图形代码时,提取汽车开发用目标代码注释区域的配置信息,并加载该配置信息还原图形代码。
用于汽车开发的场景中,关于文本代码与图形代码的具体转换步骤与前述文本代码与图形代码的转换方法相同,此处不在赘述。
如图11所示,本实施例还提供了一种应用于汽车开发的文本代码与图形代码的转换系统,包括:
车用图形文本转换模块,将汽车开发用图形代码转换为代码,并在目标代码生成的同时将当前汽车开发用图形代码中各执行单元的配置信息插入到目标代码的注释区域;以及
车用图形还原模块,将汽车开发用目标代码转换回为图形代码时,提取汽车开发用目标代码注释区域的配置信息,并加载该配置信息还原图形代码。
在本实施例中车用图形文本转换模块和车用图形还原模块执行的功能在处理器中进行实现,具体可以参见前述文本代码与图形代码的转换方法的具体描述,此处不在赘述。
下面结合案例,详细说明应用于汽车开发场景下的文本代码与图形代码的转换方法。
在汽车底盘电控的ABS算法开发过程中,以一个控制泄压阀打开的逻辑为例:
参考如图12所示的图形代码片段。
该逻辑判断当前车轮的滑移率slip是否小于0.2,如果返回结果为逻辑假,说明当前车轮的滑移率大等于0.2,车轮有抱死倾向,需要打开泄压阀,对此车轮进行减压。将该图形代码生成C代码的流程如下:
步骤S601,为该图形代码中各执行单元生成相应的全局唯一id,执行单元与id对应列表如下:
执行单元 id
slip<0.2? 3302264560674696091
AV_On 3428365350600537763
步骤S602,按照规则从图形代码逐行生成C代码,一共四行代码,内容如下表所示:
行号 C代码
1 if(slip<0.2){
2 }else{
3 AV_On();
4 }
代码生成完毕后,同时还得到了一份代码行行号与id相对应的关联文件f1,一共4行,内容如下表所示:
行号 id
1 3302264560674696091
2
3 3428365350600537763
4
步骤S603,图形代码将各执行单元的持久化配置信息通过base64编码:假设该图形代码的持久化配置文件f2如下:
[a1]
conf=3302264560674696091;0;3659305742699578;8432990436527128597;3428365350600537763;0;0;0;0;c2xpcCA8IDAuMiA/;;0;0
[a2]
conf=3428365350600537763;0;3302264560674696091;2570429621957346572;-1;0;1;0;
0;RVZfT24_;;0;0
将关联文件f1和持久化配置文件f2的内容通过base64编码后,以注释的形式插入到生成的目标C代码的注释区域,则最终生成的目标C代码内容如下:
if(slip<0.2){
}else{
AV_On();
}
//MzMwMjI2NDU2MDY3NDY5NjA5MQ0KDQozNDI4MzY1MzUwNjAwNTM3NzYzDQoNCg__,W2ExXQ0KY 29uZj0zMzAyMjY0NTYwNjc0Njk2MDkxOzA7MzY1OTMwNTc0MjY5OTU3ODs4NDMyOTkwNDM2NTI3MTI4NTk3OzM0MjgzNjUzNTA2MDA1Mzc3NjM7MDswOzA7MDtjMnhwY0NBOElEQXVNaUEvOzswOzANClthMl0NC mNvbmY9MzQyODM2NTM1MDYwMDUzNzc2MzswOzMzMDIyNjQ1NjA2NzQ2OTYwOTE7MjU3MDQyOTYyMTk1NzM0NjU3MjstMTswOzE7MDswO1JWWmZUMjRfOzswOzANCg。
步骤S604,用户将所生成的目标C代码编译后,放入汽车控制器执行。至此完成了汽车开发用图形代码到C代码的转换。
下面结合在汽车底盘电控的ABS算法开发过程中,以一个控制泄压阀打开的逻辑为例,详细描述汽车开发场景下定位信息的应用。
如图13所示,当用户发现打开AV阀的功能无法工作,需要排查对应逻辑时,首先用图形代码加载这个C代码文件,通过读取C代码文件中的注释信息,经base64解码后得到图形代码的配置信息和定位信息,通过解码后的配置信息从而还原图形代码;而后用户在图形代码加载的该C代码文件窗口中,点击“AV_On();”这一行代码,图形代码根据定位信息中定位到与该行行号相对应的执行单元id“3428365350600537763”,且窗口跳转到图形代码中,并在图形代码显示窗口中将该执行单元高亮,便于用户对该执行单元进行修正,大大提高排查便捷性和效率。
下面结合在汽车底盘电控的ABS算法开发过程中,以一个控制泄压阀打开的逻辑为例,详细描述汽车测试场景下定位信息的应用。
在实际汽车测试应用中,需要使用图形代码生成后的C代码逻辑进行软件在环测试。仍然使用上述控制泄压阀打开的逻辑作为被测对象,如图10所示,将该图形代码片段生成C代码后,需要对C代码中的函数“AV_On”进行进一步测试,以获取执行时间,资源占用等信息,这就需要能通过图形代码定位C代码的相应代码行。
定位方法如下:首先,用户点击图形代码中的执行单元“AV_On”,试图跳转到对应的C代码行中,图形代码获取该执行单元id“3428365350600537763”,并读取C代码文件中的注释信息,经base64解码后得到图形代码的定位信息,即得到代码行与id的对应关系文件,然后图形代码搜集该文件中出现此id的代码行,并通过列表的方式呈现给用户,用户选中列表中相应的选项,对应的C代码行就可以被定位并显示,从而能够大大提高测试效率。
下面从硬件处理的角度对本实施例中的电子设备进行描述:
本实施例并不对电子设备的具体实现做限定。
如图14所示,本电子设备,包括:处理器、可读存储介质、通讯总线和通信接口;其中所述处理器、所述可读存储介质和所述通信接口通过所述通讯总线实现相互间的通信;所述可读存储介质用于存储执行所述文本代码与图形代码的转换方法的程序,所述程序使处理器执行所述文本代码与图形代码的转换方法对应的操作。
在其他实施例中,计算机装置、工控机也可以作为电子设备的一种。
图14示出的结构并不构成对电子设备的限定,可以包括比图示更少或者更多的部件,或者组合某些部件,或者不同的部件布置。
在一些实施例中,通信接口可以是RS232、RS485、USB口和TYPE口等,可以与外部总线适配器连接的通信接口。还可以包括有线或无线网络接口,网络接口可选的可以包括有线接口和/或无线接口(如WI-FI接口、蓝牙接口等),通常用于在该计算机装置与其他电子设备之间建立通信连接。
其中,存储模块、可读存储介质或者计算机可读存储介质至少包括一种类型的存储器,存储器包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、磁性存储器、磁盘、光盘等。在一些实施例中可以是计算机装置的内部存储单元,例如该计算机装置的硬盘。存储器在另一些实施例中也可以是计算机装置的外部存储设备,例如计算机装置上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。进一步地,存储器还可以既包括计算机装置的内部存储单元也包括外部存储设备。存储器不仅可以用于存储安装于计算机装置的应用软件及各类数据,例如计算机程序的代码等,还可以用于暂时地存储已经输出或者将要输出的数据。
处理器在一些实施例中可以是一中央处理器(Central Processing Unit,CPU)、控制器、微控制器、微处理器或其他数据处理芯片,用于运行存储器中存储的程序代码或处理数据,例如执行计算机程序等。
在一些实施例中,通讯总线也可以是输入输出总线,其可以是外设部件互连标准(peripheral componentinterconnect,简称PCI)总线或扩展工业标准结构(extendedindustry standardarchitecture,简称EISA)总线等。该总线可以分为地址总线、数据总线、控制总线等。
可选地,计算机装置还可以包括用户接口,用户接口可以包括显示器(Display)、输入单元比如键盘(Keyboard),可选的,用户接口还可以包括标准的有线接口、无线接口。可选的,在一些实施例中,显示器或者显示模块可以是LED显示器、液晶显示器、触控式液晶显示器以及OLED(Organic Light-Emitting Diode,有机发光二极管)触摸器等。其中,显示器或者显示模块也可以适当的称为显示屏或显示单元,用于显示在计算机装置中处理的信息以及用于显示可视化的用户界面。
所述处理器执行所述程序时实现上述图1所示的文本代码与图形代码的转换方法实施例中的步骤,例如图1所示的步骤S101至S102。或者,处理器执行计算机程序时实现上述各装置实施例中各模块或单元的功能。
在一些实施例中,处理器具体用于实现如下步骤:
将图形代码转换为文本代码,并在目标文本代码生成的同时将当前图形代码中各执行单元的配置信息插入到目标文本代码的注释区域;以及
将目标文本代码转换回为图形代码时,提取目标文本代码注释区域的配置信息,并加载该配置信息还原图形代码。
可选的,作为一种可能的实施方式,处理器还可以用于实现如下步骤:
所述配置信息经序列化编码后以文本的形式插入到目标文本代码的注释区域;以及
将目标文本代码转换回为图形代码时,提取注释区域的配置信息文本进行反序列化解码,得到图形代码中各执行单元的配置信息,加载该配置信息还原图形代码。
可选的,作为一种可能的实施方式,处理器还可以用于实现如下步骤:
将图形代码中的顺序执行单元转换为对应单元动作的文本代码;
将图形代码中的分支跳转单元转换为“if”或“elseif”或“else”结构的文本代码;
将图形代码中的嵌套执行单元转换为一个执行嵌套文本代码的函数和一个该函数调用文本代码;以及
将图形代码中的循环单元转换为一个标签、一个goto语句和对应被循环单元动作的文本代码。
可选的,作为一种可能的实施方式,处理器还可以用于实现如下步骤:
生成图形代码的持久化配置信息;以及
将持久化配置信息经序列化编码后以文本的形式插入到目标文本代码的注释区域。
可选的,作为一种可能的实施方式,处理器还可以用于实现如下步骤:
在目标文本代码生成的同时将当前图形代码中各执行单元的定位信息分别插入到相应目标文本代码行。
可选的,作为一种可能的实施方式,处理器还可以用于实现如下步骤:
将图形代码转换为文本代码时,建立一个临时文件,用于暂存当前图形代码中各执行单元的定位信息;其中
所述定位信息为各执行单元与相应目标文本代码行之间的关联文件;以及
将所述关联文件经序列化编码后以文本的形式插入到目标文本代码的所述注释区域。
本实施例还提供了一种计算机可读存储介质,该计算机可读存储介质上存储有文本代码与图形代码的转换方法的程序,该程序被处理器执行时,可以实现文本代码与图形代码的转换方法的具体步骤,请参见本实施例中文本代码与图形代码的转换方法的具体描述,此处不再赘述。
如图15和图16所示,本实施例还提供了一种车用开发调试系统,包括:计算机装置和总线适配器或烧写器;其中
所述计算机装置包括:处理器、可读存储介质、通讯总线和通信接口;其中
所述可读存储介质被配置为存储执行所述文本代码与图形代码的转换方法的程序,所述程序使处理器执行所述文本代码与图形代码的转换方法对应的操作以生成文本代码;
所述处理器、所述可读存储介质和所述通信接口通过所述通讯总线实现与总线适配器相互间的通信;
所述处理器被配置为编译所述文本代码中至少一条执行代码;
所述总线适配器被配置为将编译后的执行代码写入调试设备;或
所述烧写器被配置为将编译后的执行代码写入调试设备。
在一些实施例中,计算机装置对应上述电子设备,此处不再赘述。
所述处理器被配置为编译所述文本代码中至少一条执行代码;在一些实施例中可以通过执行交叉编译器来实现文本代码的编译。
在本实施例中,总线适配器可以是CAN总线适配器、CANFD总线适配器、FastLIN总线适配器、LIN总线适配器、Ethernet总线适配器、FlexRay总线适配器,也可以是一路对多路,也可以是多路对多路,本实施例不对总线适配器的具体实现做出限定。在一些实施例中可以通过UDS或XCP或CCP协议与调试设备进行通信写入编译后的执行代码。
在一些实施例中,所述烧写器也可以指编程器。
在一些实施例中,对于汽车领域的调试设备具体可以是车用ECU及其相关系统,例如但不限于电子助力转向系统EPS、制动防抱死系统ABS、电子稳定系统ESC、汽车发动机管理系统、电池管理系统BMS等设备可以通过总线方式与计算机装置相连即可以实现接收及运行编译后的执行代码。
在本实施例的车用开发调试系统中,关于文本代码与图形代码的具体转换方法与前述文本代码与图形代码的转换方法相同,此处不在赘述。
在本发明所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本发明的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本发明各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。
以上述依据本发明的理想实施例为启示,通过上述的说明内容,相关工作人员完全可以在不偏离本项发明技术思想的范围内,进行多样的变更以及修改。本项发明的技术性范围并不局限于说明书上的内容,必须要根据权利要求范围来确定其技术性范围。

Claims (12)

1.一种文本代码与图形代码的转换方法,其特征在于,包括:
将图形代码转换为文本代码,并在目标文本代码生成的同时将当前图形代码中各执行单元的配置信息插入到目标文本代码的注释区域;
将目标文本代码转换回为图形代码时,由图形程序提取目标文本代码注释区域的配置信息,并加载该配置信息以还原图形代码;以及
在目标文本代码生成的同时将当前图形代码中各执行单元的定位信息分别插入到相应目标文本代码行;或
将图形代码转换为文本代码时,建立一个临时文件,用于暂存当前图形代码中各执行单元的定位信息;其中
所述定位信息为各执行单元与相应目标文本代码行之间的关联文件;且
将所述关联文件经序列化编码后以文本的形式插入到目标文本代码的所述注释区域。
2.根据权利要求1所述的转换方法,其特征在于,还包括:
所述配置信息经序列化编码后以文本的形式插入到目标文本代码的注释区域;以及
将目标文本代码转换回为图形代码时,由图形程序提取注释区域的配置信息文本进行反序列化解码,得到图形代码中各执行单元的配置信息,并加载该配置信息即还原图形代码。
3.根据权利要求1所述的转换方法,其特征在于,
将图形代码转换为文本代码的方法包括:
将图形代码中的顺序执行单元转换为对应单元动作的文本代码;
将图形代码中的分支跳转单元转换为“if”或“else if”或“else”结构的文本代码;
将图形代码中的嵌套执行单元转换为一个执行嵌套文本代码的函数和一个该函数调用文本代码;以及
将图形代码中的循环单元转换为一个标签、一个goto语句和对应被循环单元动作的文本代码。
4.根据权利要求2所述的转换方法,其特征在于,
将配置信息插入到目标文本代码的注释区域的方法包括:
生成图形代码的持久化配置信息;以及
将持久化配置信息经序列化编码后以文本的形式插入到目标文本代码的注释区域。
5.一种文本代码与图形代码的转换装置,其特征在于,包括:
处理器,用于执行如权利要求1-4任一项所述的文本代码与图形代码的转换方法的程序;
存储模块,用于存储执行如权利要求1-4任一项所述的文本代码与图形代码的转换方法的程序;以及
显示模块,用于显示文本代码与图形代码的转换结果。
6.一种文本代码与图形代码的转换系统,其特征在于,包括:
图形文本转换模块,用于将图形代码转换为文本代码,并在目标文本代码生成的同时将当前图形代码中各执行单元的配置信息插入到目标文本代码的注释区域;以及
在目标文本代码生成的同时将当前图形代码中各执行单元的定位信息分别插入到相应目标文本代码行;或
将图形代码转换为文本代码时,建立一个临时文件,用于暂存当前图形代码中各执行单元的定位信息;其中
所述定位信息为各执行单元与相应目标文本代码行之间的关联文件;且
将所述关联文件经序列化编码后以文本的形式插入到目标文本代码的所述注释区域;
图形还原模块,用于将目标文本代码转换回为图形代码时,由图形程序提取目标文本代码注释区域的配置信息,并加载该配置信息以还原图形代码。
7.一种计算机可读存储介质,其特征在于,该计算机可读存储介质被配置为存储执行如权利要求1-4任一项所述的文本代码与图形代码的转换方法的程序。
8.一种处理器,其特征在于,该处理器被配置为执行如权利要求1-4任一项所述的文本代码与图形代码的转换方法的程序。
9.一种应用于汽车开发的文本代码与图形代码的转换方法,其特征在于,包括:
将车用图形代码转换为文本代码,并在目标文本代码生成的同时将当前车用图形代码中各执行单元的配置信息插入到目标文本代码的注释区域;
将车用目标文本代码转换回为图形代码时,由车用图形程序提取目标文本代码注释区域的配置信息,并加载该配置信息以还原图形代码;以及
在目标文本代码生成的同时将当前车用图形代码中各执行单元的定位信息分别插入到相应目标文本代码行;或
将车用图形代码转换为文本代码时,建立一个临时文件,用于暂存当前车用图形代码中各执行单元的定位信息;其中
所述定位信息为各执行单元与相应目标文本代码行之间的关联文件;且
将所述关联文件经序列化编码后以文本的形式插入到目标文本代码的所述注释区域。
10.一种应用于汽车开发的文本代码与图形代码的转换系统,其特征在于,包括:
车用图形文本转换模块,将车用图形代码转换为文本代码,并在目标文本代码生成的同时将当前车用图形代码中各执行单元的配置信息插入到目标文本代码的注释区域;以及
在目标文本代码生成的同时将当前车用图形代码中各执行单元的定位信息分别插入到相应目标文本代码行;或
将车用图形代码转换为文本代码时,建立一个临时文件,用于暂存当前车用图形代码中各执行单元的定位信息;其中
所述定位信息为各执行单元与相应目标文本代码行之间的关联文件;且
将所述关联文件经序列化编码后以文本的形式插入到目标文本代码的所述注释区域;
车用图形还原模块,将车用目标文本代码转换回为图形代码时,由车用图形程序提取目标文本代码注释区域的配置信息,并加载该配置信息以还原图形代码。
11.一种电子设备,包括:处理器、可读存储介质、通讯总线和通信接口;其中所述处理器、所述可读存储介质和所述通信接口通过所述通讯总线实现相互间的通信;
所述可读存储介质用于存储执行如权利要求1-4任一项所述的文本代码与图形代码的转换方法的程序,所述程序使处理器执行所述文本代码与图形代码的转换方法对应的操作。
12.一种车用开发调试系统,其特征在于,包括:计算机装置、总线适配器或烧写器;其中
所述计算机装置包括:处理器、可读存储介质、通讯总线和通信接口;其中
所述可读存储介质被配置为存储执行如权利要求1-4任一项所述文本代码与图形代码的转换方法的程序,所述程序使处理器执行所述文本代码与图形代码的转换方法对应的操作以生成文本代码;
所述处理器、所述可读存储介质和所述通信接口通过所述通讯总线实现与总线适配器相互间的通信;
所述处理器被配置为编译所述文本代码中至少一条执行代码;
所述总线适配器被配置为将编译后的执行代码写入调试设备;或
所述烧写器被配置为将编译后的执行代码写入调试设备。
CN202310640840.3A 2023-06-01 2023-06-01 汽车开发用文本代码与图形代码的转换方法及转换系统 Active CN116663502B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202310640840.3A CN116663502B (zh) 2023-06-01 2023-06-01 汽车开发用文本代码与图形代码的转换方法及转换系统
CN202311670985.4A CN117610500A (zh) 2023-06-01 2023-06-01 汽车开发用文本代码与图形代码转换定位方法及转换系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310640840.3A CN116663502B (zh) 2023-06-01 2023-06-01 汽车开发用文本代码与图形代码的转换方法及转换系统

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN202311670985.4A Division CN117610500A (zh) 2023-06-01 2023-06-01 汽车开发用文本代码与图形代码转换定位方法及转换系统

Publications (2)

Publication Number Publication Date
CN116663502A CN116663502A (zh) 2023-08-29
CN116663502B true CN116663502B (zh) 2023-11-28

Family

ID=87720202

Family Applications (2)

Application Number Title Priority Date Filing Date
CN202310640840.3A Active CN116663502B (zh) 2023-06-01 2023-06-01 汽车开发用文本代码与图形代码的转换方法及转换系统
CN202311670985.4A Pending CN117610500A (zh) 2023-06-01 2023-06-01 汽车开发用文本代码与图形代码转换定位方法及转换系统

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN202311670985.4A Pending CN117610500A (zh) 2023-06-01 2023-06-01 汽车开发用文本代码与图形代码转换定位方法及转换系统

Country Status (1)

Country Link
CN (2) CN116663502B (zh)

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106325969A (zh) * 2016-08-23 2017-01-11 上海创景计算机系统有限公司 需求变更的逆向追踪系统
CN110941426A (zh) * 2019-12-02 2020-03-31 苏州金蒲芦物联网技术有限公司 一种面向NB-IoT终端的图形化编程系统
CN113050953A (zh) * 2021-04-21 2021-06-29 平安普惠企业管理有限公司 基于注释生成代码的方法、装置及存储介质
CN113867719A (zh) * 2021-09-29 2021-12-31 上海同星智能科技有限公司 软件平台用第三方程序库函数拆解调用方法及调用系统
CN113961238A (zh) * 2021-10-27 2022-01-21 国网信息通信产业集团有限公司 对象转换方法、装置及电子设备和存储介质
CN114968345A (zh) * 2022-04-06 2022-08-30 统信软件技术有限公司 代码处理方法、系统、计算设备及存储介质
CN115202665A (zh) * 2022-06-22 2022-10-18 中国平安财产保险股份有限公司 安卓编译期api替换方法、装置、计算机设备及存储介质
CN115794054A (zh) * 2022-11-15 2023-03-14 平安付科技服务有限公司 代码生成方法、装置、存储介质及计算机设备
CN115857905A (zh) * 2022-12-26 2023-03-28 深圳市优必选科技股份有限公司 图形化编程的代码转换方法、装置、电子设备及存储介质
CN115934054A (zh) * 2022-12-23 2023-04-07 郑州森鹏电子技术股份有限公司 一种基于卡车车身控制器的嵌入式软件生成方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9501202B2 (en) * 2013-03-15 2016-11-22 Palantir Technologies, Inc. Computer graphical user interface with genomic workflow

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106325969A (zh) * 2016-08-23 2017-01-11 上海创景计算机系统有限公司 需求变更的逆向追踪系统
CN110941426A (zh) * 2019-12-02 2020-03-31 苏州金蒲芦物联网技术有限公司 一种面向NB-IoT终端的图形化编程系统
CN113050953A (zh) * 2021-04-21 2021-06-29 平安普惠企业管理有限公司 基于注释生成代码的方法、装置及存储介质
CN113867719A (zh) * 2021-09-29 2021-12-31 上海同星智能科技有限公司 软件平台用第三方程序库函数拆解调用方法及调用系统
CN113961238A (zh) * 2021-10-27 2022-01-21 国网信息通信产业集团有限公司 对象转换方法、装置及电子设备和存储介质
CN114968345A (zh) * 2022-04-06 2022-08-30 统信软件技术有限公司 代码处理方法、系统、计算设备及存储介质
CN115202665A (zh) * 2022-06-22 2022-10-18 中国平安财产保险股份有限公司 安卓编译期api替换方法、装置、计算机设备及存储介质
CN115794054A (zh) * 2022-11-15 2023-03-14 平安付科技服务有限公司 代码生成方法、装置、存储介质及计算机设备
CN115934054A (zh) * 2022-12-23 2023-04-07 郑州森鹏电子技术股份有限公司 一种基于卡车车身控制器的嵌入式软件生成方法
CN115857905A (zh) * 2022-12-26 2023-03-28 深圳市优必选科技股份有限公司 图形化编程的代码转换方法、装置、电子设备及存储介质

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
FPGA并行逆向关键技术研究;李东升;中国优秀硕士学位论文全文数据库 信息科技辑;I135-1089 *
基于RTW的驱动代码快速生成技术研究;冯辉宗;朱澎;蒋建春;;计算机应用与软件;第33卷(第3期);226-228 *
基于Simulink/RTW的RTX系统仿真建模方法;沈楷 等;计算机测量与控制(第2期);566-568, 571 *

Also Published As

Publication number Publication date
CN116663502A (zh) 2023-08-29
CN117610500A (zh) 2024-02-27

Similar Documents

Publication Publication Date Title
US9892144B2 (en) Methods for in-place access of serialized data
US9280442B1 (en) System and method for generating coverage reports for software unit tests
US9134966B2 (en) Management of mixed programming languages for a simulation environment
CN108595184B (zh) 代码转换方法、装置、计算机存储介质和代码转换终端
CN105164641A (zh) 扩展开发环境
CN108920496B (zh) 一种渲染方法及装置
US8839218B2 (en) Diagnosing alias violations in memory access commands in source code
CN102707982A (zh) 托管汇编件的增量式生成
US20170315830A1 (en) On-demand loading of dynamic scripting language code for reduced memory usage
CN108037913B (zh) xUML4MC模型到MSVL语言程序的转换方法、计算机可读存储介质
CN111198868A (zh) 一种智能分库实时数据迁移方法和装置
CN113296786A (zh) 数据处理方法、装置、电子设备及存储介质
CN114047970A (zh) 一种autosar架构软件的配置方法及系统
WO2019227899A1 (zh) 程序调用解耦
CN116663502B (zh) 汽车开发用文本代码与图形代码的转换方法及转换系统
CN109558121A (zh) 接口驱动程序的开发方法、装置、设备及存储介质
US20150121051A1 (en) Kernel functionality checker
Basit-Ur-Rahim et al. Parallel verification of UML using DiVinE tool
US20130111431A1 (en) Validation of a system model including an activity diagram
CN108132783A (zh) 一种Web App的配置方法及装置
CN108536583B (zh) 自动化测试的断言方法、装置、计算机设备及存储介质
CN110737431A (zh) 软件开发方法、开发平台、终端设备及存储介质
US20220365762A1 (en) Neural network model conversion method server, and storage medium
CN112464636A (zh) 约束文件的比较方法、装置、电子设备和存储介质
CN112286594B (zh) 对象序列化和反序列化方法及设备、电子设备和介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant