阅读:3675回复:18
大侠帮忙,一个很简单的问题可是我不知道
有一USB外设(EPSON打印机),没有任何有关它的USB芯片的资料,不知能不能跟它通讯?我是不是应该知道它的USB协议?还是USB有统一的协议?
|
|
|
沙发#
发布于:2001-06-19 09:41
OF COURSE!
|
|
板凳#
发布于:2001-06-19 09:44
这要看你想干什么了.如果想打印,用一些API应该就可以了.如果想和硬件直接打交道,应该要了解driver.
|
|
|
地板#
发布于:2001-06-19 09:48
OF COURSE ?
是不是不可以,应该有该打印机的USB芯片的相关资料。麻烦您说清楚点,THANKS! |
|
|
地下室#
发布于:2001-06-19 10:10
Moderator,我是要让它打印,但我不用厂商提供的驱动程序,而是自己编写驱动程序,现在厂商有给相关的指令集,我之前作过串、并口的,我想USB口应该不一样吧,我试过用CREATEFILE打开USB口,好象不对呀。
|
|
|
5楼#
发布于:2001-06-19 12:55
usb是要写driver的,但你的应该是属于printer类的.
|
|
|
6楼#
发布于:2001-06-19 13:20
那我应该怎么样写通信程序以实现打印功能呢,是不是与串、并口差不多?刚接触这行不久,很菜。麻烦大侠多帮忙。
[mmh 编辑于 2001-06-19 13:23] |
|
|
7楼#
发布于:2001-06-19 16:38
我没有写过printer driver,你看看DDK里面有没有例子.
|
|
|
8楼#
发布于:2001-06-19 17:33
PRINTER DRIVER我之前写过,但之前是用并口通信,而现在要用USB口,不知道该如何访问USB口,我想访问USB设备(USB口)的方法应该都一样呀,哪位能告知如何访问USB口,不甚感激!
|
|
|
9楼#
发布于:2001-06-20 08:25
访问USB设备要写driver.但每个usb设备都可以归属于某一类设备,usb printer可能是printer类的.
我想你可能需要写一个usb client driver,把你的usb printer加载到printer stack里面. |
|
|
10楼#
发布于:2001-06-20 08:38
你分成两个部分:
一个与USB通讯, 一个打印机驱动程序. 顺便问一下你以前写的打印机驱动程序是基于minidriver,还是别的(按DDK写的?)在这方面我想与你问一些问题. |
|
11楼#
发布于:2001-06-20 08:44
非常感谢rayyang2000,但是如何写一个usb client driver,把我的usb printer加载到printer stack里面呢,望共享一个例子,非常非常非常感谢!
|
|
|
12楼#
发布于:2001-06-20 09:09
peng-416,其实我才写过一个PRINTER DRIVER,不是按DDK写的,其实我很菜的,不过我知道的会尽力回答你的。
我现在急得想知道怎么跟USB设备通信,不知道你有没有这方面的例子? MY EMAIL:mmh_han@163.com |
|
|
13楼#
发布于:2001-06-20 14:44
在WritePrinter时你将它写到USB设备上,就可以了.你是作为它的一个客户.
|
|
14楼#
发布于:2001-06-20 15:01
对于USB的设备应该写一个Filter驱动程序,因为对于USB设备而言有比较标准的驱动,而这些Driver是系统的一部分sys,也就是说在它的下面还有驱动程序,如USBD.sys等.
|
|
|
15楼#
发布于:2001-06-20 15:07
但是问题的关键是我该如何获得USB设备的端口呢?
|
|
|
16楼#
发布于:2001-06-20 17:15
usb的驱动和串并口的驱动完全不同的
串并口的驱动都是直接对地址口发送ESC指令(你应该是在dos或linux下做的,我想) 而usb的只能写一个miniport的,不能直接对硬件操作的 |
|
|
17楼#
发布于:2001-06-22 09:03
我用DRIVERSTUDIO生成一驱动程序,其中// OpenByIntf.cpp - open device by device interface
源码如下: HANDLE OpenByInterface( GUID* pClassGuid, // points to the GUID that identifies the interface class DWORD instance, // specifies which instance of the enumerated devices to open PDWORD pError // address of variable to receive error status ) { HANDLE hDev; CDeviceInterfaceClass DevClass(pClassGuid, pError); if (*pError != ERROR_SUCCESS) return INVALID_HANDLE_VALUE; CDeviceInterface DevInterface(&DevClass, instance, pError); // if (*pError != ERROR_SUCCESS) return INVALID_HANDLE_VALUE; hDev = CreateFile( DevInterface.DevicePath(), GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL ); if (hDev == INVALID_HANDLE_VALUE) *pError = GetLastError(); return hDev; } 不知道我该修改哪些地方,其中DevInterface.DevicePath(), 是怎么取得的?请大侠指教。 |
|
|
18楼#
发布于:2001-06-22 10:57
既然用了DriverStudio,请先看看它的帮助。
|
|
|