基于can总线的A2L文件解析(1)
文章目录
- 建议:
- 数据区
- Record Layout
- FNC\_VALUES
- AXIS\_PTS\_X
- 数值型:
- 坐标轴:
- 标定量CHARACTERISTIC
- 数值型标定量
- Simulink生成A2L中的标定量:
- 加入地址后的标定量:
- **CANAPE\_EXT**
- 一维查表标定量
- Simulink生成A2L中的标定量:
- 加入地址后的标定量:
- 二维查表标定量
- Simulink生成A2L中的标定量:
- 加入地址后的标定量:
- 观测量MEASUREMENT
- 数值观测量
- Simulink生成A2L中的观测量:
- 加入地址后的观测量:
- 一维数组观测量
- Simulink生成A2L中的观测量:
- 加入地址后的观测量:
- Conversion Method
- GROUP
- A2L文件预定义类型
- datatype
- Type
- ConversionType
- COEFFS-可选参数
- COEFFS\_LINEAR-可选参数
- FORMULA-可选参数
- REF\_UNIT-可选参数
- STATUS\_STRING\_REF-可选参数
- IndexMode-针对于数据
- indexorder-针对于坐标轴
- addrtype
- AxisType
对于一个完整的A2L文件,应该包含总线的信息,如果是can总线应该包含波特率、CAN ID等,其次就是支持实现的功能CTO/DTO等,应该还有观测量和标定量的信息(地址,名称等),一般simulink生成的A2L中是不带地址信息的,需要后面通过带有地址信息的可执行文件来 填充地址,一般采用工具自动实现填充。
为了方便理解,将A2L的内容分为两个区: 协议区和数据区。
A2L文件大部分内容都是属于数据区,存放了数据的描述信息。本文先介绍数据区。
建议:
若文中类容的参数定义看不懂,可以ctrl+f搜索本文,应该可以找到对应的解释。或者直接参考ASAM MCD-2
数据区
Record Layout
为A2L文件中的其他变量提供布局方式
FNC_VALUES
有4个参数:
Position:table values在structure中的位置,基本都是1
DataType:见A2L文件预定义类型[datatype类型],根据实际定义变量的类型来
IndexMode:见A2L文件预定义类型[IndexMode类型],
AddressType:见A2L文件预定义类型[addrtype类型]
AXIS_PTS_X
有4个参数:
Position:axis point values在structure中的位置,基本都是1
DataType:见A2L文件预定义类型[datatype类型],根据实际定义变量的类型来
indexorder:见A2L文件预定义类型[indexorder类型],一般都是INDEX_INCR,递增
AddressType:见A2L文件预定义类型[addrtype类型]
数值型:
/begin RECORD_LAYOUT Scalar_BOOLEANFNC_VALUES 1 UBYTE COLUMN_DIR DIRECT/end RECORD_LAYOUT
坐标轴:
/begin RECORD_LAYOUT Lookup1D_X_FLOAT32_IEEEAXIS_PTS_X 1 FLOAT32_IEEE INDEX_INCR DIRECT/end RECORD_LAYOUT
基本AddressType都是DIRECT
标定量CHARACTERISTIC
数值型标定量
Simulink生成A2L中的标定量:
/begin CHARACTERISTIC/* Name */ MyParameter_C /* Long Identifier标定量描述 */ "this is my Parameter"/* Type */ VALUE /* ECU Address */ 0x0000 /* @ECU_Address@MyParameter_C@ */ /* Record Layout */ Scalar_UWORD /* Maximum Difference */ 0 /* Conversion Method */ CM_unitless /* Lower Limit */ 0.0 /* Upper Limit */ 65535.0/end CHARACTERISTIC
在上述标定量中,可以看到标定参数以下信息:
名称,描述,类型,地址(没有给值),布局(A2L文件中Record Layout定义)
Maximum Difference:关于表值调整的最大浮动(注:该值被解释为绝对值,而不是百分比)
转换方法(A2L文件中Conversion Method定义),最小值,最大值
加入地址后的标定量:
/begin CHARACTERISTIC MyParameter_C "this is my Parameter"VALUE 0x80182F3C Scalar_UWORD_S1 0 CM_unitless_S1 0 65535SYMBOL_LINK "MyParameter_C" 0/begin IF_DATA CANAPE_EXT 100LINK_MAP "MyParameter_C" 0x80182F3C 0 0 0 0 0 0/end IF_DATA/end CHARACTERISTIC
由于是多个A2L文件融合,并给定地址,所以Record Layout和Conversion Method后都跟了一个参数,用作区分,此处可以看到地址信息已经加入进来了。
多了参数:
SYMBOL_LINK:引用 linker map文件中的符号名称。 后面跟的数字是Offset,符号相对于 linker map文件中符号地址的偏移量,一般都是0
IF_DATA:数据记录,用于描述CHARACTERISTIC的接口特定数据。必须在ASAM MCD-2MC元语言中描述与此关键字相关的参数 ,在协议区中定义了CANAPE_EXT结构
CANAPE_EXT
"CANAPE_EXT" struct {int; // version number, must be 100taggedstruct {"LINK_MAP" struct {char[256]; // symbol name in MAP filelong; // symbol base address in MAP file 基础地址uint; // address extension 扩展地址uint; // flag: address is relative to DSlong; // address offset to the symbol base addressuint; // flag: data type information is validuint; // data type of symbol in MAP file (CANape internal data type representation)uint; // bit offset of the symbol in MAP file};"DISPLAY" struct {long; // display colordouble; // minimal display value (phys)double; // maximal display value (phys)};"VIRTUAL_CONVERSION" struct {char[256]; // name of the (additional) conversion formula};};};
100,表示的是版本,后面是LINK_MAP中的参数和地址信息
一维查表标定量
Simulink生成A2L中的标定量:
/begin CHARACTERISTIC /* Name */ MyParameter_T/* Long Identifier */ "this is my Parameter T"/* Characteristic Type */ CURVE/* ECU Address */ 0x0000 /* @ECU_Address@MyParameter_T@ *//* Record Layout */ Lookup1D_WORD/* Maxdiff */ 0/* Conversion Method */ CM_mm/* Lower Limit */ -500.0/* Upper Limit */ 500.0/begin AXIS_DESCR /* Description of X-Axis Points *//* Axis Type */ COM_AXIS/* Reference to Input */ Input/* Conversion Method */ CM_km_h/* Number of Axis Pts */ 6/* Lower Limit */ 0.0/* Upper Limit */ 360.0AXIS_PTS_REF MyParameter_Ax/end AXIS_DESCR/end CHARACTERISTIC/begin AXIS_PTS/* Name */ MyParameter_Ax/* Long Identifier */ "This is MyParameter_Ax"/* ECU Address */ 0x0000 /* @ECU_Address@MyParameter_Ax@ *//* Input Quantity */ Input/* Record Layout */ Lookup1D_X_UWORD/* Maximum Difference */ 0/* Conversion Method */ CM_km_h/* Number of Axis Pts */ 6/* Lower Limit */ 0.0/* Upper Limit */ 360.0/end AXIS_PTS
一维查表有两个轴,根据输入值,按X轴查对应的Y轴,得到对应的参数。
相对于数值型标定量,多了轴的描述.Axis Type见预定义类型AxisType。
Reference to Input:关于输入量的描述,请参考数据记录(参见MEASUREMENT)。如果未分配输入量,参数“InputQuantity”应设置为"NO_INPUT_QUANTITY"(测量和标定系统必须能够处理这种情况)。
Number of Axis Pts:轴点的最大数量(注:测量和标定系统可以改变characteristic的大小(增加或减少轴点的数量)。轴点的数量不能随意增加,因为测量和标定系统为ECU程序中的每个characteristic保留的地址范围不能更改。)
AXIS_PTS_REF:有关轴点分布的描述,请参考AXIS_PTS记录。
AXIS_PTS主要描述轴的信息,也是标定量的一部分。
加入地址后的标定量:
/begin CHARACTERISTIC MyParameter_T "this is my Parameter T"CURVE 0x801803CC Lookup1D_WORD_S1 0 CM_mm_s_S1 -500 500/begin AXIS_DESCRCOM_AXIS Input CM_km_h_S1 6 0 360AXIS_PTS_REF MyParameter_Ax/end AXIS_DESCRSYMBOL_LINK "MyParameter_T" 0/begin IF_DATA CANAPE_EXT 100LINK_MAP "MyParameter_T" 0x801803CC 0 0 0 0 0 0/end IF_DATA/end CHARACTERISTIC/begin AXIS_PTS MyParameter_Ax "This is MyParameter_Ax"0x801803A6 Input Lookup1D_X_UWORD_S1 0 CM_km_h_S1 6 0 360SYMBOL_LINK "MyParameter_Ax" 0/begin IF_DATA CANAPE_EXT 100LINK_MAP "MyParameter_Ax" 0x801803A6 0 0 0 0 0 0/end IF_DATA/end AXIS_PTS
SYMBOL_LINK和CANAPE_EXT在上面一节已经说过,此处不再重复。
对于一维查表来说,ECU地址都是标定数组的首地址。
二维查表标定量
Simulink生成A2L中的标定量:
/begin CHARACTERISTIC /* Name */ MyParameter_M/* Long Identifier */ "This is MyParameter_M"/* Characteristic Type */ MAP/* ECU Address */ 0x0000 /* @ECU_Address@MyParameter_M@ *//* Record Layout */ Lookup2D_UBYTE/* Maxdiff */ 0/* Conversion Method */ CM_percent/* Lower Limit */ 0.0/* Upper Limit */ 100.0/begin AXIS_DESCR /* Description of X-Axis Points *//* Axis Type */ COM_AXIS/* Reference to Input */ Input1/* Conversion Method */ CM_unitless/* Number of Axis Pts */ 3/* Lower Limit */ 0.0/* Upper Limit */ 10.0AXIS_PTS_REF MyParameter_x_Ax/end AXIS_DESCR/begin AXIS_DESCR /* Description of Y-Axis Points *//* Axis Type */ COM_AXIS/* Reference to Input */ Input2/* Conversion Method */ CM_km_h/* Number of Axis Pts */ 9/* Lower Limit */ 0.0/* Upper Limit */ 360.0AXIS_PTS_REF MyParameter_y_Ax/end AXIS_DESCR/end CHARACTERISTIC/begin AXIS_PTS/* Name */ MyParameter_x_Ax/* Long Identifier */ "This is MyParameter_x_Ax"/* ECU Address */ 0x0000 /* @ECU_Address@MyParameter_x_Ax@ *//* Input Quantity */ Input1/* Record Layout */ Lookup2D_X_UBYTE/* Maximum Difference */ 0/* Conversion Method */ CM_uint8_unitless/* Number of Axis Pts */ 3/* Lower Limit */ 0.0/* Upper Limit */ 10.0/end AXIS_PTS/begin AXIS_PTS/* Name */ MyParameter_y_Ax/* Long Identifier */ "This is MyParameter_y_Ax"/* ECU Address */ 0x0000 /* @ECU_Address@MyParameter_y_Ax@ *//* Input Quantity */ Input2/* Record Layout */ Lookup2D_X_UWORD/* Maximum Difference */ 0/* Conversion Method */ CM_km_h/* Number of Axis Pts */ 9/* Lower Limit */ 0.0/* Upper Limit */ 360.0/end AXIS_PTS
二维查表相对于一维查表只是多了一个Y轴,根据两个输入值,查X轴和Y轴,共同决定最终的输出值,查的map为二维数组。
加入地址后的标定量:
/begin CHARACTERISTIC MyParameter_M "This is MyParameter_M"MAP 0x801830F6 Lookup2D_UBYTE_S1 0 CM_percent_S1 0 100/begin AXIS_DESCRCOM_AXIS Input1 CM_unitless_S1 3 0 10AXIS_PTS_REF MyParameter_x_Ax/end AXIS_DESCR/begin AXIS_DESCRCOM_AXIS Input2 CM_km_h_S1 9 0 360AXIS_PTS_REF MyParameter_y_Ax/end AXIS_DESCRSYMBOL_LINK "MyParameter_M" 0/begin IF_DATA CANAPE_EXT 100LINK_MAP "MyParameter_M" 0x801830F6 0 0 0 0 0 0/end IF_DATA/end CHARACTERISTIC/begin AXIS_PTS MyParameter_x_Ax "This is MyParameter_x_Ax"0x80183443 Input1 Lookup2D_X_UBYTE_S1 0 CM_unitless_S1 3 0 10SYMBOL_LINK "MyParameter_x_Ax" 0/begin IF_DATA CANAPE_EXT 100LINK_MAP "MyParameter_x_Ax" 0x80183443 0 0 0 0 0 0/end IF_DATA/end AXIS_PTS/begin AXIS_PTS MyParameter_y_Ax "This is MyParameter_y_Ax"0x801830A4 CDCInput_VehSpd Lookup2D_X_UWORD_S1 0 CM_km_h_S1 9 0 360SYMBOL_LINK "MyParameter_y_Ax" 0/begin IF_DATA CANAPE_EXT 100LINK_MAP "MyParameter_y_Ax" 0x801830A4 0 0 0 0 0 0/end IF_DATA/end AXIS_PTS
轴的定义不一定和map在一起,因为可能很多地方都会用到这个轴,本文放在一起只是为了好看一些。
此处MyParameter_M的地址表示为二维数组的首地址。
观测量MEASUREMENT
数值观测量
Simulink生成A2L中的观测量:
/begin MEASUREMENT/* Name */ MyMEASUREMENT/* Long identifier */ "This is MyMEASUREMENT "/* Data type */ UBYTE/* Conversion method */ CM_unitless/* Resolution (Not used) */ 0/* Accuracy (Not used) */ 0/* Lower limit */ 0.0/* Upper limit */ 1.0ECU_ADDRESS 0x0000 /* @ECU_Address@MyMEASUREMENT@ *//end MEASUREMENT
观测量中有两个参数未使用:
Resolution:最小可能的位变化,也就是精度
Accuracy:可能与精确值的偏差(%),其他的参数应该都比较好理解了。
加入地址后的观测量:
/begin MEASUREMENT MyMEASUREMENT "This is MyMEASUREMENT"UBYTE CM_unitless 0 0 0 1ECU_ADDRESS 0x700132C0SYMBOL_LINK "MyMEASUREMENT" 0/begin IF_DATA CANAPE_EXT 100LINK_MAP "MyMEASUREMENT" 0x700132C0 0 0 0 0 0 0/end IF_DATA/end MEASUREMENT
一维数组观测量
Simulink生成A2L中的观测量:
/begin MEASUREMENT/* Name */ MyMEASUREMENT_T/* Long identifier */ "This is MyMEASUREMENT_T"/* Data type */ UBYTE/* Conversion method */ CM_boolean/* Resolution (Not used) */ 0/* Accuracy (Not used) */ 0/* Lower limit */ 0/* Upper limit */ 1/* Array Size */ARRAY_SIZE 4ECU_ADDRESS 0x0000 /* @ECU_Address@MyMEASUREMENT_T@ *//end MEASUREMENT
相对于数值,数组多了一个ARRAY_SIZE,很好理解,也就是数组的大小
加入地址后的观测量:
/begin MEASUREMENT MyMEASUREMENT_T "This is MyMEASUREMENT_T"UBYTE CM_boolean_S2 0 0 0 1ECU_ADDRESS 0x70013456MATRIX_DIM 4 1 1SYMBOL_LINK "MyMEASUREMENT_T" 0/begin IF_DATA CANAPE_EXT 100LINK_MAP "MyMEASUREMENT_T" 0x70013456 0 0 0 0 0 0/end IF_DATA/end MEASUREMENT
此处ARRAY_SIZE变成了MATRIX_DIM,
MATRIX_DIM:显示多维度量的大小和维度。如果使用MATRIX_DIM关键字,则不需要ARRAY_SIZE选项。但是,如果同时使用关键字ARRAY_SIZE和MATRIX_DIM,则ARRAY_SIZE中的结果值必须与MATRIX_DIM的xDimyDimzDim相同。如果缺少关键字,则数组只有一个尺寸为ARRAY_SIZE的维度。
参数:
xDim-x维度中的值数
yDim-y维度中的值数
zDim-z维度中的值数
此处MATRIX_DIM4 1 1 和ARRAY_SIZE 4表示的结果是一样的。
Conversion Method
数据的转换方式
必选参数有:名称Name,LongIdentifier描述,ConversionType 转换类型,Format精度,Units单位
可选参数有:COEFFS,COEFFS_LINEAR,COMPU_TAB_REF,FORMULA,REF_UNIT(见预定义类型中的对应项)
/begin COMPU_METHOD/* Name of CompuMethod */ CM_unitless/* Long identifier */ "This is My CompuMethod"/* Conversion Type */ RAT_FUNC/* Format */ "%3.0"/* Units */ "unitless"/* Coefficients */ COEFFS 0 1 0 0 0 1/end COMPU_METHOD
此处Conversion Type设置为RAT_FUNC,则为有理转换,0 1 0 0 0 1代表abcdef参数。
GROUP
将标定量和观测量分类,对于Simulink模型来说,是按模块来分类的。每个模块会单独划分一个组。
在标定软件中,可以看到组的定义,及里面的标定量和观测量。
/begin GROUP /* Name */ S252_MyGROUP /* Long identifier */ "This is S252_MyGROUP"/begin REF_CHARACTERISTICMyParameter_CMyParameter_TMyParameter_M/end REF_CHARACTERISTIC/begin REF_MEASUREMENTMyMEASUREMENTMyMEASUREMENT_T/end REF_MEASUREMENT/end GROUP
Name:在ASAM MCD-2MC模块的所有组中,组的名称必须是唯一的,即模块中不得有另一个具有相同标识符的组对象。
REF_CHARACTERISTIC:后面定义需要加入组的标定量,只能是CHARACTERISTIC或AXIS_PTS.
REF_MEASUREMENT:后面定义需要加入组的观测量
对应到实际A2L中,只是组名称后面加了一个字符,用来区分不同的A2L的融合。
A2L文件预定义类型
datatype
Data Type |
Signedness |
Bit Width |
Format |
UBYTE |
unsigned |
8 |
unsigned integer 1字节无符号整型 |
SBYTE |
signed |
8 |
two's complement integer 1字节有符号整型 |
UWORD |
unsigned |
16 |
unsigned integer 2字节无符号整型 |
SWORD |
signed |
16 |
two's complement integer 2字节有符号整型 |
ULONG |
unsigned |
32 |
unsigned integer 4字节无符号整型 |
SLONG |
signed |
32 |
two's complement integer 4字节有符号整型 |
A_UINT64 |
unsigned |
64 |
unsigned integer 8字节无符号整型 |
A_INT64 |
signed |
64 |
two's complement integer 8字节有符号整型 |
FLOAT32_IEEE |
signed |
32 |
IEEE 754 single precision 4字节浮点型 |
FLOAT64_IEEE |
signed |
64 |
IEEE 754 double precision 8字节浮点型 |
Type
Type类型 |
描述 |
VALUE |
值 |
CURVE |
一维查表 |
MAP |
二维查表 |
CUBOID |
三维查表 |
CUBE_4 |
四维查表 |
CUBE_5 |
五维查表 |
VAL_BLK |
无轴数组 |
ASCII |
字符串 |
ConversionType
ConversionType类型 |
描述 |
RAT_FUNC |
有理转换Rational, f(x)=(axx + bx + c)/(dxx + ex + f) INT = f(PHYS) 系数a、b、c、d、e、f必须由COEFFS关键字指定 |
IDENTICAL |
不转换,PHYS = INT |
FORM |
根据FORMULA键字指定的公式进行转换。 |
LINEAR |
以下类型的线性函数:f(x)=ax+b PHYS=f(INT) 系数a和b必须由COEFFS_LINEAR关键字指定 |
TAB_INTP |
带插值的表格 |
TAB_NOINTP |
无插值的表格 |
TAB_VERB |
字符表转换Verbal Table |
对于线性函数,使用ConversionType linear;对于ident函数,使用ConversionType
IDENTICAL。对于非线性函数,必须能够在所使用的AXIS_PTS,、CHARACTERISTIC或MEASUREMENT范围内反转公式。否则,请使用ConversionType FORM.
COEFFS-可选参数
该关键字用于为以下类型的分数有理函数指定系数a、b、c、d、e、f:
f(x)=(axx + bx + c) / (dxx + ex + f)
Example:
COEFFS 0 4 8 0 0 5
/* Control unit internal values of revolutions (INT) is calculated from */
/* physical values (PHYS: unit of PHYS is [rpm]) as follows: */
/* INT = (4/5) * PHYS/[rpm] + (8/5) */
/* inverted: PHYS/[rpm] = 1.25 * INT - 2.0 */
COEFFS_LINEAR-可选参数
此关键字用于指定以下类型的线性函数的系数a和b:
f(x)=ax + b
FORMULA-可选参数
用于转换的公式
REF_UNIT-可选参数
此关键字用于引用测量单位(例如,单位类型的对象)。字符串参数单位是冗余信息,因为REF_UNIT引用的记录也包含该信息。仅为了与先前版本的ASAM MCD-2MC兼容,参数REF_UNIT是可选的。
STATUS_STRING_REF-可选参数
此关键字用于将ECU内部值的值范围分为数字部分和文字部分。文字部分可用于可视化状态信息(例如,“传感器未连接”)。
IndexMode-针对于数据
IndexMode类型 |
描述 |
COLUMN_DIR |
deposited in columns按列存放 |
ROW_DIR |
deposited in rows按行存放 |
indexorder-针对于坐标轴
indexorder类型 |
描述 |
INDEX_INCR |
随着地址的增加而增加索引 |
INDEX_DECR |
随着地址的增加而减少索引 |
addrtype
addrtype类型 |
描述 |
PBYTE |
相关内存位置有一个指向该表值或轴点值的1字节指针 |
PWORD |
相关内存位置有一个指向该表值或轴点值的2字节指针 |
PLONG |
相关内存位置有一个指向该表值或轴点值的4字节指针 |
DIRECT |
相关的内存位置具有第一个表值或轴点值,所有其他的都跟随递增地址 |
AxisType
AxisType类型 |
描述 |
CURVE_AXIS |
曲线轴。此轴类型使用单独的CURVE CHARACTERISTIC来重新缩放轴。参考曲线用于查找轴索引,控制器使用索引值确定CURVE 或MAP中的操作点。 |
COM_AXIS |
对轴点进行分组或对轴点进行描述以进行存放。对于这种轴点变体,轴点值与仿真内存中curve或map的表值分离,并且必须通过特殊的AXIS_PTS数据记录进行描述。对该记录的引用使用关键字'AXIS_PTS_REF'。 |
FIX_AXIS |
这是一条曲线或一张带有虚拟轴点的地图,这些虚拟轴点未存放在EPROM上。轴点可以根据使用关键字FIX_AXIS_PAR,FIX_AXIS_PAR_DIST,FIX_AXIS_PAR_LIST定义的参数计算。无法修改轴点。 |
RES_AXIS |
重新缩放轴。对于这种轴点变体,轴点值为与仿真内存中curve或map的表值分离 并且必须通过特殊的AXIS_PTS数据记录进行描述。对该记录的引用使用关键字'AXIS_PTS_REF'。 |
STD_AXIS |
标准轴 |
目前用到的就这些参数定义,如果后面遇到新的,还会持续更新~~
你的点赞,收藏,关注,转发是对小弟的最大支持~~~~
建了一个WX公众号,《汽车电子学习笔记》感兴趣可以关注一下,有问题可以与我留言交流~~~
基于can总线的A2L文件解析(1)相关推荐
- 【Python文本处理】基于运动路线记录GPX文件解析,心率、速度、时间、功率、踏频、海拔等参数的生成和更改,以及GPX循环拼接
[Python文本处理]基于运动路线记录GPX文件解析,心率.速度.时间.功率.踏频.海拔等参数的生成和更改,以及GPX循环拼接 GPX文件本身其实就是坐标.海拔.时间.心率等综合性的xml文件 如图 ...
- 如何快速生成A2L文件(ASAP2 Studio):基于“前一版本A2L文件+最新map文件”生成新map文件对应A2L文件
目录 一.ASAP2 Studio概述: 二.如何在ASAP2 Studio中利用"前一版本A2L文件+最新map文件"生成新map文件对应A2L文件: 2.1 在ASAP2 St ...
- XCP协议和A2L文件–A2L(ASAP2)解析
转载自:http://blog.sina.com.cn/s/blog_4adc0d850102ywb2.html ASAP2标准是一个比较复杂的标准,详细的一条一条讲解标准内容并没有太大的价值,我们将 ...
- X-Analyser 总线分析软件:CANopen、1939解析、UDS诊断、NMEA2000 协议解析、DBC文件解析、仿真工具、CAN报文分析、仿CANoe曲线显示 CAN仪表模拟器
X-Analyser 总线分析软件主要用于:CANopen协议解析.J1939解析 J1939地址ISO15765(UDS诊断) .NMEA2000 协议解析.DBC文件解析 DBC仿真工具.CANo ...
- python中的doc_基于Python获取docx/doc文件内容代码解析
这篇文章主要介绍了基于Python获取docx/doc文件内容代码解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 整体思路: 下载文件并修改后缀 ...
- python解析log文件_python解析基于xml格式的日志文件
大家中午好,由于过年一直还没回到状态,好久没分享一波小知识了,今天,继续给大家分享一波Python解析日志的小脚本. 首先,同样的先看看日志是个啥样. 都是xml格式的,是不是看着就头晕了??没事,我 ...
- dom4j工具类_基于DOM4J的XML文件解析类
XML文件解析分四类方式:DOM解析:SAX解析:JDOM解析:DOM4J解析.其中前两种属于基础方法,是官方提供的平台无关的解析方式:后两种属于扩展方法,它们是在基础的方法上扩展出来的,只适用于ja ...
- php解析torrent文件,PHP基于闭包思想实现的BT(torrent)文件解析工具实例详解
本文实例讲述了PHP基于闭包思想实现的torrent文件解析工具.分享给大家供大家参考,具体如下: PHP对静态词法域的支持有点奇怪,内部匿名函数必须在参数列表后面加上use关键字,显式的说明想要使用 ...
- 基于c的xml文件解析(转)
libxml(一) 摘要 Libxml是个有免费许可的用于处理XML.能轻松跨越多个平台的C语言库.这个指南提供他的基本函数的例子. 绪论 Libxml是个实现读.创建及操纵XML数据功能的C语言库. ...
最新文章
- 信息与计算机科学好学吗,计算机科学与技术好学吗?
- Java的挥发性修饰符
- 什么是3G-SDI光端机?
- Mac python Tesseract 验证码识别
- [css] 要让Chrome支持小于12px的文字怎么做?
- 将桌面文件动态保存到D盘
- c++对象模型大总结:第1-4章、对象初探与构造函数
- java rtmp录制视频_red5-rtmp-push
- qt tabwidget 设置tab 位置_qml创建TabWidget的案例
- android qq钱包接入,QQ
- 冯乐乐之三,SHADERLAB入门
- 343.微生物组研究写作的一般思路
- ***WIN2003 PHP服务器的另类技术
- Android遥控器开发
- 自学Python之后如果不去公司上班,自己可以通过此技能挣什么钱?
- 使用 JAVA Swing 构建 Sftp 桌面连接工具
- 操作系统课程设计——Shell编程(用c编写一个Linux的外壳Shell)
- 清理Xcode占用的Mac硬盘空间
- Dynamics 365本地部署版本配置OAuth 2 Password Grant以调用Web API
- 视频去水印工具哪个好用
热门文章
- matlab 高精度无理数,如何从MatLab上的无理数产生近似分数?
- FFmpeg源代码简单分析-其他-日志输出系统(av_log()等)
- Linux中不同MTD设备分区,Linux MTD设备总结
- 微信小程序 - 基本原理
- Chrome 浏览器 模糊的解决方法
- LiveData详解
- Springboot毕设项目健康在线服务平台26iy0(java+VUE+Mybatis+Maven+Mysql)
- 1w存银行一年多少利息_100万存银行1年能有多少钱利息?
- Image.save()
- 电脑打开“我的电脑”、“资源管理器”很慢的解决办法。