调用流驱动的时候,creatfile在初始化里么?

llaotang 2011-01-04 10:17:38
自己写一个对话框,想用按钮触发事件,是应该在应用程序初始化的时候,使用creatfile 和Deviceiocontrol么?
还是要在按钮事件里添加?
我现在用按钮里添加似乎没有效果,代码如下,大侠看看问题出在哪里
void CjusttestDlg::OnBnClickedButton1()
{
// TODO: 在此添加控件通知处理程序代码
//reslt =CjusttestDlg::SetBrightness(IOCTL_PWM_SET_PRESCALER);
HANDLE hDevice; // handle to the drive to be examined
BOOL bResult;
hDevice = CreateFile(TEXT("PWM1:"), // drive to open
GENERIC_READ|GENERIC_WRITE, // no access to the drive
0, // share mode
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 ;
}

bResult =DeviceIoControl(hDevice, // device to be queried
IOCTL_PWM_SET_LEVEL_1, // operation to perform
NULL, 0, // no input buffer
NULL, 0, // output buffer
NULL, // # bytes returned
NULL); // synchronous I/O

CloseHandle(hDevice);

return ;
}
...全文
134 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
loongembedded 2011-01-07
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 llaotang 的回复:]
驱动加载成功了,可是还是不行,我估计问题是在CReatfile和deviceiocontrol中,我上述的应用这样可以么?
[/Quote]
那很有可能是你上面的应用的问题,仔细排查一下
llaotang 2011-01-07
  • 打赏
  • 举报
回复
驱动加载成功了,可是还是不行,我估计问题是在CReatfile和deviceiocontrol中,我上述的应用这样可以么?
unsway123 2011-01-06
  • 打赏
  • 举报
回复
显然嘛。。驱动没加载成功,,,看看_init这个函数。。仔细的加打印查查。。不过加载不成功的因素比较多。可能是注册表没写对也可能是bib没写对。但是也就那几个方面了。应该很好查
llaotang 2011-01-06
  • 打赏
  • 举报
回复
但是我在注册表active里找不到pwm,只有在buildin里有,就算用驱动助手加载,在active里也米有
llaotang 2011-01-06
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 veron_04 的回复:]

我觉得是你的驱动没有加载成功。
[/Quote]
我在platform。reg里添加了,然后也在。bib文件中加了一句
IF BSP_NOPWM !
pwm.dll $(_FLATRELEASEDIR)\pwm.dll $(XIPKERNEL) SHMK
ENDIF BSP_NOPWM !
只是重新build and sysgen的时候报错了,编译时能通过的,不知道有没有影响?
贝隆 2011-01-06
  • 打赏
  • 举报
回复
我觉得是你的驱动没有加载成功。
llaotang 2011-01-05
  • 打赏
  • 举报
回复
现在设置断点后,deviceiocontrol的值是1,也就是说他被正确调用了,这样是不是只有我流驱动编写有问题了?
llaotang 2011-01-05
  • 打赏
  • 举报
回复
在建立流驱动的时候,我重新建立bsp失败了,有没有影响的?是不是这样生成的nk并不能用的?用驱动助手加载了驱动可不可以达到这个效果?
llaotang 2011-01-05
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 llaotang 的回复:]

我定义了一个成员函数如下,这样可以么?
BOOL CjusttestDlg::SetBrightness(DWORD value)
{
HANDLE hDevice; // handle to the drive to be examined
BOOL bResult; // results flag

hDevice =……
[/Quote]

我用dm驱动助手加载了,现在creatfile的返回值是hpwmfile 0x006b1a03 {void*} void*
但是好像调用deviceioctl的时候没效果,我在驱动的ioctol加了调试信息,可是怎么查看?
loongembedded 2011-01-04
  • 打赏
  • 举报
回复
1.楼主要确认你的PWM驱动正常加载
2.确认你调用hDevice = CreateFile(TEXT("pwm1:")的时候返回值是什么?如果是INVALID_HANDLE_VALUE就直接返回了,如果返回值正常会调用DeviceIoControl,你在PWM去偶的那个的XXX_IoControl函数中加入一些调试信息,看是否进来这里。
llaotang 2011-01-04
  • 打赏
  • 举报
回复
我定义了一个成员函数如下,这样可以么?
BOOL CjusttestDlg::SetBrightness(DWORD value)
{
HANDLE hDevice; // handle to the drive to be examined
BOOL bResult; // results flag

hDevice = CreateFile(TEXT("pwm1:"), // drive to open
GENERIC_READ|GENERIC_WRITE, // no access to the drive
0, // share mode
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
value, // operation to perform
NULL, 0, // no input buffer
NULL, 0, // output buffer
NULL, // # bytes returned
NULL); // synchronous I/O

CloseHandle(hDevice);

return (bResult);
}

void CjusttestDlg::OnBnClickedButton1()
{
// TODO: 在此添加控件通知处理程序代码
reslt = CjusttestDlg::SetBrightness(IOCTL_PWM_SET_LEVEL_1);
}
unsway123 2011-01-04
  • 打赏
  • 举报
回复
LZ直接在你的PWM驱动里面的_open函数里面加打印。。就能看到你的cratefile能否成功
llaotang 2011-01-04
  • 打赏
  • 举报
回复
调试的时候出现hDevice CXX0017: 错误: 未找到符号“hDevice”,这是不是说明我打开文件操作就出错了?,我把pwm.lib 和pwm.dll放在目录下了,而且在链接器也添加了,索引是1,所以hDevice = CreateFile(TEXT("pwm:"),GENERIC_READ|GENERIC_WRITE,FILE_SHARE_READ|FILE_SHARE_WRITE,NULL, OPEN_EXISTING,0,NULL);应该没有错吧,这是什么原因呢?

内容概要:本文针对T型三电平逆变器在电网电压跌落条件下的低电压穿越(LVRT)问题,提出了一种结合改进电解耦控制与直侧中点电位平衡的综合控制策略。通过建立逆变器的数学模型,采用双二阶广义积分器(DSOGI)实现电网电压正负序分量的精确分离,并在此基础上设计自适应无功支撑与故障电限幅控制,以满足LVRT对无功补偿和电安全性的要求。为提升不对称故障下的动态性能,引入改进的正负序解耦电控制方法,有效克服传统PI控制器在耦合干扰下的控制滞后问题。同时,结合零序电压注入法对中点电位进行主动调控,抑制中点电压漂移,保障系统长期稳定运行。整个控制方案在Simulink平台上完成建模与仿真验证,结果表明该方法在电网故障期间具有优良的动态响应特性、稳定的中点电位控制能力和可靠的并网运行性能。; 适合人群:具备电力电子、自动控制或新能源并网技术背景,从事逆变器控制算法开发、微电网系统集成或可再生能源发电系统研究的工程技术人员及高校研究生。; 使用场景及目标:①用于提升T型三电平逆变器在电网故障条件下的并网可靠性与电能质量;②为高比例新能源接入场景下的LVRT控制策略设计提供理论支撑与技术路径;③适用于需要实现高性能电控制与中点电位稳定的工业级变器控制系统开发。; 阅读建议:建议结合提供的Simulink仿真模型进行学习,重点剖析正负序分离、改进电解耦控制环设计及中点电位平衡模块的协同工作机制,可通过设置不同类型的电网故障(如单相短路、两相短路)和调节控制参数开展对比实验,深入掌握各模块对系统整体性能的影响规律。

19,523

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 嵌入开发(WinCE)
社区管理员
  • 嵌入开发(WinCE)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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