资源简介
针式打印机驱动dll,通过pid,vid找到打印机的句柄,
用CreateFile,WriteFile发指令
可实现的套打等功能

代码片段和文件信息
#include “PrintDll.h“
#include
#include
#include //CString要用到的头文件
#pragma comment(lib “Setupapi.lib“)
//如果PidVid相同的话,就返回1,否则返回0
//
bool beSamePidVid(CString strPath CString strPidVid)
{
int flag = strPath.Find(strPidVid);
if (flag < 0)
{
return false;
}
else
{
return true;
}
}
//
//初始化得到打印机的句柄
//
HANDLE GetPrintHandle()
{
HANDLE hCom;//初始化成功返回句柄
CString strShow;
CString strtmp;
CString strPath;
//定义USB的GUID,具体GUID在哪个头文件里,还不知道
static GUID GUID_DEVINTERFACE_USB_DEVICE =
{0xA5DCBF10L 0x6530 0x11D2 0x90 0x1F 0x00 0xC0 0x4F 0xB9 0x51 0xED};
// 准备查找符合HID规范的USB设备
HDEVINFO hDevInfo = SetupDiGetClassDevs(&GUID_DEVINTERFACE_USB_DEVICENULLNULL
DIGCF_PRESENT | DIGCF_DEVICEINTERFACE);
// 枚举查找所有可用的USB设备接口,并找到vid_06BCpid_02F2的特定的USB设备(OKI5500F+)
for (int Device_Index=0;;Device_Index++)
{
SP_DEVICE_INTERFACE_DATA strtInterfaceData;
strtInterfaceData.cbSize = sizeof (SP_DEVICE_INTERFACE_DATA);
BOOL bSuccess = SetupDiEnumDeviceInterfaces(hDevInfoNULL&GUID_DEVINTERFACE_USB_DEVICE
Device_Index//找到的可用的设备索引号
&strtInterfaceData);
if (!bSuccess)
{
if (ERROR_NO_MORE_ITEMS == GetLastError())
{
break;
}
}
//第一次调用SetupDiGetDeviceInterfaceDetail 设置第三参数为NULL , 以获得长度(参数5)
DWORD returnsize = 0;
DWORD predictedLength = 0;
SetupDiGetDeviceInterfaceDetail(hDevInfo&strtInterfaceData
NULL0&returnsizeNULL);
predictedLength = returnsize;
//第二次调用SetupDiGetDeviceInterfaceDetail ,
// 若找到了设备,则读取设备路径名
SP_DEVICE_INTERFACE_DETAIL_DATA* pDetailData = NULL;
pDetailData = (PSP_INTERFACE_DEVICE_DETAIL_DATA) malloc (predictedLength);
pDetailData->cbSize = sizeof(SP_DEVICE_INTERFACE_DETAIL_DATA);
if (!SetupDiGetDeviceInterfaceDetail(hDevInfo&strtInterfaceData
pDetailDatareturnsize&returnsizeNULL))
{
MessageBox(NULL _T(“查找设备路径时出错!“) _T(“错误“) 0);
SetupDiDestroyDeviceInfoList(hDevInfo);
return INVALID_HANDLE_VALUE ;
}
// 找到了设备路径
strPath = pDetailData->DevicePath;
//找特定的pid,vid
if (beSamePidVid(strPath _T(“vid_06bc&pid_02f2“)))
{
break;
}
}
// 用API函数CreateFile与设备通信
hCom = CreateFile(strPathGENERIC_WRITE
NULLNULLCREATE_ALWAYSFILE_ATTRIBUTE_NORMALNULL);
if (hCom == INVALID_HANDLE_VALUE)
{
MessageBox(NULL _T(“无法打开通信端口“) _T(“错误“) 0);
SetupDiDestroyDeviceInfoList(hDevInfo);
return INVALID_HANDLE_VALUE;
}
return hCom;
}
//
//释放句柄
//
void ReleaseHandle(HANDLE hCom)
{
::CloseHandle(hCom);
}
//
//设置相对于当前位置的打印位置
//
void OffSetPosXY(HANDLE hCom int x int y)//单位1/60英寸
{
unsigned long cnt = 0;
//先处理Y坐标,在X坐标
char YPos[3] = {0x1B 0x4A 0x00};
int LineNum = 0; //需要换多少个85/60英寸 //整步
int LineRem = 0; //需要换多少个1/60英寸 //小碎步
y = y * 3;
//如果当前换行数超过255(单位1/180英寸),则需要两次或多次换行
if (y > 255)
{
LineNum = y / 255;
LineRem = y % 255;
}
else//没超
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 8385 2014-01-24 13:50 PrintDll\PrintDll.cpp
文件 1765 2014-01-24 13:37 PrintDll\PrintDll.h
文件 1345 2014-01-24 11:47 PrintDll\PrintDll.sln
..A..H. 15360 2014-01-26 13:32 PrintDll\PrintDll.suo
文件 3300 2014-01-06 11:07 PrintDll\PrintDll.vcxproj
文件 1067 2014-01-06 11:03 PrintDll\PrintDll.vcxproj.filters
文件 143 2014-01-06 11:02 PrintDll\PrintDll.vcxproj.user
文件 93696 2014-01-24 13:50 TestDll\PrintDll.dll
文件 4256 2014-01-24 13:50 TestDll\PrintDll.lib
文件 3013 2014-01-24 11:45 TestDll\ReadMe.txt
....... 67777 2009-08-31 02:31 TestDll\res\TestDll.ico
文件 670 2014-01-24 11:45 TestDll\res\TestDll.rc2
文件 2096 2014-01-24 13:47 TestDll\resource.h
文件 140 2014-01-24 11:45 TestDll\stdafx.cpp
文件 1652 2014-01-24 11:51 TestDll\stdafx.h
文件 234 2014-01-24 11:45 TestDll\targetver.h
文件 106032 2014-01-24 13:47 TestDll\TestDll.aps
文件 2006 2014-01-24 11:45 TestDll\TestDll.cpp
文件 448 2014-01-24 11:45 TestDll\TestDll.h
文件 10934 2014-01-24 13:47 TestDll\TestDll.rc
文件 5990 2014-01-24 12:04 TestDll\TestDll.vcxproj
文件 1988 2014-01-24 11:45 TestDll\TestDll.vcxproj.filters
文件 143 2014-01-24 11:45 TestDll\TestDll.vcxproj.user
文件 4797 2014-01-24 13:47 TestDll\TestDllDlg.cpp
文件 889 2014-01-24 13:47 TestDll\TestDllDlg.h
目录 0 2014-01-26 14:55 PrintDll\Debug
目录 0 2014-01-26 14:55 TestDll\Debug
目录 0 2014-01-24 11:45 TestDll\res
目录 0 2014-01-26 14:55 PrintDll
目录 0 2014-01-24 13:47 TestDll
............此处省略3个文件信息
相关资源
- 直流无刷电机方波驱动 stm32 例程代码
- elantech触控板驱动程序 v13.6.11 官方最
- 联想y470无线网卡驱动 for 32位64位
- 松下plc FP-XH的驱动
- IMX385驱动代码.zip
- 组态王驱动开发包3.0.0.7(中文)
- 飞思卡尔单片机MC9S12XS12G128驱动(硬件
- VNCX
- CASS9.1最新S4数据及驱动+ET199数据及驱
- 带有死区延时的H桥直流电机驱动电路
- USB转串口驱动,FT232R驱动程序,最新
- 德卡D3读卡器测试程序驱动文件
- WinCE下CP210x的驱动程序
- Adobe Illustrator CS5原版amtlib.dll文件
- ubuntu9.10 可加载内核模块和字符设备驱
- MCGS触摸屏西门子s7_1200驱动
- FPGA在步进电机驱动上的应用实例及代
- [免费]基于stm32f103ze 的OLED驱动代码
- STM32F103RBT6驱动UC1698控制芯片的160160黑
-
分别适用于.NET fr
amework 2.0和4.0的E - RA8806液晶驱动程序
- 内核驱动进程保护演示程序
- STM32F103 DS18B20 V3.5.0固件库驱动程序工
- 组态王中S7-300TCP驱动
- STC12C5A60S2 CH4521 驱动数码管 显示
- STM32F103 CC2500完整驱动(模拟SPI)
- 430系列单片机USBFET下载驱动
- dell阵列卡驱动s100 s300 2008 R2.rar
- keil vcom windows 7 64bit 驱动
- windows ce 系统的GPIO驱动程序
评论
共有 条评论