读书人

C#怎么驱动USB口热敏打印机

发布时间: 2013-07-08 14:13:00 作者: rapoo

C#如何驱动USB口热敏打印机
我的程序里可以支持并口打印机,也能打印小票,但是用USB口打印机就不行,打印不出来小票,请高手们看一看,是不是需要DeviceIoControl这个类才行呀,请问如何实现。
QtSz qtsz = new QtSz();
string dpmc = QtSz.scmc;
const int OPEN_EXISTING = 3;
string prnPort = "LPT1";
[DllImport("kernel32.dll", CharSet = CharSet.Auto)]
private static extern IntPtr CreateFile(string lpFileName,
int dwDesiredAccess,
int dwShareMode,
int lpSecurityAttributes,
int dwCreationDisposition,
int dwFlagsAndAttributes,
int hTemplateFile);
QT qt11 = new QT("LPT1");
//string str=qt11.PrintLine("");
IntPtr iHandle1 = CreateFile(prnPort, 0x50000000, 0, 0, OPEN_EXISTING, 0, 0);
if (iHandle1.ToInt32() == -1)
{
Console.WriteLine(iHandle1.ToString());
//return "没有连接打印机或者打印机端口不是LPT1";

}

else
{
Console.WriteLine(iHandle1.ToString());

FileStream fs = new FileStream(iHandle1, FileAccess.ReadWrite);

StreamWriter sw = new StreamWriter(fs, System.Text.Encoding.Default);
//PrintEsc(1);

//sw.WriteLine(str);
//开钱箱指令
sw.Write(((char)27).ToString() + "p" + ((char)0).ToString() + ((char)60).ToString() + ((char)255).ToString());
//打印小票头
sw.Write(" \t"); sw.WriteLine(shangdianmingcheng);


sw.Write(" \t"); sw.WriteLine(biaotou);
sw.Write("电话:"); sw.WriteLine(dianhua); sw.Write("地址;"); sw.WriteLine(dizhi);
sw.Write("销售时间:"); sw.WriteLine(Convert.ToDateTime(this.label19.Text.Trim()));
sw.Write("流水号:"); sw.WriteLine(Convert.ToString(this.label3.Text.Trim()));
sw.WriteLine();
sw.WriteLine("------------------------------");
sw.WriteLine("商品名称 数量 单价 金额");
sw.WriteLine("-------------------------------");
sw.Close();
fs.Close();

//return "打印机连接成功";




}

[解决办法]
估计是没有有效的打开串口吧
[解决办法]
usb安装驱动,调用默认的打印机打印
printdocument神马的
[解决办法]
告诉你一个方法

选择 打印机属性-〉添加端口 -〉本地端口 -〉LPT2 确定
然后怎么搞 知道了吧
[解决办法]
还有一种方法

首先共享打印机 共享名 vPrint
然后 命令行
NET USE LPT2 \\计算机名 \vPrint
虚拟LPT2完成

读书人网 >C#

热点推荐