|
|
|
|
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;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|