实例介绍
【实例简介】
【实例截图】
【核心代码】
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;
using System.IO.Ports;
using Printer.SDK.API;
using System.Text.RegularExpressions;
namespace PrtWinDemo
{
public partial class PrtWinDemoForm : Form
{
//Support Page Mode Models
public List<string> PageModePrinterList = new List<string> { "POS80A", "POS80B", "POS80C", "POS80E", "POS80D","ME31" };
private IntPtr printer;
bool isPageModePrinter;
string imagePath;
int Index;
public PrtWinDemoForm()
{
InitializeComponent();
setButtonEnable(false);
this.cmbPortType.SelectedIndex = 1;
this.txtPortSetting.Text = "USB";
this.cmbImage.SelectedIndex = 0;
}
private void setButtonEnable(bool isEnable)
{
btnConnect.Enabled = !isEnable;
btnStop.Enabled = isEnable;
this.grbBtn.Enabled = isEnable;
}
private void btnClose_Click(object sender, EventArgs e)
{
this.Close();
}
private void btnConnect_Click(object sender, EventArgs e)
{
string modelsetting = this.txtModel.Text;
string portsetting = this.txtPortSetting.Text;
if (Constants.E_SUCCESS != DllAPI.PrinterCreator(ref printer, modelsetting))
{
MessageBox.Show("Creator Model Failed!");
return;
}
if (Constants.E_SUCCESS == DllAPI.PortOpen(printer, portsetting))
{
//设置字符集
DllAPI.SetCodePage(printer, Constants.CHARACTERSET_DEFAULT, 0);
this.tboxInfo.Text = "Connect Succeed";
setButtonEnable(true);
//判断是否支持页模式
isPageModePrinter = PageModePrinterList.Contains(modelsetting);
if (!isPageModePrinter)
{
this.btnPrintLabel.Enabled = false;
}
}
else
MessageBox.Show("Port Open Failed!");
}
private void btnStop_Click(object sender, EventArgs e)
{
this.tboxInfo.Text = "Close Port";
DllAPI.PortClose(printer);
setButtonEnable(false);
}
private void btnPrintLabel_Click(object sender, EventArgs e)
{
double hMotion = 0.125, vMotion = 0.125; // distance per dot
int pageWidth =72, pageHeight = 500; // mm
int width_dots = (int)(pageWidth / hMotion);
int height_dots = (int)(pageHeight / vMotion);
if (CheckPrinterState())
{
DllAPI.PrinterInitialize(printer);
DllAPI.SelectPageMode(printer);
DllAPI.SetPrintAreaInPageMode(printer, 0, 0, width_dots, height_dots);
DllAPI.SelectPrintDirectionInPageMode(printer, Constants.PRINT_DIRECTION_LEFT_TO_RIGHT);
////print CODE128
DllAPI.SetAbsolutePrintPosition(printer, 20);
DllAPI.SetAbsoluteVerticalPrintPositionInPageMode(printer, 96);
DllAPI.PrintBarCode(printer, Constants.BARCODE_CODE128, "{A1101123456789", 1, 60, Constants.ALIGNMENT_LEFT, Constants.BARCODE_HRI_BELOW);
////print EAN13
DllAPI.SetAbsolutePrintPosition(printer, 20);
DllAPI.SetAbsoluteVerticalPrintPositionInPageMode(printer, 300);
DllAPI.PrintBarCode(printer, Constants.BARCODE_EAN13, "2501138000002", 2, 60, Constants.ALIGNMENT_LEFT, Constants.BARCODE_HRI_BELOW);
////print QRCode
DllAPI.SetAbsolutePrintPosition(printer, 20);
DllAPI.SetAbsoluteVerticalPrintPositionInPageMode(printer, 400);
DllAPI.PrintBarCode(printer, Constants.SYMBOL_QRCODE1, "QRCODE 1 123456", 5, 60, Constants.ALIGNMENT_LEFT, Constants.BARCODE_HRI_NONE);
////print QRCode
DllAPI.SetAbsolutePrintPosition(printer, 220);
DllAPI.SetAbsoluteVerticalPrintPositionInPageMode(printer, 400);
DllAPI.PrintBarCode(printer, Constants.SYMBOL_QRCODE2, "QRCODE 2 654321", 5, 60, Constants.ALIGNMENT_LEFT, Constants.BARCODE_HRI_NONE);
////print PDF417
DllAPI.SetAbsolutePrintPosition(printer, 20);
DllAPI.SetAbsoluteVerticalPrintPositionInPageMode(printer, 850);
DllAPI.PrintSymbol(printer, Constants.SYMBOL_STANDARD_PDF417, "China 0123456 ABC _*&", Constants.PDF417_ERROR_CORRECTION_LEVEL_0, 3, 2, Constants.ALIGNMENT_LEFT);
//////UPCA
DllAPI.SetAbsolutePrintPosition(printer, 20);
DllAPI.SetAbsoluteVerticalPrintPositionInPageMode(printer, 1150);
DllAPI.PrintBarCode(printer, Constants.BARCODE_UPC_A, "023150456784", 2, 60, Constants.ALIGNMENT_LEFT, Constants.BARCODE_HRI_BELOW);
//////UPCE
DllAPI.SetAbsolutePrintPosition(printer, 20);
DllAPI.SetAbsoluteVerticalPrintPositionInPageMode(printer, 1350);
DllAPI.PrintBarCode(printer, Constants.BARCODE_UPC_E, "01220000899", 2, 60, Constants.ALIGNMENT_LEFT, Constants.BARCODE_HRI_BELOW);
//////print EAN8
DllAPI.SetAbsolutePrintPosition(printer, 20);
DllAPI.SetAbsoluteVerticalPrintPositionInPageMode(printer, 1550);
DllAPI.PrintBarCode(printer, Constants.BARCODE_EAN8, "1542656", 2, 60, Constants.ALIGNMENT_LEFT, Constants.BARCODE_HRI_BELOW);
//////print CODE39
DllAPI.SetAbsolutePrintPosition(printer, 20);
DllAPI.SetAbsoluteVerticalPrintPositionInPageMode(printer, 1850);
DllAPI.PrintBarCode(printer, Constants.BARCODE_CODE39, "*10401YY00002009*", 2, 100, Constants.ALIGNMENT_LEFT, Constants.BARCODE_HRI_BELOW);
//////print ITF
DllAPI.SetAbsolutePrintPosition(printer, 20);
DllAPI.SetAbsoluteVerticalPrintPositionInPageMode(printer, 2050);
DllAPI.PrintBarCode(printer, Constants.BARCODE_ITF, "11231111032125", 2, 60, Constants.ALIGNMENT_LEFT, Constants.BARCODE_HRI_BELOW);
//////print CODABAR
DllAPI.SetAbsolutePrintPosition(printer, 20);
DllAPI.SetAbsoluteVerticalPrintPositionInPageMode(printer, 2250);
DllAPI.PrintBarCode(printer, Constants.BARCODE_CODABAR, "A40156A", 2, 60, Constants.ALIGNMENT_LEFT, Constants.BARCODE_HRI_BELOW);
//////print CODE93
DllAPI.SetAbsolutePrintPosition(printer, 20);
DllAPI.SetAbsoluteVerticalPrintPositionInPageMode(printer, 2450);
DllAPI.PrintBarCode(printer, Constants.BARCODE_CODE93, "CODE930093", 2, 60, Constants.ALIGNMENT_LEFT, Constants.BARCODE_HRI_BELOW);
DllAPI.SetAbsolutePrintPosition(printer, 20);
DllAPI.SetAbsoluteVerticalPrintPositionInPageMode(printer, 2600);
DllAPI.PrintText(printer, "PRINT TEXT TEST\n", Constants.ALIGNMENT_LEFT, Constants.TEXT_NORMAL_MODE, Constants.TEXT_SIZE_0WIDTH | Constants.TEXT_SIZE_0HEIGHT);
DllAPI.PrintAndReturnStandardMode(printer);
}
}
private void btnDirectIO_Click(object sender, EventArgs e)
{
//byte[] writedata = new byte[] { 0x1D, 0x72, 0x01 };
byte[] writedata = new byte[] { 0x1b, 0x76 };
int readnum = 0;
byte[] readdata = new byte[1];
DllAPI.DirectIO(printer, writedata, writedata.Length, readdata, readdata.Length, ref readnum);
if (readnum > 0)
{
tboxInfo.Text = "";
for (int i = 0; i < readnum; i )
{
tboxInfo.Text = Convert.ToString(readdata[i], 16) " ";
}
}
}
private void btnState_Click(object sender, EventArgs e)
{
uint printer_state = 0;
DllAPI.GetPrinterState(printer, ref printer_state);
if (Constants.STS_NORMAL == printer_state)
{
tboxInfo.Text ="Printer state normal.";
}
else
{
CheckPrinterState();
}
}
private void btnPrintReceipt_Click(object sender, EventArgs e)
{
if (CheckPrinterState())
{
DllAPI.PrinterInitialize(printer);
DllAPI.PrintText(printer, "Receipt:270500027 Cashier:01012\n", Constants.ALIGNMENT_LEFT, Constants.TEXT_NORMAL_MODE, Constants.TEXT_SIZE_0WIDTH | Constants.TEXT_SIZE_0HEIGHT);
DllAPI.PrintText(printer, "----------------------------------------------\n", Constants.ALIGNMENT_LEFT, Constants.TEXT_NORMAL_MODE, Constants.TEXT_SIZE_0WIDTH | Constants.TEXT_SIZE_0HEIGHT);
DllAPI.PrintText(printer, " Commodity Code Price Quantity\n", Constants.ALIGNMENT_LEFT, Constants.TEXT_FONT_EMPHASIZED | Constants.TEXT_FONT_UNDERLINE_MODE, Constants.TEXT_SIZE_0WIDTH | Constants.TEXT_SIZE_0HEIGHT);
DllAPI.PrintText(printer, "01.9940228004700 3.98 1.181\n", Constants.ALIGNMENT_LEFT, Constants.TEXT_NORMAL_MODE, Constants.TEXT_SIZE_0WIDTH | Constants.TEXT_SIZE_0HEIGHT);
DllAPI.PrintText(printer, " banana subtotal:4.70 \n", Constants.ALIGNMENT_LEFT, Constants.TEXT_NORMAL_MODE, Constants.TEXT_SIZE_0WIDTH | Constants.TEXT_SIZE_0HEIGHT);
DllAPI.PrintText(printer, "02.996100800220 6.00 0.376\n", Constants.ALIGNMENT_LEFT, Constants.TEXT_NORMAL_MODE, Constants.TEXT_SIZE_0WIDTH | Constants.TEXT_SIZE_0HEIGHT);
DllAPI.PrintText(printer, " noodle subtotal:2.20 \n", Constants.ALIGNMENT_LEFT, Constants.TEXT_NORMAL_MODE, Constants.TEXT_SIZE_0WIDTH | Constants.TEXT_SIZE_0HEIGHT);
DllAPI.PrintText(printer, "03.6921644701204 3.50 1 \n", Constants.ALIGNMENT_LEFT, Constants.TEXT_NORMAL_MODE, Constants.TEXT_SIZE_0WIDTH | Constants.TEXT_SIZE_0HEIGHT);
DllAPI.PrintText(printer, " fruit juice subtotal:3.50 \n", Constants.ALIGNMENT_LEFT, Constants.TEXT_NORMAL_MODE, Constants.TEXT_SIZE_0WIDTH | Constants.TEXT_SIZE_0HEIGHT);
DllAPI.PrintText(printer, "04.9940316000602 5.16 0.116\n", Constants.ALIGNMENT_LEFT, Constants.TEXT_NORMAL_MODE, Constants.TEXT_SIZE_0WIDTH | Constants.TEXT_SIZE_0HEIGHT);
DllAPI.PrintText(printer, " flour subtotal:0.60 \n", Constants.ALIGNMENT_LEFT, Constants.TEXT_NORMAL_MODE, Constants.TEXT_SIZE_0WIDTH | Constants.TEXT_SIZE_0HEIGHT);
DllAPI.PrintText(printer, "----------------------------------------------\n", Constants.ALIGNMENT_LEFT, Constants.TEXT_NORMAL_MODE, Constants.TEXT_SIZE_0WIDTH | Constants.TEXT_SIZE_0HEIGHT);
DllAPI.PrintText(printer, "Total: RMB 11.00 \n", Constants.ALIGNMENT_LEFT, Constants.TEXT_NORMAL_MODE, Constants.TEXT_SIZE_0WIDTH | Constants.TEXT_SIZE_0HEIGHT);
DllAPI.PrintText(printer, "Payment: RMB 101.00 \n", Constants.ALIGNMENT_LEFT, Constants.TEXT_NORMAL_MODE, Constants.TEXT_SIZE_0WIDTH | Constants.TEXT_SIZE_0HEIGHT);
DllAPI.PrintText(printer, "Change: RMB 90.00 \n", Constants.ALIGNMENT_LEFT, Constants.TEXT_NORMAL_MODE, Constants.TEXT_SIZE_0WIDTH | Constants.TEXT_SIZE_0HEIGHT);
DllAPI.PrintText(printer, "Sold Quantity: 4 \n", Constants.ALIGNMENT_LEFT, Constants.TEXT_NORMAL_MODE, Constants.TEXT_SIZE_0WIDTH | Constants.TEXT_SIZE_0HEIGHT);
DllAPI.PrintText(printer, " 13th,Sep,2014 16:50:19\n", Constants.ALIGNMENT_CENTER, Constants.TEXT_NORMAL_MODE, Constants.TEXT_SIZE_0WIDTH | Constants.TEXT_SIZE_0HEIGHT);
DllAPI.PrintText(printer, "Thank you for patronizing\n", Constants.ALIGNMENT_CENTER, Constants.TEXT_FONT_UNDERLINE_MODE, Constants.TEXT_SIZE_0WIDTH | Constants.TEXT_SIZE_0HEIGHT);
DllAPI.PrintText(printer, "PRT-Mart\n", Constants.ALIGNMENT_CENTER, Constants.TEXT_FONT_REVERSE, Constants.TEXT_SIZE_1WIDTH | Constants.TEXT_SIZE_0HEIGHT);
DllAPI.CutPaper(printer, Constants.FULL_CUT, 120);
//int a = 0;
//byte[] str = new byte[] { 0x1b, 0x61, 0x00, 0x1b, 0x21, 0x00, 0x1d, 0x21, 0x00, 0xCD, 0xF5, 0xCE, 0xC4, 0xD5, 0xC2,0x0d,0x0a };
//byte[] str1 = new byte[] { 0x1b, 0x10 };
//DllAPI.DirectIO(printer, str, 17, str1, 0, ref a);
}
}
private bool CheckPrinterState()
{
uint s = 0;
int result = Constants.E_SUCCESS;
PrinterState printerState = new PrinterState();
result = DllAPI.GetPrinterState(printer, ref s);
if (Constants.E_SUCCESS == result)
{
printerState.State = s;
}
else
{
printerState.State |= PrinterState.STS_ERROR;
}
if (printerState.PAPEREMPTY == true)
{
tboxInfo.Text ="Printer paper not present,please insert the printing paper.";
return false;
}
if (printerState.COVEROPEN == true)
{
tboxInfo.Text ="Printer paper cover open,please check paper cover.";
return false;
}
if (printerState.PAPERNEAREND == true)
{
tboxInfo.Text = "Printer paper near end,please insert the printing paper.";
}
if (printerState.MSR_READY == true)
{
//to do
}
if (printerState.SMARTCARD_READY == true)
{
//to do
}
if (printerState.ERROR == true)
{
MessageBox.Show("Printer state error.");
return false;
}
if (printerState.NOT_OPEN == true)
{
MessageBox.Show("Printer not open.");
return false;
}
if (printerState.OFFLINE == true)
{
tboxInfo.Text ="Printer offline,please check printer state.";
return false;
}
return true;
}
private void cmbPortType_SelectedIndexChanged(object sender, EventArgs e)
{
string porttype = this.cmbPortType.Text.ToUpper();
if ("COM" == porttype)
this.txtPortSetting.Text = "COM3,BAUDRATE_115200";
else if ("NET" == porttype)
this.txtPortSetting.Text = "Net,192.168.1.37";
else if ("USB" == porttype)
{
this.txtPortSetting.Text = "USB";
}
else if ("LPT" == porttype)
this.txtPortSetting.Text = "LPT1";
else
{
this.txtPortSetting.Text = "Invalid";
}
}
private void btnVersion_Click(object sender, EventArgs e)
{
int[] Version = new int[3];
if (Constants.E_SUCCESS == DllAPI.GetFirmwareVersion(printer, Version, Version.Length))
MessageBox.Show("Printer FirmwareVersion:"
Version[0].ToString() "."
Version[1].ToString() "."
Version[2].ToString()
);
}
private void btnDownLoadImage_Click(object sender, EventArgs e)
{
if (CheckPrinterState())
{
int result=0;
OpenFileDialog dlg = new OpenFileDialog();
dlg.Filter = "Image files|*.bmp;*.gif;*.jpg;*.png;";
string imgMethod = this.cmbImage.Text;
if (dlg.ShowDialog() == DialogResult.OK)
{
string fname = dlg.FileName;
if ("RasterImage" == imgMethod)
{
imagePath = fname;
}
else if ("BufferedImage" == imgMethod)
{
result = DllAPI.DefineBufferedImage(printer, fname);
}
else if ("NVImage" == imgMethod)
{
result = DllAPI.DefineNVImage(printer, fname, (byte)'1', (byte)'1');
}
Index = this.cmbImage.SelectedIndex;
if (Constants.E_SUCCESS == result)
{
MessageBox.Show("DownLoad Succeed.");
btnPrint.Enabled = true;
}
else
{
MessageBox.Show("DownLoad Failed." result.ToString());
btnPrint.Enabled = false;
}
}
}
}
private void btnPrint_Click(object sender, EventArgs e)
{
switch (Index)
{
case 0: DllAPI.PrintImage(printer, imagePath, 0);
btnPrint.Enabled = false;
break;
case 1: DllAPI.PrintBufferedImage(printer);
btnPrint.Enabled = false;
break;
case 2: DllAPI.PrintNVImage(printer, (byte)'1', (byte)'1'); break;
default:
break;
}
}
}
}
好例子网口号:伸出你的我的手 — 分享!
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明


网友评论
我要评论