112 lines
3.2 KiB
C#
112 lines
3.2 KiB
C#
using DispenserCommon.DB;
|
|
using DispenserCommon.Ioc;
|
|
using DispenserCommon.Utils;
|
|
using DispenserCore.Model.Entity;
|
|
using DispenserHal.Camera.Factory;
|
|
|
|
namespace DispenserCore.Service;
|
|
|
|
[Component]
|
|
public class CameraInternalParamsService
|
|
{
|
|
private static readonly SqliteHelper Db = ServiceLocator.GetService<SqliteHelper>();
|
|
|
|
|
|
/// <summary>
|
|
/// 获取wafer相机参数
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
public CameraInternalParams? GetWaferParams()
|
|
{
|
|
return Db.Query<CameraInternalParams>("select * from camera_internal_params where type = 'wafer'")
|
|
.FirstOrDefault();
|
|
}
|
|
|
|
/// <summary>
|
|
/// 获取基材相机参数
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
public CameraInternalParams? GetSubstrateParams()
|
|
{
|
|
return Db.Query<CameraInternalParams>("select * from camera_internal_params where type = 'substrate'")
|
|
.FirstOrDefault();
|
|
}
|
|
|
|
/// <summary>
|
|
/// 保存或者更新参数
|
|
/// </summary>
|
|
/// <param name="cameraInternalParams"></param>
|
|
/// <returns></returns>
|
|
public CameraInternalParams SaveOrUpdate(CameraInternalParams cameraInternalParams)
|
|
{
|
|
return Db.SaveOrUpdate(cameraInternalParams);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 将晶圆拍照参数写入相机
|
|
/// </summary>
|
|
public void FlushWaferParamsToCamera()
|
|
{
|
|
var waferParams = GetWaferParams();
|
|
if (waferParams != null)
|
|
{
|
|
FlushParamsToCamera(waferParams);
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 将基材拍照参数写入相机
|
|
/// </summary>
|
|
public void FlushSubstrateParamsToCamera()
|
|
{
|
|
var substrateParams = GetSubstrateParams();
|
|
if (substrateParams != null)
|
|
{
|
|
FlushParamsToCamera(substrateParams);
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 将参数写入相机
|
|
/// </summary>
|
|
/// <param name="cameraInternalParams"></param>
|
|
private void FlushParamsToCamera(CameraInternalParams cameraInternalParams)
|
|
{
|
|
var camera = CameraManager.GetCamera()!;
|
|
|
|
var properties = cameraInternalParams.GetType().GetProperties();
|
|
|
|
foreach (var property in properties)
|
|
{
|
|
var propertyName = property.Name;
|
|
if (propertyName == nameof(CameraInternalParams.Type)) continue;
|
|
var type = property.PropertyType.Name;
|
|
if (type.ToLower().Contains("enum"))
|
|
{
|
|
type = "Enum";
|
|
}
|
|
|
|
var value = property.GetValue(cameraInternalParams);
|
|
|
|
if (value == null) continue;
|
|
|
|
switch (type)
|
|
{
|
|
case "Int32":
|
|
camera.SetIntValue(propertyName, (int)value);
|
|
break;
|
|
case "Boolean":
|
|
camera.SetBoolValue(propertyName, (bool)value);
|
|
break;
|
|
case "Single":
|
|
var @decimal = (float)Convert.ToDecimal(value);
|
|
camera.SetFloatValue(propertyName, @decimal);
|
|
break;
|
|
case "Enum":
|
|
var val = Convert.ToUInt32(value);
|
|
camera.SetEnumValue(propertyName, val);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
} |