You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

274 lines
8.1 KiB
C#

9 months ago
using POSV.Bean;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace POSV
{
public class WeightApi
{
private static NLog.Logger logger = NLog.LogManager.GetCurrentClassLogger();
public static bool IsConnection = false;
public static StringBuilder bs = new StringBuilder(32);
/// <summary>
/// 打开串口
/// </summary>
/// <param name="port"></param>
/// <param name="baud"></param>
public static bool OpenPort(SteelyardParam param)
{
bool result = false;
switch (param.Name)
{
case SteelyardBrandEnum.None:
{
result = false;
}
break;
case SteelyardBrandEnum.PS1X:
{
IsConnection = PS1Dll.openport(param.Port, param.Baud);
result = IsConnection;
}
break;
}
return result;
}
/// <summary>
/// 关闭串口
/// </summary>
public static bool ClosePort(SteelyardParam param)
{
bool result = false;
if (IsConnection)
{
try
{
switch (param.Name)
{
case SteelyardBrandEnum.PS1X:
{
PS1Dll.closeport();
}
break;
}
IsConnection = false;
result = true;
}
catch
{
result = false;
}
}
else
{
result = true;
}
return result;
}
/// <summary>
/// 创建指令
/// </summary>
public static void CreateCommon(SteelyardParam param)
{
switch (param.Name)
{
case SteelyardBrandEnum.PS1X:
{
PS1Dll.CreateComm();
}
break;
}
}
/// <summary>
/// 销毁指令
/// </summary>
public static void DestoryComm(SteelyardParam param)
{
switch (param.Name)
{
case SteelyardBrandEnum.PS1X:
{
PS1Dll.destoryComm();
IsConnection = false;
}
break;
}
}
/// <summary>
/// 清零
/// </summary>
public static bool ClearZero(SteelyardParam param)
{
bool result = false;
switch (param.Name)
{
case SteelyardBrandEnum.PS1X:
{
PS1Dll.CreateComm();
if(PS1Dll.openport(param.Port, param.Baud))
{
result = PS1Dll.ClearZero();
logger.Info("顶尖ps1x清零结果{0}", result);
}
else
{
logger.Info("顶尖ps1x清零结果未打开串口");
result = false;
}
PS1Dll.closeport();
PS1Dll.destoryComm();
}
break;
case SteelyardBrandEnum.C2:
case SteelyardBrandEnum.C3:
{
int re = LF_ACS_C3.send_zero();
logger.Error("龙飞清零》》》<{0}>", re);
result = re == 0xF0;//240
}
break;
}
return result;
}
/// <summary>
/// 去皮
/// </summary>
/// <returns></returns>
public static bool PeelSkin(SteelyardParam param)
{
bool result = false;
switch (param.Name)
{
case SteelyardBrandEnum.PS1X:
{
PS1Dll.CreateComm();
if (PS1Dll.openport(param.Port, param.Baud))
{
result = PS1Dll.Peelskin();
}
else
{
result = false;
}
PS1Dll.closeport();
PS1Dll.destoryComm();
}
break;
case SteelyardBrandEnum.C2:
case SteelyardBrandEnum.C3:
{
var re = LF_ACS_C3.send_tare(new StringBuilder("0.000"));
logger.Error("龙飞去皮》》》<{0}>", re);
result = re == 0xF0;//240
}
break;
}
return result;
}
/// <summary>
/// 获取所有值
/// </summary>
/// <returns></returns>
public static string GetAllValue(SteelyardParam param)
{
string result = string.Empty;
switch (param.Name)
{
case SteelyardBrandEnum.ACS_15AB:
{
result = DaHuaACS15AB.GetWeight(param.Port, param.Baud.ToString()).ToString();
}
break;
case SteelyardBrandEnum.PS1X:
{
PS1Dll.CreateComm();
if (PS1Dll.openport(param.Port, param.Baud))
{
result = PS1Dll.GetAllValue();
}
else
{
result = string.Empty;
}
PS1Dll.closeport();
PS1Dll.destoryComm();
}
break;
case SteelyardBrandEnum.C2:
case SteelyardBrandEnum.C3:
{
bs.Clear();
var res = LF_ACS_C3.read_standard(bs);
result = bs.ToString();
logger.Error("龙飞读取结果<0>重量<{1}>", res, bs.ToString());
}
break;
}
return result;
}
/// <summary>
/// 获取重量
/// </summary>
/// <returns></returns>
public static string GetWeight(SteelyardParam param)
{
string result = string.Empty;
switch (param.Name)
{
case SteelyardBrandEnum.PS1X:
{
result = PS1Dll.GetWeight();
}
break;
}
return result;
}
public static string GetKeyAndWeight(SteelyardParam param)
{
string result = string.Empty;
switch (param.Name)
{
case SteelyardBrandEnum.PS1X:
{
result = PS1Dll.GetKeyAndWeight();
}
break;
}
return result;
}
/// <summary>
/// 监听数据变更
/// </summary>
/// <param name="action"></param>
public static void RegisterListen(SteelyardParam param, TOnShowWeight action)
{
switch (param.Name)
{
case SteelyardBrandEnum.PS1X:
{
PS1Dll.IniOnShowWeight(action);
}
break;
}
}
}
}