我需要在我的WPF应用程序中打开Cash Drawer,这是我第一次处理Cash Drawer,经过一些搜索后我知道我会使用Microsoft Point of Services。所以我已经安装了POSforDotNet V1.14并启动了新项目并添加了参考,我找到了这个例子:
CashDrawer myCashDrawer;
PosExplorer explorer;
public MainWindow()
{
InitializeComponent();
this.Loaded += MainWindow_Loaded;
}
void MainWindow_Loaded(object sender, RoutedEventArgs e)
{
explorer = new PosExplorer();
DeviceInfo ObjDevicesInfo = explorer.GetDevice("CashDrawer");
myCashDrawer = explorer.CreateInstance(ObjDevicesInfo);
}
private void Button_Click(object sender, RoutedEventArgs e)
{
myCashDrawer.Open();
myCashDrawer.Claim(1000);
myCashDrawer.DeviceEnabled = true;
myCashDrawer.OpenDrawer();
myCashDrawer.DeviceEnabled = false;
myCashDrawer.Release();
myCashDrawer.Close();
}
您可以下载我的测试应用程序HERE
我已经尝试过但不起作用:(
在myCashDrawer =中给了我错误 explorer.CreateInstance(ObjDevicesInfo);线
请帮助我,因为我遇到了Microsoft服务点,我对此并不完全了解。
答案 0 :(得分:3)
您需要强制转换为CashDrawer
。我现在更新了你的代码,确保你不会收到错误。
myCashDrawer = (CashDrawer)explorer.CreateInstance(ObjDevicesInfo);
答案 1 :(得分:2)
除了(CashDrawer)演员之外,我建议使用
DeviceInfo ObjDevicesInfo = explorer.GetDevice("CashDrawer", "LOGICAL DEVICE NAME for your cash drawer");
如果您安装了多个参数,并且只使用一个参数,则会抛出错误(并且MSPOS v1.14安装了一个虚假的现金抽屉用于测试,因此您至少得到了自己的身体那个)。
答案 2 :(得分:0)
System.IO.Ports.SerialPort port = null;
port = new System.IO.Ports.SerialPort(Program.CashDrawerPort);
port.PortName = Program.CashDrawerPort;
port.BaudRate = 9600;
port.Parity = System.IO.Ports.Parity.None;
port.DataBits = 8;
port.StopBits = System.IO.Ports.StopBits.One;
port.RtsEnable = true;
try
{
port.Open();
if (port.IsOpen)
{
port.Write("B");
}
else
{
}
port.Close();
}
catch (Exception exceptionMessage)
{
}