各位大大,怎么读取USB口的数据啊??

zhaoxinghan 2004-04-12 09:13:00
老板交代的任务,硬件部分已经完成,但现在要编一个读取usb口发来的数据并进行处理的软件,usb口的数据读取怎么实现啊??
...全文
270 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
gjgj3368 2004-09-14
  • 打赏
  • 举报
回复
学习
guanri 2004-09-14
  • 打赏
  • 举报
回复
这个我在行,写个usb的驱动程序,然后用iocontrol等函数即可
星光伴月 2004-09-06
  • 打赏
  • 举报
回复
www.cppfans.com
hongyanzhou 2004-09-03
  • 打赏
  • 举报
回复
gz
yunuo2010000 2004-04-13
  • 打赏
  • 举报
回复
学习
CityHost 2004-04-13
  • 打赏
  • 举报
回复
去驱动开发网看看吧
zhaoxinghan 2004-04-13
  • 打赏
  • 举报
回复
哪位大大介绍几本书,或者指点我应该看什么样的书??
zhaoxinghan 2004-04-13
  • 打赏
  • 举报
回复
哪位大大介绍本书看啊,或者说明去书店找哪一类的书看,要不工作无法完成啊。
HITGB 2004-04-13
  • 打赏
  • 举报
回复
用了usb芯片吗?
zhaoxinghan 2004-04-12
  • 打赏
  • 举报
回复
@_@

看晕了.......

这个东西有没有合适的书籍啊??哪位大大介绍几本。
MEFULEU 2004-04-12
  • 打赏
  • 举报
回复
转:

目前大多数的外部存储设备(例如USB活动硬盘等)基本上都采用FAT文件系统,用户可以像
使用主机硬盘一样利用资源管理器对外部存储设备上的文件执行各种操作。在Windows环境
下,外部存储设备的驱动程序除要完成普通的I/O读写操作之外,还需要构造文件系统接口,
以实现Windows环境下磁盘的逻辑操作到物理操作的转换。下面以一个虚拟设备为例,介绍
在Windows环境下构造文件系统驱动程序的基本原理和方法。
Windows的文件系统
Windows系列操作系统采用IOS(Input/Output Supervisor,输入输出管理程序)技术。IOS
管理所有的存储设备,如IDE硬盘、可移动式软盘、CDROM等。IOS的接口以及其在操作系统
中的逻辑层次(暂不考虑SCSI结构)如下图所示。


我们从图中可以看到Windows采用的是一种分层的、可安装的文件系统,每一层都完成一特定
的功能,层与层之间是相对独立的实体。我们要创建自己的文件系统驱动,一般不需要对每
一层都提供服务,比如我们采用硬盘上的FAT文件系统时,可以先利用VFAT.VXD作FSD(File
System Driver,文件系统驱动器),再用DISKTSD.VXD模拟硬盘物理行为。而我们真正需要
做的只是编写自己的端口驱动程序,以响应基于物理或逻辑分区的读写操作。
构造文件系统驱动程序
在IOS初始化阶段,它将在SYSTEM\IOSUBSYS目录下搜索后缀为PDR(Port Driver)、MPD
(SCSI Miniport Driver)、VXD(FSD、TSD等)的设备驱动程序,并向它们发送
SYS_DYNAMIC_DEVICE_INIT消息。为了响应IOS,端口驱动程序在响应SYS_DYNAMIC_DEVICE_INIT
消息时填写DRP(Device Request Packet)结构并调用IOS_Register向IOS注册。DRP结构的
AEP域中包含的是回调地址,在端口驱动程序装载后,IOS就通过发送AEP对DRP结构进行初始
化。典型的AEP响应代码如下:
VOID __cdecl SAMPLE_Aer(AEP* pAep)
{
switch (pAep->AEP_func)
{
//IOS最先发送此消息
case AEP_INITIALIZE:
……//创建并填写DDB(Device Driver Block)
//返回AEP_SUCCESS表示创建成功
pAep->AEP_result = AEP_SUCCESS;
break;
//DDB成功创建后,IOS发送此消息
case AEP_DEVICE_INQUIRY:
pDcb = ((AEP_inquiry_device*)pAep)->AEP_i_d_dcb;
if (((DCB*)pDcb)->DCB_unit_on_ctl=0)
{
……//第一次发送此消息时创建用于虚拟设备的DCB(Device Control Block),DCB将被
用于描述虚拟设备的存储容量、最大传输能力等参数
pAep->AEP_result = AEP_SUCCESS; }
else
//由于只创建一个虚拟设备,所以返回AEP_NO_MORE_DEVICES终止发送此消息
pAep->AEP_result =
AEP_NO_MORE_DEVICES;
break;
case AEP_CONFIG_DCB:
//IOS在终止AEP_DEVICE_INQUIRY消息发送后,发送此消息为我们创建的虚拟存储设备分配
驱动器号(C: D: E:等)
//返回AEP_SUCCESS表示成功
pAep->AEP_result = AEP_SUCCESS;
break;
//初始化结束时IOS 发送此消息
case AEP_BOOT_COMPLETE:
//返回AEP_SUCCESS,通知IOS将端口驱动程序驻留在内存中
pAep->AEP_result = AEP_SUCCESS;
break;
default:
break;
}
}
在初始化结束后,IOS便通过端口驱动程序在AEP_CONFIG_DCB消息响应中登记的IO请求响应
函数,发送IOP(IO Request Packet)完成物理的读写。典型的IO请求响应函数代码如下:
VOID __cdecl SAMPLE_RequestHandler(IOP* pIop)
{
switch (pIop->IOP_ior.IOR_func)
{
//检查驱动器介质是否存在
case IOR_MEDIA_CHECK_RESET:
//非移动式磁盘始终返回IORS_SUCCESS
pIor->IOR_status = IORS_SUCCESS;
break;
//驱动器读操作
case IOR_READ:
……//读成功则返回IORS_SUCCESS
break;
//驱动器写操作
case IOR_WRITE:
……//写成功则返回IORS_SUCCESS
break;
default:
//处理不支持的命令
pIor->IOR_status =
IORS_INVALID_COMMAND;
break;
}
}
-- pIop->IOP_callback_ptr;
pIop->IOP_callback_ptr->IOP_CB_address(pIop);
}
端口驱动程序的读写操作实际上是以扇区为单位进行的,并不涉及到单字节的读写
zhaoxinghan 2004-04-12
  • 打赏
  • 举报
回复
那是不是我这种初学者无法做到了????那我怎么办啊!!。。。。

我们老板认为这个和串口内容差不多,硬件已经开发好了。。。。
CityHost 2004-04-12
  • 打赏
  • 举报
回复
这是DDK的东西。
好恐怖的。

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧