【背景】
得到了某个Hart设备的eddl文件,其中有对应的COMMAND的定义:
COMMAND set_actuator_function { ... RESPONSE_CODES { 0, SUCCESS, [no_command_specific_errors]; 2, DATA_ENTRY_ERROR, [invalid_selection]; 3, DATA_ENTRY_ERROR, [passed_parameter_too_large]; 4, DATA_ENTRY_ERROR, [passed_parameter_too_small]; 5, MISC_ERROR, [too_few_data_bytes_recieved]; 6, MISC_ERROR, [xmtr_specific_command_error]; 7, MODE_ERROR, [in_write_protect_mode]; 9, DATA_ENTRY_ERROR, [lower_range_value_too_high]; 10, DATA_ENTRY_ERROR, [lower_range_value_too_low]; 11, DATA_ENTRY_ERROR, [upper_range_value_too_high]; 12, DATA_ENTRY_ERROR, [upper_range_value_too_low]; 13, DATA_ENTRY_ERROR, [URV_and_LRV_out_of_limits]; 14, DATA_ENTRY_ERROR, [span_too_small]; 16, MODE_ERROR, [access_restricted]; } }
现在,想要搞懂,对应的[no_command_specific_errors]的值,到底是多少。
【折腾过程】
1.网上搜了一堆。
发现别的,很多人,写的ddl文件中:
HART Device Description Language: an example
等等,也是用了同样的写法。
所以很明显,这个是那个import类型的值,是导入的官网实现定义好的值。
2。后来在:
Thermal Mass Flowmeter Sensyflow FMT500-IG HART protocol 6.0 Valid for software levels from 1.85
中看到,具体的字符串的解释是:
Response Codes 0 No Command-Specific Errors 6 Transmitter-Specific Command Error 8 Warning: Update Failure 16 Access Restricted 32 Busy
所以猜测,难道就只是个对应的字符串:
“No Command-Specific Errors”
而已?
【总结】
后来的后来,经过别人的解释,终于明白了:
[hello]
之类的东西,中的hello,是个字符串变量;
表示该字符串是个,和当前语言相关的字符串。
而该变量的值,是放在别的文件中定义的。比如某个xml文件中。
其中的定义,类似于这样的值:
en: "hello"
zh:"你好"
等等,
当,用于解析dd的,DD解析器,当前设置的是中文,则显示对应的中文的“你好”,而如果换成英文,则显示对应的"hello"
说白了,就是
xxx本身是,和语言无关的,单个字符串变量,是个固定的值;
而[xxx],用来支持多国语言的显示而已,可以根据语言不同,显示不同语言的字符串。
而对应的xxx的值,是放在另外的,专门的(比如xml)文件中定义的。
dd解析器,在解析dd文件时,会去加载对应的值的。
转载请注明:在路上 » 【记录】查询Hart的DDL文件中的COMMAND中的RESPONSE_CODES的[no_command_specific_errors]值到底是多少