CAN FD 波特率等参数的增加和联动配置

This commit is contained in:
2025-07-09 22:15:19 +08:00
parent 6a2ce24cbb
commit 42c4502a8d
14 changed files with 430 additions and 29 deletions

View File

@@ -52,6 +52,50 @@ namespace CapMachine.Wpf.ViewModels
//MachineDataService = machineDataService;
DialogService = dialogService;
//仲裁波特率
ArbBaudRateCbxItems = new ObservableCollection<CbxItems>()
{
new CbxItems(){ Key="10000",Text="10 Kbps"},
new CbxItems(){ Key="20000",Text="20 Kbps"},
new CbxItems(){ Key="33000",Text="33 Kbps"},
new CbxItems(){ Key="50000",Text="50Kbps"},
new CbxItems(){ Key="83000",Text="83 Kbps"},
new CbxItems(){ Key="100000",Text="100 Kbps"},
new CbxItems(){ Key="125000",Text="125 Kbps"},
new CbxItems(){ Key="150000",Text="150 Kbps"},
new CbxItems(){ Key="200000",Text="200 Kbps"},
new CbxItems(){ Key="250000",Text="250 Kbps"},
new CbxItems(){ Key="300000",Text="300 Kbps"},
new CbxItems(){ Key="400000",Text="400 Kbps"},
new CbxItems(){ Key="500000",Text="500 Kbps"},
new CbxItems(){ Key="666000",Text="666 Kbps"},
new CbxItems(){ Key="800000",Text="800 Kbps"},
new CbxItems(){ Key="1000000",Text="1.0 Mbps"},
};
//数据波特率
DataBaudRateCbxItems = new ObservableCollection<CbxItems>()
{
new CbxItems(){ Key="100000",Text="100 Kbps"},
new CbxItems(){ Key="125000",Text="125 Kbps"},
new CbxItems(){ Key="200000",Text="200 Kbps"},
new CbxItems(){ Key="250000",Text="250 Kbps"},
new CbxItems(){ Key="400000",Text="400 Kbps"},
new CbxItems(){ Key="500000",Text="500 Kbps"},
new CbxItems(){ Key="666000",Text="666 Kbps"},
new CbxItems(){ Key="800000",Text="800 Kbps"},
new CbxItems(){ Key="1000000",Text="1.0 Mbps"},
new CbxItems(){ Key="1500000",Text="1.5 Mbps"},
new CbxItems(){ Key="2000000",Text="2.0 Mbps"},
new CbxItems(){ Key="3000000",Text="3.0 Mbps"},
new CbxItems(){ Key="4000000",Text="4.0 Mbps"},
new CbxItems(){ Key="5000000",Text="5.0 Mbps"},
new CbxItems(){ Key="6700000",Text="6.7 Mbps"},
new CbxItems(){ Key="8000000",Text="8.0 Mbps"},
new CbxItems(){ Key="10000000",Text="10.0 Mbps"},
};
WriteNameCbxItems = new ObservableCollection<CbxItems>()
{
new CbxItems(){ Key="转速",Text="转速"},
@@ -70,6 +114,7 @@ namespace CapMachine.Wpf.ViewModels
new CbxItems(){ Key="通讯Cmp转速",Text="通讯Cmp转速"},
new CbxItems(){ Key="通讯Cmp母线电压",Text="通讯Cmp母线电压"},
new CbxItems(){ Key="通讯Cmp母线电流",Text="通讯Cmp母线电流"},
new CbxItems(){ Key="通讯Cmp逆变器温度",Text="通讯Cmp逆变器温度"},
new CbxItems(){ Key="通讯Cmp相电流",Text="通讯Cmp相电流"},
new CbxItems(){ Key="通讯Cmp功率",Text="通讯Cmp功率"},
new CbxItems(){ Key="通讯Cmp芯片温度",Text="通讯Cmp芯片温度"},
@@ -115,7 +160,7 @@ namespace CapMachine.Wpf.ViewModels
{
//CAN配置集合数据
canLinConfigPros = FreeSql.Select<CanLinConfigPro>().Where(a => a.CANLINInfo == CANLIN.CANFD)
.Include(a => a.CANConfigExd)
.Include(a => a.CANFdConfigExd)
.IncludeMany(a => a.CanLinConfigContents)
.ToList();
@@ -126,7 +171,13 @@ namespace CapMachine.Wpf.ViewModels
//无数据就返回
if (SelectCanLinConfigPro == null) return;
SelectedCANConfigExdDto = Mapper.Map<CANConfigExdDto>(SelectCanLinConfigPro!.CANConfigExd);
SelectedCANConfigExdDto = Mapper.Map<CANFdConfigExdDto>(SelectCanLinConfigPro!.CANFdConfigExd);
if (SelectedCANConfigExdDto != null)
{
//更新波特率等配置信息
CanFdDriveService.ToomossCanFDDrive.UpdateConfig((uint)SelectedCANConfigExdDto.ArbBaudRate,
(uint)SelectedCANConfigExdDto.DataBaudRate, SelectedCANConfigExdDto.ISOEnable, SelectedCANConfigExdDto.ResEnable);
}
//配置信息
var WirteData = SelectCanLinConfigPro.CanLinConfigContents!.Where(a => a.RWInfo == RW.Write).ToList();
@@ -271,9 +322,10 @@ namespace CapMachine.Wpf.ViewModels
var ReturnValue = par.Parameters.GetValue<string>("Name");
//加载默认的数据 CANConfigExd
var InsertCANConfigExd = FreeSql.Insert<CANConfigExd>(new CANConfigExd()
var InsertCANConfigExd = FreeSql.Insert<CANFdConfigExd>(new CANFdConfigExd()
{
BaudRate = 250,
DataBaudRate = 250,
ArbBaudRate = 2000,
DbcPath = "请配置DBC路径",
Cycle = 100,
}).ExecuteInserted();
@@ -283,7 +335,7 @@ namespace CapMachine.Wpf.ViewModels
{
ConfigName = ReturnValue,
CANLINInfo = CANLIN.CANFD,
CANConfigExdId = InsertCANConfigExd.FirstOrDefault()!.Id
CANFdConfigExdId = InsertCANConfigExd.FirstOrDefault()!.Id
}).ExecuteInserted();
if (InsertData != null)
{
@@ -364,7 +416,7 @@ namespace CapMachine.Wpf.ViewModels
repo.DbContextOptions.EnableCascadeSave = true; //关键设置
var DeleteData = repo.Select
.Include(a => a.CANConfigExd)
.Include(a => a.CANFdConfigExd)
.IncludeMany(a => a.CanLinConfigContents)
.Where(a => a.Id == SelectCanLinConfigPro.Id)
.ToList();
@@ -372,7 +424,7 @@ namespace CapMachine.Wpf.ViewModels
repo.Delete(DeleteData);
foreach (var item in DeleteData)
{
FreeSql.Delete<CANConfigExd>(item.CANConfigExdId).ExecuteAffrows();
FreeSql.Delete<CANFdConfigExd>(item.CANFdConfigExdId).ExecuteAffrows();
}
InitLoadCanConfigPro();
}
@@ -480,7 +532,13 @@ namespace CapMachine.Wpf.ViewModels
SelectCanLinConfigPro = par as CanLinConfigPro;
//CANConfigExdDto 数据
SelectedCANConfigExdDto = Mapper.Map<CANConfigExdDto>(SelectCanLinConfigPro!.CANConfigExd);
SelectedCANConfigExdDto = Mapper.Map<CANFdConfigExdDto>(SelectCanLinConfigPro!.CANFdConfigExd);
if (SelectedCANConfigExdDto!=null)
{
//更新波特率等配置信息
CanFdDriveService.ToomossCanFDDrive.UpdateConfig((uint)SelectedCANConfigExdDto.ArbBaudRate,
(uint)SelectedCANConfigExdDto.DataBaudRate, SelectedCANConfigExdDto.ISOEnable, SelectedCANConfigExdDto.ResEnable);
}
var WirteData = SelectCanLinConfigPro.CanLinConfigContents!.Where(a => a.RWInfo == RW.Write).ToList();
if (WirteData != null && WirteData.Count > 0)
@@ -789,16 +847,36 @@ namespace CapMachine.Wpf.ViewModels
#region CAN操作
private CANConfigExdDto _SelectedCANConfigExdDto;
private CANFdConfigExdDto _SelectedCANConfigExdDto;
/// <summary>
/// 选中的CAN操作
/// </summary>
public CANConfigExdDto SelectedCANConfigExdDto
public CANFdConfigExdDto SelectedCANConfigExdDto
{
get { return _SelectedCANConfigExdDto; }
set { _SelectedCANConfigExdDto = value; RaisePropertyChanged(); }
}
private ObservableCollection<CbxItems> _DataBaudRateCbxItems;
/// <summary>
/// CAN FD 数据波特率
/// </summary>
public ObservableCollection<CbxItems> DataBaudRateCbxItems
{
get { return _DataBaudRateCbxItems; }
set { _DataBaudRateCbxItems = value; RaisePropertyChanged(); }
}
private ObservableCollection<CbxItems> _ArbBaudRateCbxItems;
/// <summary>
/// CAN FD 仲裁波特率
/// </summary>
public ObservableCollection<CbxItems> ArbBaudRateCbxItems
{
get { return _ArbBaudRateCbxItems; }
set { _ArbBaudRateCbxItems = value; RaisePropertyChanged(); }
}
private DelegateCommand<string> _CanOpCmd;
/// <summary>
/// CAN操作的指令
@@ -844,7 +922,7 @@ namespace CapMachine.Wpf.ViewModels
}
//CAN DBC配置 有DBC配置的话则直接加载DBC信息
if (!string.IsNullOrEmpty(SelectCanLinConfigPro.CANConfigExd.DbcPath))
if (!string.IsNullOrEmpty(SelectCanLinConfigPro.CANFdConfigExd.DbcPath))
{
var DbcData = CanFdDriveService.StartDbc(SelectedCANConfigExdDto.DbcPath);
ListCanDbcModel = DbcData;
@@ -882,10 +960,13 @@ namespace CapMachine.Wpf.ViewModels
//保存Can 配置
if (!string.IsNullOrEmpty(SelectedCANConfigExdDto.DbcPath))
{
var Update = FreeSql.Update<CANConfigExd>()
var Update = FreeSql.Update<CANFdConfigExd>()
.Set(a => a.DbcPath, SelectedCANConfigExdDto.DbcPath)
.Set(a => a.Cycle, SelectedCANConfigExdDto.Cycle)
.Set(a => a.BaudRate, SelectedCANConfigExdDto.BaudRate)
.Set(a => a.DataBaudRate, SelectedCANConfigExdDto.DataBaudRate)
.Set(a => a.ArbBaudRate, SelectedCANConfigExdDto.ArbBaudRate)
.Set(a => a.ISOEnable, SelectedCANConfigExdDto.ISOEnable)
.Set(a => a.ResEnable, SelectedCANConfigExdDto.ResEnable)
.Where(a => a.Id == SelectedCANConfigExdDto.Id)
.ExecuteUpdated();
}