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.

92 lines
2.6 KiB
C#

9 months ago
using POSV.Utils;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Timers;
namespace POSV
{
public class DaHuaACS15AB
{
static SerialPortExtension serialPort = null;
Timer timer = null;
string portName;
string baudRate;
string dataBits;
string stopBits;
string parity;
string handshake;
static decimal _value = 0.00M;
public static bool Open(string portName, string baudRate,
string dataBits, string stopBits, string parity,
string handshake)
{
serialPort = new SerialPortExtension();
serialPort.ReceiveDataEvent -= DHACSReceiveDataEvent;
serialPort.ReceiveDataEvent += DHACSReceiveDataEvent;
var result = serialPort.Open(portName, baudRate, "8", "1", "0", "None");
if (result)
{
serialPort.Send(new byte[1] { 0x50 });
return true;
}
else
{
serialPort.Close();
serialPort.DiscardOutBuffer();
return false;
}
}
public static decimal GetWeight(string portName, string baudRate)
{
_value = 0.00M;
Open(portName, baudRate, "8", "1", "0", "None");
System.Threading.Thread.Sleep(500);
return _value;
}
private static void DHACSReceiveDataEvent(object sender, SerialPortEventArgs e)
{
var bytes = e.ReceivedBytes;
try
{
var _str = System.Text.Encoding.ASCII.GetString(bytes);
string[] _val = _str.Split(' ', 'K', 'G');
_value = decimal.Parse(_val[1]) /1000 ;
}
catch (Exception ex)
{
}
finally
{
if (serialPort != null)
{
if (serialPort.IsOpen)
{
serialPort.Close();
}
}
}
//模拟数据
//var bytes = new byte[11] { 0x02, 0x20, 0x20, 0x30, 0x31, 0x2e, 0x33, 0x34, 0x20, 0x4b, 0x47 };
//var hex = BitConverter.ToString(bytes, 0);
//var recv = BitConverter.ToString(bytes).Replace("-", string.Empty);
//logger.Info("收到大华ACS数据<{0}>", hex);
//Console.WriteLine("Received Data<{0}>:{1} ", e.ReceivedBytes.Length, recv);
}
}
}