| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331 |
- using Prism.Mvvm;
- using System;
- using System.Collections.Generic;
- using static TeamAAS_VP.Core.ScrewDriver.XYD_ScrewDriver;
- using SqlSugar;
- namespace TeamAAS_VP.Models
- {
- public class LockResult : BindableBase
- {
- [SugarColumn(IsPrimaryKey = true, IsIdentity = true)]
- public int Id { get; set; }
- private int __Number;
- /// <summary>
- /// 螺丝编号
- /// </summary>
- public int Number
- {
- get { return __Number; }
- set { SetProperty(ref __Number, value); }
- }
- private string __ProductNumber;
- /// <summary>
- /// 产品编号
- /// </summary>
- [SugarColumn(IsNullable = true)]
- public string ProductNumber
- {
- get { return __ProductNumber; }
- set { SetProperty(ref __ProductNumber, value); }
- }
- private DateTime __Timestamp;
- /// <summary>
- /// 时间戳
- /// </summary>
- public DateTime Timestamp
- {
- get { return __Timestamp; }
- set { SetProperty(ref __Timestamp, value); }
- }
- private float __LockTurns;
- /// <summary>
- /// 锁付圈数
- /// </summary>
- public float LockTurns
- {
- get { return __LockTurns; }
- set { SetProperty(ref __LockTurns, value); }
- }
- private float __LockTorque;
- /// <summary>
- /// 锁付扭矩
- /// </summary>
- public float LockTorque
- {
- get { return __LockTorque; }
- set { SetProperty(ref __LockTorque, value); }
- }
- private float __LockDuration;
- /// <summary>
- /// 锁付用时
- /// </summary>
- public float LockDuration
- {
- get { return __LockDuration; }
- set { SetProperty(ref __LockDuration, value); }
- }
- private bool __LockPassed;
- /// <summary>
- /// 锁付结果(是否通过)
- /// </summary>
- public bool LockPassed
- {
- get { return __LockPassed; }
- set { SetProperty(ref __LockPassed, value); }
- }
- //
- private string _ResultDetails;
- /// <summary>
- /// 结果详情
- /// </summary>
- [SugarColumn(IsNullable = true)]
- public string ResultDetails
- {
- get { return _ResultDetails; }
- set { SetProperty(ref _ResultDetails, value); }
- }
- private int __ScrewdriverProgramNumber;
- /// <summary>
- /// 电批程序号
- /// </summary>
- public int ScrewdriverProgramNumber
- {
- get { return __ScrewdriverProgramNumber; }
- set { SetProperty(ref __ScrewdriverProgramNumber, value); }
- }
- private float __Pressure;
- /// <summary>
- /// 压力值
- /// </summary>
- public float Pressure
- {
- get { return __Pressure; }
- set { SetProperty(ref __Pressure, value); }
- }
- private float __TargetTorque;
- /// <summary>
- /// 目标扭矩
- /// </summary>
- public float TargetTorque
- {
- get { return __TargetTorque; }
- set { SetProperty(ref __TargetTorque, value); }
- }
- private float __TargetTurnsUpperLimit;
- /// <summary>
- /// 目标圈数上限
- /// </summary>
- public float TargetTurnsUpperLimit
- {
- get { return __TargetTurnsUpperLimit; }
- set { SetProperty(ref __TargetTurnsUpperLimit, value); }
- }
- private float __TargetTurnsLowerLimit;
- /// <summary>
- /// 目标圈数下限
- /// </summary>
- public float TargetTurnsLowerLimit
- {
- get { return __TargetTurnsLowerLimit; }
- set { SetProperty(ref __TargetTurnsLowerLimit, value); }
- }
- private float __TargetLockSpeed;
- /// <summary>
- /// 目标锁付速度
- /// </summary>
- public float TargetLockSpeed
- {
- get { return __TargetLockSpeed; }
- set { SetProperty(ref __TargetLockSpeed, value); }
- }
- private float __StartPositionX;
- /// <summary>
- /// 锁付位置坐标 X 起始值
- /// </summary>
- public float StartPositionX
- {
- get { return __StartPositionX; }
- set { SetProperty(ref __StartPositionX, value); }
- }
- private float __StartPositionY;
- /// <summary>
- /// 锁付位置坐标 Y 起始值
- /// </summary>
- public float StartPositionY
- {
- get { return __StartPositionY; }
- set { SetProperty(ref __StartPositionY, value); }
- }
- private float __StartPositionZ;
- /// <summary>
- /// 锁付位置坐标 Z 起始值
- /// </summary>
- public float StartPositionZ
- {
- get { return __StartPositionZ; }
- set { SetProperty(ref __StartPositionZ, value); }
- }
- private float __EndPositionZ;
- /// <summary>
- /// Z 终点值
- /// </summary>
- public float EndPositionZ
- {
- get { return __EndPositionZ; }
- set { SetProperty(ref __EndPositionZ, value); }
- }
- private float __LockDescentSpeed;
- /// <summary>
- /// 锁付下降速度
- /// </summary>
- public float LockDescentSpeed
- {
- get { return __LockDescentSpeed; }
- set { SetProperty(ref __LockDescentSpeed, value); }
- }
- private int __FeederNumber;
- /// <summary>
- /// 供料器编号
- /// </summary>
- public int FeederNumber
- {
- get { return __FeederNumber; }
- set { SetProperty(ref __FeederNumber, value); }
- }
- private float _FeederBatchNumber;
- /// <summary>
- /// 螺丝批次编号
- /// </summary>
- public float FeederBatchNumber
- {
- get { return _FeederBatchNumber; }
- set { SetProperty(ref _FeederBatchNumber, value); }
- }
- private string __NozzleNumber;
- /// <summary>
- /// 披头编号
- /// </summary>
- [SugarColumn(IsNullable = true)]
- public string NozzleNumber
- {
- get { return __NozzleNumber; }
- set { SetProperty(ref __NozzleNumber, value); }
- }
- //当前的操作员名称
- private string _OperatorName;
- [SugarColumn(IsNullable = true)]
- public string OperatorName
- {
- get { return _OperatorName; }
- set { SetProperty(ref _OperatorName, value); }
- }
- private string _ProductImagePath;
- /// <summary>
- /// 产品图片路径
- /// </summary>
- [SugarColumn(IsNullable = true)]
- public string ProductImagePath
- {
- get { return _ProductImagePath; }
- set { SetProperty(ref _ProductImagePath, value); }
- }
- /// <summary>
- /// 锁付曲线数据列表
- /// </summary>
- [SugarColumn(IsIgnore = true)]
- public List<WaveData> WaveDatas { get; set; } = new List<WaveData>();
- public LockResult()
- {
- // 默认构造函数
- Timestamp = DateTime.Now;
- }
- public LockResult(int number, string productNumber, float lockTurns, float lockTorque, bool lockPassed)
- {
- Number = number;
- ProductNumber = productNumber;
- Timestamp = DateTime.Now;
- LockTurns = lockTurns;
- LockTorque = lockTorque;
- LockPassed = lockPassed;
- }
- public LockResult Clone()
- {
- return new LockResult
- {
- Number = this.Number,
- ProductNumber = this.ProductNumber,
- Timestamp = this.Timestamp,
- LockTurns = this.LockTurns,
- LockTorque = this.LockTorque,
- LockDuration = this.LockDuration,
- LockPassed = this.LockPassed,
- ScrewdriverProgramNumber = this.ScrewdriverProgramNumber,
- Pressure = this.Pressure,
- TargetTorque = this.TargetTorque,
- TargetTurnsUpperLimit = this.TargetTurnsUpperLimit,
- TargetTurnsLowerLimit = this.TargetTurnsLowerLimit,
- TargetLockSpeed = this.TargetLockSpeed,
- StartPositionX = this.StartPositionX,
- StartPositionY = this.StartPositionY,
- StartPositionZ = this.StartPositionZ,
- EndPositionZ = this.EndPositionZ,
- LockDescentSpeed = this.LockDescentSpeed,
- FeederNumber = this.FeederNumber,
- NozzleNumber = this.NozzleNumber,
- WaveDatas = new List<WaveData>(this.WaveDatas)
- };
- }
- /// <summary>
- /// 将当前的锁付结果结果及波形数据存储至.csv文件中
- /// </summary>
- /// <param name="filePath"></param>
- public void SaveToCsv(string filePath)
- {
- using (var writer = new System.IO.StreamWriter(filePath))
- {
- // 写入锁付结果信息
- writer.WriteLine("Number,ProductNumber,Timestamp,LockTurns,LockTorque,LockDuration,LockPassed,ScrewdriverProgramNumber,Pressure,TargetTorque,TargetTurnsUpperLimit,TargetTurnsLowerLimit,TargetLockSpeed,StartPositionX,StartPositionY,StartPositionZ,EndPositionZ,LockDescentSpeed,FeederNumber,NozzleNumber");
- writer.WriteLine($"{Number},{ProductNumber},{Timestamp},{LockTurns},{LockTorque},{LockDuration},{LockPassed},{ScrewdriverProgramNumber},{Pressure},{TargetTorque},{TargetTurnsUpperLimit},{TargetTurnsLowerLimit},{TargetLockSpeed},{StartPositionX},{StartPositionY},{StartPositionZ},{EndPositionZ},{LockDescentSpeed},{FeederNumber},{NozzleNumber}");
- // 写入波形数据
- writer.WriteLine();
- writer.WriteLine("WaveDataIndex,LockAngle,Torque,Turns,Speed,Slopes");
- for (int i = 0; i < WaveDatas.Count; i++)
- {
- var waveData = WaveDatas[i];
- writer.WriteLine($"{i},{waveData.LockAngle},{waveData.Torque},{waveData.Turns},{waveData.Speed},{waveData.Slopes}");
- }
- }
- }
- }
- }
|