jewelry
驱动牛犊
驱动牛犊
  • 注册日期2003-07-28
  • 最后登录2005-05-15
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1867回复:17

关于应用程序向驱动程序发送数据的一个问题

楼主#
更多 发布于:2004-06-03 19:05
应用程序向驱动程序发送数据时,必须发出字符串类型吗?
比如说我现在想发一连串的数据(从1到500),我是否要把这些整型数先转换成
二进制数并赋予字符串类型,之后再利用DeviceIoControl来将数据发送出去?
谢谢了先
flyhye
驱动小牛
驱动小牛
  • 注册日期2003-07-01
  • 最后登录2012-01-11
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-06-03 19:13
不太对吧:)
千载奇逢,无如好书良友 一生清福,只在碗茗炉烟
jewelry
驱动牛犊
驱动牛犊
  • 注册日期2003-07-28
  • 最后登录2005-05-15
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-06-03 19:32
那应该怎么做?
不太对吧:)
flyhye
驱动小牛
驱动小牛
  • 注册日期2003-07-01
  • 最后登录2012-01-11
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-06-03 19:43
应该相应的填入input buffer中呀,不对吗?
千载奇逢,无如好书良友 一生清福,只在碗茗炉烟
jewelry
驱动牛犊
驱动牛犊
  • 注册日期2003-07-28
  • 最后登录2005-05-15
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-06-03 19:44
这个我知道,是填入buffer中的。
但就是填入buffer中的应该是什么样的数据呢?
应该相应的填入input buffer中呀,不对吗?
flyhye
驱动小牛
驱动小牛
  • 注册日期2003-07-01
  • 最后登录2012-01-11
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2004-06-03 19:47
你看msdn里面:

    hDevice = CreateFile(\"\\\\\\\\.\\\\PhysicalDrive0\",  // drive to open
                    0,                // no access to the drive
                    FILE_SHARE_READ | // share mode
                    FILE_SHARE_WRITE,
                    NULL,             // default security attributes
                    OPEN_EXISTING,    // disposition
                    0,                // file attributes
                    NULL);            // do not copy file attributes
  
    if (hDevice == INVALID_HANDLE_VALUE) // cannot open the drive
    {
        return (FALSE);
    }
  
    bResult = DeviceIoControl(hDevice,     // device to be queried
        IOCTL_DISK_GET_DRIVE_GEOMETRY,     // operation to perform
                    NULL, 0,               // no input buffer
                    pdg, sizeof(*pdg),     // output buffer
                    &junk,                 // # bytes returned
                    (LPOVERLAPPED) NULL);  // synchronous I/O
  
    CloseHandle(hDevice);

pdg为DISK_GEOMETRY结构体指针,这里是获得信息而已
  
千载奇逢,无如好书良友 一生清福,只在碗茗炉烟
jewelry
驱动牛犊
驱动牛犊
  • 注册日期2003-07-28
  • 最后登录2005-05-15
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2004-06-03 20:02
bResult = DeviceIoControl(hDevice, // device to be queried
IOCTL_DISK_GET_DRIVE_GEOMETRY, // operation to perform
NULL, 0, // no input buffer
pdg, sizeof(*pdg), // output buffer
&junk, // # bytes returned
(LPOVERLAPPED) NULL); // synchronous I/O

CloseHandle(hDevice);

pdg为DISK_GEOMETRY结构体指针,这里是获得信息而已


pdg是一个指针,但他所指向的应该是一个普通的十进制数呢,还是一串比特流(即二进制数)?
flyhye
驱动小牛
驱动小牛
  • 注册日期2003-07-01
  • 最后登录2012-01-11
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2004-06-03 20:06
你要我怎么说呢???
他指向的是一个结构体,结构体里面的数据当然是以byte存放的数据咯。
pdg是一个指针,但他所指向的应该是一个普通的十进制数呢,还是一串比特流(即二进制数)?
千载奇逢,无如好书良友 一生清福,只在碗茗炉烟
jewelry
驱动牛犊
驱动牛犊
  • 注册日期2003-07-28
  • 最后登录2005-05-15
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2004-06-03 20:16
老大,帮帮忙,说到关键点了。
就是这个结构体的问题。
如果我要发一串从1到500的数,我应该把这一串数放到这个结构体中。那这500个数是否应该转换成二进制的数?也就是说,这个结构体中的数应该是一种什么样的数据格式?
可能问题比较菜,谢谢了


你要我怎么说呢???
他指向的是一个结构体,结构体里面的数据当然是以byte存放的数据咯。
[quote]pdg是一个指针,但他所指向的应该是一个普通的十进制数呢,还是一串比特流(即二进制数)?
[/quote]
flyhye
驱动小牛
驱动小牛
  • 注册日期2003-07-01
  • 最后登录2012-01-11
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2004-06-04 08:39
侠客,难道你存储的数据不是以二进制存放的吗?你获得的哪个数据不是0和1组成的?
千载奇逢,无如好书良友 一生清福,只在碗茗炉烟
tianchi
驱动牛犊
驱动牛犊
  • 注册日期2004-04-20
  • 最后登录2005-03-10
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2004-06-04 10:40
这要看你下位机是怎么读的了,如果下位机是16位数据线,
上位机也应该是两个字节为一个单位.至于中间怎么传,你不用管他.
jewelry
驱动牛犊
驱动牛犊
  • 注册日期2003-07-28
  • 最后登录2005-05-15
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2004-06-04 11:50
那我在应用程序中,是否需要将人为地将数据进行二进制转换呢?
侠客,难道你存储的数据不是以二进制存放的吗?你获得的哪个数据不是0和1组成的?
flyhye
驱动小牛
驱动小牛
  • 注册日期2003-07-01
  • 最后登录2012-01-11
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2004-06-04 12:43
我被问倒了!:D
碰到牛人了!!!
我该怎么说……

无语……
千载奇逢,无如好书良友 一生清福,只在碗茗炉烟
jewelry
驱动牛犊
驱动牛犊
  • 注册日期2003-07-28
  • 最后登录2005-05-15
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2004-06-04 13:39
你不要这样子嘛!
我是因为不懂,所以才问的,也许你觉得得问题很可笑,但对我来说是困惑的。我知道VB中用套接字通信时,需要自己将数据转换成二进制后传送的。所以对VC与驱动程序通信接口上的具体操作很疑惑,又找不到相关的资料。
你一定是认为我不懂硬件有关信息传送的机制,呵呵,这个我当然明白。
也许是我自己没说清楚问题。

我被问倒了!:D
碰到牛人了!!!
我该怎么说……

无语……
cc_file
驱动牛犊
驱动牛犊
  • 注册日期2003-05-12
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
14楼#
发布于:2004-06-04 14:36
哈哈,是有一点低级,不过没关系,让我来试试
比如
char data[]={1,2,3,4};
你是要把data送到接口上,不需要转换,数组在内存里就是以二进制存放的1,2,3等数值,直接传递就好。除非你写成了
char data[]={\'1\',\'2\',\'3\',\'4\'};
呵呵
我站在人群中,笑容如阳光般的灿烂,但是你可知道,我心底的忧伤...
flyhye
驱动小牛
驱动小牛
  • 注册日期2003-07-01
  • 最后登录2012-01-11
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
15楼#
发布于:2004-06-04 15:50
sorry!
因为偶实在不知道该怎样回答你才好。
谢谢cc_file的解答;)

你不要这样子嘛!
我是因为不懂,所以才问的,也许你觉得得问题很可笑,但对我来说是困惑的。我知道VB中用套接字通信时,需要自己将数据转换成二进制后传送的。所以对VC与驱动程序通信接口上的具体操作很疑惑,又找不到相关的资料。
你一定是认为我不懂硬件有关信息传送的机制,呵呵,这个我当然明白。
也许是我自己没说清楚问题。

[quote]我被问倒了!:D
碰到牛人了!!!
我该怎么说……

无语……
[/quote]
千载奇逢,无如好书良友 一生清福,只在碗茗炉烟
larryhh
驱动小牛
驱动小牛
  • 注册日期2001-10-12
  • 最后登录2004-09-21
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
16楼#
发布于:2004-06-04 16:50
哈哈,有问题就问,勇气可嘉,支持你,不懂继续来
larry
flyhye
驱动小牛
驱动小牛
  • 注册日期2003-07-01
  • 最后登录2012-01-11
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
17楼#
发布于:2004-06-04 17:24
可惜偶有问题都不知道问谁:( 看来朋友太少了
哈哈,有问题就问,勇气可嘉,支持你,不懂继续来


[编辑 -  6/4/04 by  flyhye]
千载奇逢,无如好书良友 一生清福,只在碗茗炉烟
游客

返回顶部