| 
			 
					阅读:3847回复: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,请先看看它的帮助。				 
							 | 
	|
					
						
  |