gpt4 book ai didi

.net - 编写 POS 系统的最佳实践

转载 作者:行者123 更新时间:2023-12-03 22:37:02 28 4
gpt4 key购买 nike

我正在用 C# 构建一个基本的销售点 (POS) 系统,该系统需要打印到收据打印机并打开现金抽屉。我是否必须使用 Microsoft 服务点 SDK?

我一直在尝试使用随附的 Windows 驱动程序打印到我的三星打印机,它似乎工作得很好。我假设其他打印机可​​能不附带 Windows 驱动程序,然后我会被卡住?或者我可以简单地使用通用/文本驱动程序打印到任何支持它的打印机吗?

对于现金抽屉,我需要将代码直接发送到 COM 端口,这对我来说很好,如果这样可以省去帮助客户在系统上设置 OPOS 驱动程序的麻烦。

我在这里走错路了吗?

最佳答案

这可能与您正在寻找的答案略有不同(!)......

使用“外部接口(interface)”(例如打印机、现金提取等)时,总是抽象事物。您可能想要实现策略 - Pattern Strategy .

您为现金提取制作了一个界面:

public interface ICashDrawer
{
void Open();
}

提供的实现:
  • 一种策略是使用 COM 打开抽奖的类
  • 另一个是像执行 Debug.WriteLine 的类一样简单。打电话,这样你就不需要在开发过程中连接到 PC 的现金提取

  • 例如
    public class ComPortCashDrawer : ICashDrawer
    {
    public void Open()
    {
    // open via COM port etc
    }
    }

    public class DebugWriterCashDrawer : ICashDrawer
    {
    public void Open()
    {
    Debug.WriteLine("DebugWriterCashDrawer.Open() @ " + DateTime.Now);
    }
    }

    同样对于打印,您有一个打印接口(interface)来获取数据:
    public interface IRecieptPrinter
    {
    bool Print(object someData);
    }

    然后你做一个或多个实现。
  • 基础打印机
  • 专业标签打印机
  • 一种基于文本的保存到文件的...

  • 例如
    public class BasicRecieptPrinter : IRecieptPrinter
    {
    public bool Print(object someData)
    {
    // format for a basic A4 print
    return true; // e.g. success etc
    }
    }

    public class SpecificXyzRecieptPrinter : IRecieptPrinter
    {
    public bool Print(object someData)
    {
    // format for a specific printer
    return true; // e.g. success etc
    }
    }

    public class PlainTextFileRecieptPrinter : IRecieptPrinter
    {
    public bool Print(object someData)
    {
    // Render the data as plain old text or something and save
    // to a file for development or testing.
    return true; // e.g. success etc
    }
    }

    关于 SDK,如果您发现出于某种原因需要它,您可以使用 SDK 编写实现。随着时间的推移,您最终可能会通过多种方式与不同的外部设备进行交互。客户可能有一天会获得新的现金提款等。

    这清楚吗,如果你愿意,我可以充实我的意思,但你可能明白我的意思。

    您的应用程序在启动时设置了各自的实现,您可能需要查看 Dependency injection如果您使用 container,您会发现事情变得更容易。解析类型。
    var printer = container.Resolve<IRecieptPrinter>();

    PK :-)

    关于.net - 编写 POS 系统的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2448769/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com