文章目录
一、automation 自动化
官方示例路径:C:\Users\Public\Documents\Vector\vFlash\10\Examples\Automation\vFlashAutomation
使用 VFlash Automation 需要有能刷写成功的工程。在 VFlash 中将工程保存为 Pack&Go 工程,文件后缀名为 .vflashpack
二、custom actions 自定义动作
官方示例路径:C:\Users\Public\Documents\Vector\vFlash\10\Examples\CustomActions
- 根据上方参考地址,或者参考下图找到官方示例
- 以
CustomActionAttributes
示例工程为例,首先将该工程下的CDD文件替换为自己实际使用的CDD文件
- 主要关注
Execute
函数的实现,该函数实现的内容即为Pre Action
或者Post Action
执行的内容
- 获取可发送诊断请求的ECU对象
// Get ECU object to which diagnostic requests can be sent
Ecu ecu = Application.GetEcu();
- 发送诊断请求
using (Request request = ecu.CreateRequest("ExtendedDiagnosticSession_Start"))
{
request.Send();
}
- 读取DID
// ---------------------------------------------------------
// Service: Software_Version_Read (Signature: [0x] 22 F1 89)
// ---------------------------------------------------------
{
using (Request request = ecu.CreateRequest("Software_Version_Read"))
{
// Send the request
SendResult result = request.Send();
if (result.Status == SendStatus.Ok)
{
// Get the response
using (Response response = result.Response)
{
if (response != null && response.IsPositive)
{
// Get parameter "SoftwareVersion" from response
Parameter softwareVersionParam = response.GetParameter("SoftwareVersion");
if (softwareVersionParam != null)
{
return softwareVersionParam.Value.ToString(); // parameter value: "1.0.0"
}
}
}
}
}
}
常用方法
controlHandle.SkipFlashing = true;
:跳过刷写
如何选择要发送的诊断请求
当要发送诊断请求时,需要调用ecu.CreateRequest("ExtendedDiagnosticSession_Start")
,传入的参数为字符串,而字符串则代表了我们需要发送的诊断请求。
字符串主要分为两部分:Name_Supported Service
字符串中不能有空格,当Name中包含空格时,使用下划线。
当调用 response.GetParameter("SoftwareVersion")
时,同样字符串中不能有空格,当Name中包含空格时,需要删除空格。
CustomActionValueList 作用
在一个 vFlash 项目中,自定义操作值列表CustomActionValueList
的标识符应该是唯一的。
用户可以通过 VFlash 设置其值,例如创建如下标识符:
[CustomActionValueList("Skip flashing if voltage is low", new[] { "Yes", "No" }, DefaultSelection = "No" ]
// 获取值
customActionConfig.CustomActionValueListContainer.GetCustomActionValueList("Skip flashing if voltage is low").Selection;
Pre Action和Post Action之间交换信息
通过 CustomActionAttribute
,需要注意的是,在 PreAction.cs
中定义后,在PostAction.cs
不能重复定义,否则会导致不能获得 PreAction.cs
设置的值。
[CustomActionAttribute("Type Identifier", CustomActionAttributeType.AsciiString, VisibleInUi = true)]
VisibleInUi = true 表示在 VFlash 窗口中显示
// 获取信息
string cATypeIdentifier = customActionConfig.CustomActionAttributeContainer.GetCustomActionAttribute("Type Identifier").ToString();
// 打印信息
Output.WriteLine(cATypeIdentifier);
// 修改信息
customActionConfig.CustomActionAttributeContainer.GetCustomActionAttribute("Type Identifier").Set("demo");
// 获取信息
cATypeIdentifier = customActionConfig.CustomActionAttributeContainer.GetCustomActionAttribute("Type Identifier").ToString();
// 打印信息
Output.WriteLine(cATypeIdentifier);
提示:如何打印软件中变量
使用 Output.WriteLine("string");
报错:无法打开源文件 Windows.h stdio.h conio.h
依次点击“项目——配置属性——C/C++——常规”,在“附加包含目录”中加入.h文件所在的文件夹路径
报错:找不到 Windows SDK 版本 10.0.17763.0