基于USB接口的PTP协议在Win32上编程实现.docx
- 文档编号:529474
- 上传时间:2023-04-29
- 格式:DOCX
- 页数:11
- 大小:19.40KB
基于USB接口的PTP协议在Win32上编程实现.docx
《基于USB接口的PTP协议在Win32上编程实现.docx》由会员分享,可在线阅读,更多相关《基于USB接口的PTP协议在Win32上编程实现.docx(11页珍藏版)》请在冰点文库上搜索。
基于USB接口的PTP协议在Win32上编程实现 《工业控制计算~}2002年15卷
第12期17
基于USB接口的PTP协议在Win32上编程实现
余军苗李培弘王校刘济林浙江大学信息与通信工程研究所(310027)
Abstract
ThePictureTransferProtocol(PTP)wasdevelopedbythePhotographicImag
ingManufacturersAssocia—
tion(PIMA)toenableDigitalStillPhotographyDevices(DSPDs)
【”totalktocomputers,printers,andotherde—
vicesusingacommonlanguageThispaperdescribedthebackgroundandthec
ontentoftheprotocol
briefly.andimplementeditonWin32platformonUSB(USB11)interface.Fin
ally,itwastestedsuccessfully.
Keywords:
PTPprotocol,DSPDs,USB,WDM
摘要
本文简单介绍了PTP(PictureTransferProtoco1)协议的背景和内容,并从协议的工作过程出发,在PC上实现其在
USB(USB11)接口上的编程.进而在此基础上成功的完成了对数码相机的控制.关键词:
PTP协议,DSPDs,USB,WDM驱动模式
0引言
随着工业技术的发展,DSPDs(数字静态摄影设
备,通常指数码相机)在生产和消费领域正在被越来越
广泛地应用,也不断地对DSPDs提出更多的新要求.
传统的DSPDs凸现了许多缺点.一方面由于它的系
统总是离不开PC机,对不同品牌的同类产品需要不
同的驱动程序来驱动,给实际应用造成众多不便;另一
方面传统DSPDs的开发要求原开发商必须提供基于
各种平台的SDK,也给各种基于嵌入式系统的开发带
来不便.2000年8月,PIMA(PhotographicImaging
ManufacturersAssociation)提出了一个DSPDs的统
一
标准,即PTP协议(PIMA15740:
2000).它是一种
专为DSPDs设计的静态图像传输协议,可以使
DSPDs方便地与诸如打印机,PC等设备进行对话,通
过发送接收命令来完成操作控制,数据上载/下载,克
服了传统的DSPDs的缺点,大大减轻了开发和应用
的复杂程度.
本文简单介绍了PTP协议的背景和内容,并从协议
的工作过程出发,在PC上实现其在USB接口上的编
程,进而在此基础上成功的完成了对数码相机的控制.1PTP协议
PTP是一种与平台独立的协议,可以在Window/
Linux或Macintosh等各种操作系统上实现.在
WindowsXP下,PTP被捆绑在驱动程序中,通过
WlA(WindowsImageAcquisition)来支持静态图象
设备,并使用WDM驱动结构.当在设备驱动层加入
PTP后,WIA能够自动识别出支持PTP的DSPDs,并
且能够直接访问它们.
1.1PTP协议简介
PTP协议的是针对DSPDs而设计的.最常见的
DSPDs如数码相机,其特点就是带有永久存储器,并
且在离散时间间隔里拍摄二维图像.PTP可以在lr-
DA,USB,IEEE1394和RF/Bluetooth等多种接口上
进行通信.PTP协议内容包括对设备进行发送和接收
图片的操作和缩略图的预览,其他特性包括相关数据
的传送(包括图像的信息,设备信息等),和一些对设备
的远程控制操作.PTP被设计成支持数码相机的图像
和多媒体格式,如在ISO12234—1和ISO12234—2
中定义的Exif和TIFF/EP格式,同时其他一些数字图
像设备根据其各自特点也得到PTP不同程度的支持.
1.2DSPDs的基本要求
DSPDs必须满足以下几点才能使之遵从PTP协议.1)DSPDs必须提供至少一种通信接口的硬件和软
件,PTP在此接口上通信;2)支持缩略图;3)标准图像
格式和图像描述数据格式.为了确保协同工作能力,必
须定义标准的机制来描述图像和其他设备里的数据;
4)支持异步事物.DSPDs必须有产生和处理异步事务
的能力.
1.3PTP的初始端和响应端
与通常意义上的主从端连接方式或同等地位连接
方式相比,PTP协议只定义初始端和响应端.初始端
指的是开启通话(Session)的一端,同时也完成在特定
通信接口上的初始化操作请求(Operations).而响应
端就是通过发送数据/响应来响应操作的一端.某种设
备可以成为初始端,也可以成为响应端,或者两者都
是.如果一台PC通过USB接口跟设备做PTP协议通
信,那么PC只能是初始端,而此设备只能是响应端.
1.4PTP通信协议
PTP中通信以事务为单位的.每次事务总是以初
始端发出一个OpenSession请求来开始的.每次事务
18基于USB接口的PTP协议在Win32上编程实现
都有一个事务号(SessionlD),在同一次事务的多次通
话中,事务号,设备中对象句柄(ObjectHandIes)和存 储号(StoragelDs)不变.一次事务的完成包括很多次
传输,每次传输都有一个传输号(TransactionID),并
且每完成一次传输,传输号加1.
PTP的通信协议包含状态转换机.通常有请求
态,数据态和响应态三种状态,如图1所示.请求态由
初始端发出一个请求,如果当前通话包含对设备进行
发送/接收数据的操作,那么随后紧跟一个发送/接收
数据的数据态.数据的传送可以在初始端和响应端之
间任一方向进行.当响应端接收到请求并处理完毕后,
返回一个响应给初始端,至此一次传输完成,传输号加
1,回到等待状态等待初始端的下一次操作请求.在所
有传输完成后,以初始端发出CloseSession请求,设
备端返回OK响应值,至此结束此次事务.
图1PTP通信状态转换图
1.5PTP定义的标准代码集
(1)命令请求主要代码集
请求代码请求名称
0xl0o1
OxlOo2
Ox1003
0xl006
0xl007 0xl0o8
0xl009
0xl0oA
0xlO15
0x1O16
GelDevicelnfo
OpenSession
ClOseSessiOn
GetNumObjects
GetObjectHandles
GetObjectlnfo
GetObject
GetThumb
GetDevicePropValue
SetDevicePropValue
(2)设备响应主要代码集
响应代码响应名称
0x2001OK
0x2003SessionNotOpen
0x2004lnvalidTransactionlD
0x200FAccessDenied
0x2005OperationNotSupported 0x2016InvalidCodeFormat
(3)设备属性主要代码集
设备属性代码设备属性名称
0x5003ImageSize
CompressionSetting
WhiteBalance
FocalLength
FocusDistance
FocusMode
Contrast
(4)请求包,数据包和响应包的格式
ContainerLength:
确定此次传送的包长度.
ContainerType:
指明是三态中的某一种.
code:
指明某种请求或返回响应值的码.
TransactionID:
传输号.
Parameters:
参数,不同的请求有不同的参数或
参数序列.
2PTP在USB接口上的实现
2.1系统框架
由USB接口主从结构特性决定了PTP在USB
上通信必定采取主从式结构[2】.在本文中主端是PC
机,从端设备是数码相机.系统框架如图2所示.PTP应用程序
USB功能驱动程序
l
USB接口驱动程序
USB主端控制器
USB从端控制器
PTP固件
主机端
设备端
图2系统框架
PTP应用程序是PTP协议的实现模块,以调用设
备驱动程序的接13来传输数据.USB驱动程序完成
USB设备的检测,枚举,电源管理等初始化工作,向下
向总线驱动器递交URB(USBRequestBlock)请求
模块,向上为应用程序提供接口.在设备端接收到
USB数据包后,由运行在设备中的固件将接收的PTP
代码集解释成针对设备的具体操作.
2.2PTP在USB接口上的通信
USB接口双方需要具备批r
量,中断和控制三个通道,如图3l
所示.其中批量通道完成PTP的l
请求,数据,响应的传输,中断通道I 完成设备异步事件对主端的通知,
控制通道作为USB的缺省通道,完
图3接口框架
45894
∞∞∞∞∞们955555XXXXXXO00000
《工业控制计算机》2002年15卷
第12期19
成对USB初始化工作,同时也完成PTP的发送取消,USB总线驱动程序和USB功能驱动程序.USB总线
设备重启等操作.驱动程序由操作系统提供,它位于USB功能驱动程序
设备端通过批量传输通道来进行图像传输和数据的下层,负责控制硬件接El.USB功能驱动程序由开发
传输.由于USB批量通道是单向的,设备至少有lN/者编写,位于USB
总线驱动程序的上层,通过向USB
OUT两个批量传输的端点.当一次传送的数据大于批总线驱动程序发送包含URB的lRP(1/ORequest
量传输通道的有效载荷时,需分成多次来传送完成.根Packet)来实现对USB设备信息的发送或接收.
据PTP传输协议的三态转换机制,当设备完成USB当应用程序对设备进行l/O操作时,使用Win一
配置并处于等待状态,此时可以接收从主机发来的dowsAPI函数来进行WlN32调用.l/O系统服务接
PTP操作请求,并在完成操作后返回一个响应.主机收此调用,并通知
l/O管理器,然后由l/O管理器将
根据返回的响应决定下一步操作.如设备接收到错误此请求构造成一个合适的lRP,并把它传送递给USB
的操作请求,批量输入通道将返回STALL响应值,主功能驱动程序.USB功能驱动程序接收到这个lRP以
机端将发出Get—Device—Status请求获得出错原因,后,根据lRP中包含的具体操作代码,构造相应的
随后发出Clear_Feature清除故障,直至重发成功.URB,并把URB放到一个新的lRP中,然后把此lRP
2.3应用程序设计传递到USB总线驱动程序,USB总线驱动程序根据
在编写Win32应用程序时,可以通过使用函数,lRP中所含的URB信息执行相应的操作,并把操作结
用类似访问文件的方法访问设备.除了打开,读,写和果通过lRP返回给USB功能驱动程序.USB功能驱
关闭函数外,DeviceloControl为驱动程序提供其他特动程序接收到此lRP后,将操作结果通过lRP返回给
殊功能的选择.驱动程序为Win32程序员提供设备l/O管理器,最后
l/O管理器将此lRP中操作结果返
名,函数CreateFile利用该设备名打开和创建到设备还给应用程序,至此应用程序对USB设备的一次l/O
的连接.ReadFile和WriteFile系列函数用于对设备文操作完成.
件发出读或写的请求,DevieloControl可以发送数据功能驱动程序除了负责处理应用程序的I/O请
给驱动程序和从驱动程序读取数据.求外,还要处理PnP管理器发送给它的PnP请求.通
根据PTP协议,定义如下的结构体来配置请求,过对这些请求的处理,USB功能驱动程序可支持USB
数据和响应的格式:
设备的热插拔和即插即用功能.
structPTPRequest{3结束语
uns’gnedlonglength;本文采用Windows98DDK来编译USB批量传
uns.gnedintYPe:
输的驱动程序,通过调用WindowsAPI函数编写
uns
.
igne?
:
mc?
de:
.PTP协议的应用程序,编译通过后,对Kodak
unsignedchdate[一4]
;
‘DX3900数码相机进行下载图片和功能设置的操作,
}:
当发送请求/数据时,可以定义一PTPRequest已经顺利的实现了
PTP协议所支持的功能.应用程序
类型的指针,然后开辟一Buffer,并用PTPRequest指的代码可以方便地移植到各种平台上应用.向它.配置PTP格式时,通过调用结构指针的成员来
设定具体的内容.配置完后,便可以通过调用De.丐x陬
vieloControl函数,在批量传输OUT通道发送
Buffer1PIMA5740:
2∞0,PhoographY—
EIectr0nicstillpicture
的;.
以诃用
..
-imaging-P
h
ic
ytu言eT:
sPrlP:
for...Digi,tMalSti/lltrol函数将接收到的数据存放到
Buffer中,同样通过Wwwpim.
A.net/standars10/PA10
‘………
调用结构指针的成员来获得具体内容.2UniversaISeriaIBusStillImaqeCaptureDeviceDe
2.4驱动程序设计nition.Revision1.0.JuIy11l2000.http:
//wwW.us
B.org/
在Windows下,USB设备驱动程序的developers/devclass.html
设计是基于WDM(WindosDriverMode1)的嘲.WDM3CransCant,WindowsWDM设备驱动程序开发指南,机械
采用分层驱动程序模型,对于USB设备而言,可分为工业出版社,2000[收稿日期:
2002.11.19] 眉争:
我社办理邮购的《监控组态软件及其应用》一书,目前已售完,请读者不要再汇款至我社了.已经
汇款的请与我社联系,确定处理事宜.如需要,请联系北京三维力控科技有限公*-1,地址:
北京市海淀区中
关村大街27号中关村大厦412,邮编:
100080,电话:
010—8285/
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 USB 接口 PTP 协议 Win32 编程 实现