c#程序调用USB条码打印机
我现在开发一个winforms程序,需要条码打印功能,程序是这样的,我先做好条码指令文本,然后通过c#程序发送指令集去条码打印机,条码打印机接到指令直接打印,我用的条码打印机是Intermec PB32 c#程序调用USB条码打印机 --------------------编程问答-------------------- 急,希望大虾们帮助帮助!1 --------------------编程问答-------------------- 条码打印机不提供接口给你吗?--------------------编程问答-------------------- 不提供!!只提供了打印条码软件,但是现在我们自己的软件需要条码打印功能!!!用他们的软件做好指令,我们自己写程序发指令过去!!! --------------------编程问答-------------------- 有第三方打印控件,试试吧 --------------------编程问答-------------------- 直接打印机端口写 --------------------编程问答-------------------- API啦,它自己的软件里面肯定有Win32 API的,否则怎么操作硬件呢? --------------------编程问答-------------------- 各位大虾说得很抽象!!!能否给个DEMO --------------------编程问答-------------------- u口还是串口? --------------------编程问答-------------------- 是U口!!! --------------------编程问答--------------------
private string filepath;
private int iHandle;
public Driver(string path)
{
this.filepath = path;
}
public bool Close()
{
return CloseHandle(this.iHandle);
}
[DllImport("kernel32.dll")]
private static extern bool CloseHandle(int hObject);
[DllImport("kernel32.dll")]
private static extern int CreateFile(string lpFilename, uint dwDesiredAccess, int dwShareMode, int lpSecurityAttributes, int dwCreationDisposition, int dwFlagsAndAttributes, int hTemplateFile);
public bool Open()
{
this.iHandle = CreateFile(this.filepath, 3, 0, 0, 3, 0, 0);
return (this.iHandle != -1);
}
public bool Write(string Mystring)
{
int num;
OVERLAPPED overlapped;
if (this.iHandle == -1)
{
throw new Exception("端口未打开!");
}
byte[] bytes = Encoding.Default.GetBytes(Mystring);
return WriteFile(this.iHandle, bytes, bytes.Length, out num, out overlapped);
}
public bool Write(byte[] barray)
{
int num;
OVERLAPPED overlapped;
if (this.iHandle == -1)
{
throw new Exception("端口未打开!");
}
return WriteFile(this.iHandle, barray, barray.Length, out num, out overlapped);
}
[DllImport("kernel32.dll")]
private static extern bool WriteFile(int hFile, byte[] lBuffer, int nNumberOfBytesToWrite, out int lpNumbersOfBytesWritten, out OVERLAPPED lpOverlapped);
[StructLayout(LayoutKind.Sequential)]
private struct OVERLAPPED
{
private int Internal;
private int InternalHigh;
private int Offset;
private int OffSetHigh;
private int hEvent;
}
}
构造参数就是直接在usb读取,其他不用说了哇 --------------------编程问答-------------------- 可以使用报表打印吧,RDLC也可以啊 --------------------编程问答--------------------
不提供指令手册么? --------------------编程问答-------------------- 从网上看到的,这种打印机:
支持的命令语言
• Fingerprint
• Direct Protocol
• Intermec 打印机语言 (IPL)
• ESim
• ZSim
• DSim
你随便翻翻看,通过你的“c语言程序”发送给LPT1:或者其它端口既可。 --------------------编程问答--------------------
晕死!
如果人家的驱动已经将端口输出映射为对一个文件的写入操作,那么你使用简单的文件写入代码
例如 File.WriteAllText(path, message)
就行了,用不着写这样一大堆调用api的东西出来。 --------------------编程问答--------------------
File.WriteAllText(path, message) 这两个参数path 和message是指什么??path,message是指什么?我曾经用过10楼的办法,打印机没反应
--------------------编程问答-------------------- CreateFile——创建文件
【参数】
1、lpFileName
一个指向无终结符的字符串的指针,来指明要创建或打开的对象的名字。
在Windows NT/2000/XP平台上:如果用ANSI版本的函数,字符串长度应限制在MAX_PATH;如果用Unicode版本的函数,这个限制可以扩充到32000个Unicode字符。
在Windows95/98/Me平台上:只能用ANSI版本的函数,字符串长度限制在MAX_PATH。
api说明:
这个函数可以创建或打开一个对象的句柄,凭借此句柄就可以控制这些对象:
控制台对象、通信资源对象、目录对象(只能打开)、磁盘设备对象、文件对象、邮槽对象、管道对象。
知道这个path了吧,把usb的guid找到在注册表里一搜索,类似如此字符串\\.\USB#Vid_0a5f&Pid_0053#41J110802054#{28d78fad-5a12-11d1-ae5b-0000f803a8c2},就是打印机的devicepath
--------------------编程问答-------------------- 不是usb哦,呵呵,是设备的guid,说错了 --------------------编程问答--------------------
大神方便说下具体调用么?小弟不才,刚刚接触这个,实在太多不懂,还望大神多多指教!小弟QQ:53020959!如果大神看得起就加小弟QQ,小弟还望大神赐教
补充:.NET技术 , C#