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.

175 lines
4.5 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Newtonsoft.Json;
namespace POSV.Printer
{
[Serializable]
[JsonObject(MemberSerialization.OptIn)]
public class PrinterObject : IEquatable<PrinterObject>
{
/// <summary>
/// 串口
/// </summary>
public const string COM_PORT_NAME = "port";
/// <summary>
/// 串口波特率
/// </summary>
public const string COM_PORT_BAUD = "baud";
/// <summary>
/// 并口
/// </summary>
public const string LPT_NAME = "lpt";
public const string USB_PID = "pid";
public const string USB_VID = "vid";
/// <summary>
/// 网口的IP
/// </summary>
public const string NET_IP_ADDRESS = "ip";
/// <summary>
/// 驱动名称
/// </summary>
public const string DRIVE_NAME = "drive";
public PrinterObject()
{
this.Id = "";
this.Name = "";
this.DynamicLibrary = DynamicLibrary.;
this.PageWidth = 80;
this.Dpi = 203;
var data = new Dictionary<string , string>();
data.Add(COM_PORT_NAME , "COM1");
data.Add(COM_PORT_BAUD , "19200");
data.Add(LPT_NAME , "LPT1");
data.Add(USB_PID , "0");
data.Add(USB_VID , "0");
data.Add(NET_IP_ADDRESS , "127.0.0.1");
data.Add(DRIVE_NAME , "None");
this.Data = data;
this.EscPosCommand = new EscPosCommand();
}
/// <summary>
/// 打印机ID
/// </summary>
[JsonProperty(PropertyName = "id")]
public string Id { get; set; }
/// <summary>
/// 打印机名称
/// </summary>
[JsonProperty(PropertyName = "name")]
public string Name { get; set; }
/// <summary>
/// 打印机接口类型
/// </summary>
[JsonProperty(PropertyName = "port")]
public PortType PortType { get; set; }
/// <summary>
/// 打印机动态库支持
/// </summary>
[JsonProperty(PropertyName = "dynamic")]
public DynamicLibrary DynamicLibrary { get; set; }
/// <summary>
/// 页宽
/// </summary>
[JsonProperty(PropertyName = "width")]
public int PageWidth { get; set; }
/// <summary>
/// 打印机分辨率
/// </summary>
[JsonProperty(PropertyName = "dpi")]
public int Dpi { get; set; }
/// <summary>
/// 打印机参数配置
/// </summary>
[JsonProperty(PropertyName = "data")]
public Dictionary<string , string> Data { get;}
/// <summary>
/// 打印机ESC/POS指令
/// </summary>
[JsonProperty(PropertyName = "command")]
public EscPosCommand EscPosCommand { get; set; }
/// <summary>
/// 自动切纸
/// </summary>
[JsonProperty(PropertyName = "cutpager")]
public bool CutPager { get; set; }
/// <summary>
/// 自动开钱箱
/// </summary>
[JsonProperty(PropertyName = "cashbox")]
public bool OpenCashbox { get; set; }
/// <summary>
/// 打印机蜂鸣
/// </summary>
[JsonProperty(PropertyName = "beep")]
public bool Beep { get; set; } = false;
/// <summary>
/// 回退纸张行数
/// </summary>
[JsonProperty(PropertyName = "feedBack")]
public int FeedBackRow { get; set; } = 0;
public bool Equals(PrinterObject other)
{
if (other == null)
{
return false;
}
if (this.Data.Keys.Count != other.Data.Keys.Count)
{
return false;
}
foreach (var key in this.Data.Keys)
{
if (!(this.Data[key].Equals(other.Data[key])))
{
return false;
}
}
return this.PortType == other.PortType && this.Name == other.Name && this.Id == other.Id;
}
public override string ToString()
{
return this.Name;
}
}
public enum PortType
{
None,
,
,
,
USB,
}
public enum DynamicLibrary
{
,
}
}