3045|6

75

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

windows ddk driverstudio 摄像机驱动开发 [复制链接]

不知道怎么做,大家熟悉的给点意见,有啥资料也共享下,谢谢!

最新回复

所有的触发都是主机触发的,首先上位机要给设备发送命令,然后设备才会相应的  详情 回复 发表于 2010-1-25 21:48
点赞 关注

回复
举报

81

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
介绍一下背景吧,比如以前做什么,对哪些语言比较熟悉。
 
 

回复

63

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
ddk中的例子testcap或者AVshow。
后面那个好像是这个名字
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

4
 
参看DDK的例子,或者去买本书
 
 
 

回复

88

帖子

0

TA的资源

一粒金砂(初级)

5
 
我是用Driver studio 3.2 +DDk开发,我想请教下大家,是不是用driver studio 什么获取设备描述符这些东西,我不要管呢,是driver studio 自己已经封装好了吗,就是说我不要再进行这些操作就可以枚举设备了吗
 
 
 

回复

78

帖子

0

TA的资源

一粒金砂(初级)

6
 
我是这么做的1,我讲讲我的思路,大家看看我的正确不:

(1)首先用driver studio 3.2 生成驱动框架,设置了一个端点6用于数据的读取,默认的端点0用于发送命令,我的通信协议是这样的,当上位机(PC)发送F1 xx xx xx xx xx xx xx 给相机时,相机就通过发送一副图像给端点6,然后上位机去读取端点6中的数据:

     我在驱动中使用DeviceControl和应用程序进行通信,
NTSTATUS CameraDevice::DeviceControl(KIrp I)
{
        T.Trace(TraceInfo, __FUNCTION__"++.  IRP %p\n", I);

        NTSTATUS status = STATUS_SUCCESS;

        switch (I.IoctlCode())
        {

    case Camera_IOCTL_Control:
                status = Camera_IOCTL_Control_Handler(I);//设置控制参数;
                break;

    case Camera_IOCTL_Read:
                status = Camera_IOCTL_Read_Handler(I);//读端口6中的数据;
                break;

    case Camera_IOCTL_Write:
                status = Camera_IOCTL_Write_Handler(I);
                break;

        default:
                status = STATUS_INVALID_DEVICE_REQUEST;
                break;
        }

        if (status != STATUS_PENDING)
        {
                I.PnpComplete(this, status);
        }

        T.Trace(TraceInfo, __FUNCTION__"--.  IRP %p, STATUS %x\n", I, status);

        return status;
}

  在应用程序中 使用openbyinterface()函数得到打开设备

  然后使用DeviceIoControl 把控制命令发过去,我用bushound 查看,命令是发送过去了,但是相机没有给我 返回图像数据,是哪个地方出错了呢


  void CTest_CameraDlg::TestControlParam()//这样参数传进去不行啊
{
        UCHAR        bufInput[IOCTL_INBUF_SIZE]={0x40,0xF1,0x00,0x00,0x00,0x00,0x08,0x00};                // Input to device
        UCHAR        bufOutput[IOCTL_OUTBUF_SIZE];        // Output from device
        ULONG        nOutput;                                                // Count written to bufOutput

        if (!DeviceIoControl(m_hDevice,
                Camera_IOCTL_Control,
                bufInput,
                IOCTL_INBUF_SIZE,
                bufOutput,
                IOCTL_OUTBUF_SIZE,
                &nOutput,
                NULL)
                )
        {
                MessageBox("Camera_IOCTL_Control", "错误", MB_OK | MB_ICONHAND);//
        }
        else
        {
                CString str;
                str.Format("0x%x",bufOutput);
                SetDlgItemText(IDC_OutputEndpoint,str);
        }
}
欢迎大家一起讨论,共同学习

 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

7
 
所有的触发都是主机触发的,首先上位机要给设备发送命令,然后设备才会相应的
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表