Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在C应用程序中打开现金抽屉?_C# - Fatal编程技术网

C# 如何在C应用程序中打开现金抽屉?

C# 如何在C应用程序中打开现金抽屉?,c#,C#,我用条形码申请超市,我需要通过C中的点击按钮打开现金抽屉 此代码用于保存数据和打印收据 private void btnADD_Click(object sender, EventArgs e) { try { this.txtOredrId.Text = barcode.GET_LAST_ORDER_ID_BARCODE().Rows[0][0].ToString(); barcode.ADD_ORDER_BARCODE(Convert.ToInt32

我用条形码申请超市,我需要通过C中的点击按钮打开现金抽屉

此代码用于保存数据和打印收据

private void btnADD_Click(object sender, EventArgs e) {

    try {
        this.txtOredrId.Text = barcode.GET_LAST_ORDER_ID_BARCODE().Rows[0][0].ToString();
        barcode.ADD_ORDER_BARCODE(Convert.ToInt32(txtOredrId.Text), txtDate.Value, txtdesc.Text, txtSalesMan.Text);
        for (int i = 0; i < dgvProducts.Rows.Count - 1; i++)
        {
            barcode.ADD_ORDER_DETAILS_BARCODE(Convert.ToInt32(dgvProducts.Rows[i].Cells[0].Value),
                Convert.ToInt32(txtOredrId.Text),Convert.ToInt32(dgvProducts.Rows[i].Cells[4].Value),
                Convert.ToInt32(dgvProducts.Rows[i].Cells[3].Value),Convert.ToInt32(dgvProducts.Rows[i].Cells[6].Value),
                Convert.ToInt32(dgvProducts.Rows[i].Cells[5].Value), Convert.ToInt32(dgvProducts.Rows[i].Cells[7].Value), dgvProducts.Rows[i].Cells[2].Value.ToString()
                );

        }

        //MessageBox.Show("تم الحفظ بنجاح", "الحفظ", MessageBoxButtons.OK, MessageBoxIcon.Information);
        ClearData();

        this.Cursor = Cursors.WaitCursor;
        int order_ID = Convert.ToInt32(barcode.GET_LAST_ORDERBARCODE_For_Print().Rows[0][0]);
        RPT.rpt_orders_barcode report = new RPT.rpt_orders_barcode();
        RPT.FRM_RPT_PRODUCT frm = new RPT.FRM_RPT_PRODUCT();
        report.SetDataSource(barcode.GetOrderBarcodeDetails(order_ID));
        frm.crystalReportViewer1.ReportSource = report;
        frm.ShowDialog();
        this.Cursor = Cursors.Default;
    }
    catch(Exception ex) 
    {
        MessageBox.Show(ex.Message);
    }
}

我需要打开现金抽屉的代码。

这是一个特定于供应商的问题。您需要现金抽屉供应商API和/或设备驱动程序的文档,以了解如何指示其打开或关闭。

打开现金抽屉的方法取决于现金抽屉与应用程序PC的连接方式。现金抽屉可以直接连接到收银台,也可以通过USB或串行打印机连接

如果现金抽屉直接连接,我们可以使用Microsoft POS for.Net库。 现金抽屉通过USB打印机连接-利用打印机API,例如,STAR或EPSON拥有自己的库与现金抽屉交互,获取状态等。 通过串行打印机连接的现金抽屉-只需发送一个字节数组来触发现金抽屉打开命令,如下所示:

byte[] buffer = new byte[5]
{
  (byte) 27,
  (byte) 112,
  (byte) 0,
  (byte) 25,
  (byte) 250
 };
//port is an instance of a Serial Port
 this.port.Write(buffer, 0, buffer.Length);
有关写入方法的更多参考信息,请访问:

如果打印机与ESC/POS命令兼容,则通过ESC/POS命令打开现金抽屉的方法需要以字符串形式发送十六进制值

以下内容已经过测试并正常工作,您需要自己实现打印函数SendStringToPrinter

//打印机名称是连接到您的现金的打印机的名称 抽屉


什么是条形码?什么是dgvProducts?为什么crystal reports需要打开现金抽屉?现金抽屉是什么?你可以随时使用钥匙!!!Encoding enc=Encoding.Unicode;SerialPort sp=新的SerialPort;sp.PortName=COM4;sp.编码=enc;sp.BaudRate=38400;sp.奇偶校验=System.IO.Ports.Parity.None;sp.DataBits=8;sp.StopBits=System.IO.port.StopBits.One;sp.DtrEnable=true;sp.开放;sp.Writechar.ConvertFromUtf3228699+char.ConvertFromUtf329472+char.ConvertFromUtf323365;sp.关闭;
const string ESC = "\u001B";
const string p = "\u0070";
const string m = "\u0000";
const string t1 = "\u0025";
const string t2 = "\u0250";
const string openTillCommand = ESC + p + m + t1 + t2;

SendStringToPrinter(printerName, openTillCommand);