• 大小: 160KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-07
  • 语言: 其他
  • 标签: 驱动  DLL  

资源简介

针式打印机驱动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个文件信息

评论

共有 条评论