C#操作LPT口发送打印机指令

wch_212 2013-05-15 03:19:03
如题

网上找了很多都不好使,打印机有切纸指令: 16进制 1B 64 00 10进制 27 100 00

试了一些调用c++ 的方法,WriteFile 没发送成指令倒是把指令打印到纸上。

希望不吝赐教 ,谢谢。
...全文
313 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
wch_212 2013-05-16
  • 打赏
  • 举报
回复
引用 1 楼 viki117 的回复:
}
指令怎么写?
wch_212 2013-05-16
  • 打赏
  • 举报
回复
问题解决了。
wch_212 2013-05-16
  • 打赏
  • 举报
回复
public bool Write(byte[] mybyte) { if (iHandle != -1) { OVERLAPPED x = new OVERLAPPED(); int i = 0; return WriteFile(iHandle, mybyte, mybyte.Length, ref i, ref x); } else { throw new Exception("不能连接到打印机!"); } } 用的这个发送命令的。
viki117 2013-05-15
  • 打赏
  • 举报
回复
//C#控制打印机(直接发送打印机命令到打印机) //一个打印机控制类,很有用的,其中使用了windows api控制lpt端口,对条码打印机的控制方法如下:将打印机的命令写到一个文件里,再使用之。 //代码: using System; using System.Collections.Generic; using System.Text; using System.Runtime.InteropServices; namespace LPTControls { public class LPTControls { [StructLayout(LayoutKind.Sequential)] private struct OVERLAPPED { int Internal; int InternalHigh; int Offset; int OffSetHigh; int hEvent; } [DllImport("kernel32.dll")] private static extern int CreateFile(string lpFileName, uint dwDesiredAccess, int dwShareMode, int lpSecurityAttributes, int dwCreationDisposition, int dwFlagsAndAttributes, int hTemplateFile); [DllImport("kernel32.dll")] private static extern bool WriteFile(int hFile, byte[] lpBuffer, int nNumberOfBytesToWriter, out int lpNumberOfBytesWriten, out OVERLAPPED lpOverLapped); [DllImport("kernel32.dll")] private static extern bool CloseHandle(int hObject); private int iHandle; //打开LPT 端口 public bool Open() { iHandle = CreateFile("lpt1", 0x40000000, 0, 0, 3, 0, 0); if (iHandle != -1) { return true; } else { return false; } } //打印函数,参数为打印机的命令或者其他文本! public bool Write(string MyString) { if (iHandle != 1) { int i; OVERLAPPED x; byte[] mybyte = System.Text.Encoding.Default.GetBytes(MyString); return WriteFile(iHandle, mybyte, mybyte.Length, out i, out x); } else { throw new Exception("端口未打开~!"); } } //关闭打印端口 public bool Close() { return CloseHandle(iHandle); } } } //*************************************************************** //使用方法 private void button1_Click(object sender, EventArgs e) { LPTControls.LPTControls lpt = new LPTControls.LPTControls(); string mycommanglines = System.IO.File.ReadAllText("print.txt");//print.txt里写了条码机的命令 lpt.Open(); lpt.Write(mycommanglines); lpt.Close(); }

110,535

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧