biqingshui
驱动牛犊
驱动牛犊
  • 注册日期2003-06-22
  • 最后登录2004-12-01
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1690回复:11

USB与相机通信的问题

楼主#
更多 发布于:2003-07-03 09:30
我想编个程序实现USB口控制相机拍摄的功能,虽然也看了一些相关的书籍,但总是不得要领。我并不需要编USB的驱动程序,只想通过USB口向相机写一些控制命令。也就是诸如ReadFile,WriteFile。但我不知道如何获得USB的句柄和通道,不知道是否还得用SDK,DDK编程。已经差不多半个月了,那位大侠发发慈悲,救救我吧,实在是没辙了!如果有直切要害的书籍资料或者源码也行啊..............
lxb_gd
驱动太牛
驱动太牛
  • 注册日期2002-01-16
  • 最后登录2018-06-02
  • 粉丝0
  • 关注0
  • 积分72408分
  • 威望362391点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
  • 社区居民
沙发#
发布于:2003-07-05 17:44
楼主和我做的事情有些相像,我是想和USB打印机通讯。
我用USB HOUND监测打印机和PC机通讯的数据,VENDOR命令也知道一些,枚举也没问题,其实还有个很繁琐的事:就是它在VENDOR命令中的数据不但有一定的格式,它实际上还有个协议和命令在数据里,如PCL3打印命令等,它传输过程也有个协议,有些认证和校验的过程,如果没有相关的SPECIFICATION,根本就没法做!!!!
事实证明,需要做设备的厂家提供帮助,否则,就犹如破解一个程序那么复杂。
wshsabc
驱动牛犊
驱动牛犊
  • 注册日期2003-05-09
  • 最后登录2008-01-14
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-07-05 16:31
谢谢hustdj大侠,讲的够明白,谢谢!
yjmpepe
驱动牛犊
驱动牛犊
  • 注册日期2003-04-18
  • 最后登录2016-01-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-07-05 09:49
重写驱动没什么意义,而且会很复杂,一般不太可能,没有源程序也改不了驱动。楼上说得有道理,从相机插入usb口开始,再启动软件,监视来回命令交互,可以大致猜出工作流程。当然这期间可能会比较复杂,如果命令参数实在搞不清楚那就比较困难了。
hustdj
驱动牛犊
驱动牛犊
  • 注册日期2003-06-06
  • 最后登录2008-07-02
  • 粉丝0
  • 关注0
  • 积分40分
  • 威望5点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-07-04 11:32
vendor命令当然是在firmware中。

以一个用USB接口的相机为例。

如果主机端要通过USB让相机执行特殊的操作,它可通过
USB的控制传输来实现。

在USB中,控制传输是有特别规定的,它自己指定了12个
基本的控制传输请求。

如果要实现自己的控制传输,也就要构造自己的Vendor命令。
方法是在bmRequestType field中,设定相应的值。并把
相应的操作写人固件。(USB Specification 2.0 ,P248)

这样主机端也就可以发送这个Vendor命令来让USB设备执行
相应的操作。


所以,第一件事就是要知道这个相机的固件,从而知道
我们可以通过USB接口向相机发送什么样的命令。

如果你是做数码相机,并让数码相机有这个功能,
那么你的任务就是编写这么一个Vendor命令的
程序。剩下的事就是在主机中发送这个命令。


如果你是从市场上选一个数码相机,让它实现这个功能。
那么就让相机通过USB与主机相连时,如果相机相应给的
软件中,能软件实现相机拍摄,那么就可以判断这个命令是
通过USB传过去的,而这个USB的命令最有可能的就是一个
Vendor命令。你的任务就是就是找出这个Vendor命令。



biqingshui
驱动牛犊
驱动牛犊
  • 注册日期2003-06-22
  • 最后登录2004-12-01
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2003-07-04 08:45
其实国外已经有相应的软件了,只是它实现的一些功能不能满足我工作中的需要,我是想自己编一个,具体的通信标准我这里是有的,但就是不知道该怎么用,我自己一直是用VC编程,但从未编过驱动程序等,有好多地方不明白,还希望大家帮忙啊。
wshsabc
驱动牛犊
驱动牛犊
  • 注册日期2003-05-09
  • 最后登录2008-01-14
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2003-07-03 19:23
hustdj 大侠:

向你请教一个问题,vendor命令是不是在firmware中?我有些不太明白的是,这vendor命令一般是怎么实现的,是不是要构造一个vendor‘s URB,可是当这个URB传给总线驱动(他应该只认识标准的URB吧),他怎么识别这个URB呢,我知道我理解一定有误,还望大侠给予指教。谢谢!
hustdj
驱动牛犊
驱动牛犊
  • 注册日期2003-06-06
  • 最后登录2008-07-02
  • 粉丝0
  • 关注0
  • 积分40分
  • 威望5点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2003-07-03 16:14
如果相机通过USB连上电脑以后,电脑可以软件实现相机的自动
拍摄,那么,一定可以实现。
这里一定有一些Vendor的命令,可以通过USB接口传过去。

如果不能软件实现相机拍摄,那么这个相机只有一些普通
的数据传送的命令,这个项目无法实现。
lxb_gd
驱动太牛
驱动太牛
  • 注册日期2002-01-16
  • 最后登录2018-06-02
  • 粉丝0
  • 关注0
  • 积分72408分
  • 威望362391点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
  • 社区居民
8楼#
发布于:2003-07-03 15:58
我认为还要知道相机固件的细节,如接口命令的格式,要不然即使枚举了,也不能和pc机通讯。
luckyjm
驱动中牛
驱动中牛
  • 注册日期2002-12-19
  • 最后登录2004-03-17
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2003-07-03 14:57
感觉无从下手,关注。
biqingshui
驱动牛犊
驱动牛犊
  • 注册日期2003-06-22
  • 最后登录2004-12-01
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2003-07-03 13:04
其实是USB的通信问题,相机连到USB后确实有个移动盘符出现,但我需要向相机写一些命令,我现在就是不知道改往哪个地方写,不知道USB的GUID
net-wolf
驱动牛犊
驱动牛犊
  • 注册日期2003-06-19
  • 最后登录2005-03-29
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2003-07-03 12:21
我想编个程序实现USB口控制相机拍摄的功能,虽然也看了一些相关的书籍,但总是不得要领。我并不需要编USB的驱动程序,只想通过USB口向相机写一些控制命令。也就是诸如ReadFile,WriteFile。但我不知道如何获得USB的句柄和通道,不知道是否还得用SDK,DDK编程。已经差不多半个月了,那位大侠发发慈悲,救救我吧,实在是没辙了!如果有直切要害的书籍资料或者源码也行啊..............



这个好像不太容易实现吧?

每个相机生产厂家应该都会有自己的接口,好像没有统一的标准。

首先相机连接到USB口,操作系统会识别为移动 存储设备,你利用标准的读写文件的请求就可以了。

游客

返回顶部