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#

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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