我现在这样操作:
// 打开 GPIO 驱动
hFile = CreateFile(TEXT("PIO1:"), GENERIC_READ | GENERIC_WRITE, 0,
NULL, OPEN_EXISTING, 0, 0);
if (hFile == INVALID_HANDLE_VALUE)
{
MessageBox(_T("打开 GPIO 驱动失败!"));
return;
}
else
MessageBox(_T("打开 GPIO 驱动成功!"));
但总是失败
驱动加载成功了没有?这个你要在底下写个IO口的驱动,加载完后才可以在上层操作.
2410板子上的方向健虚拟键值和键盘的是一样的。
不知道像做应用还是在做驱动。
做应用的话。
按键按下有一个WM_KEYDOWN消息。
键值在lParam中。
PIO1:
应该是个流驱动了,确认一下启动log信息,看看驱动起来了没有,如果驱动没有,当然失败了。。。
我做了个流驱动,编译成dll,配置注册表文件,并把dll放到WINCE420\PLATFORM\SMDK2410\FILES
可用pb编译系统的时候报错啊
Error: Unknown memory type found '试\GPIODriver\SAMSUNG_SMDK2410__ARMV4Rel\GPIODriver.dll'
4.2下没有必要这么麻烦。可以直接用VirtualAlloc和VirtualCopy把GPIO的地址映射过来,然后就可以在应用程序层直接操作2410的寄存器了。想怎么改就怎么改。
不过这个方法不是最佳的,至少到CE6就没法这样用了。
自己做流驱动,像你这样GPIODriver.dll倒是个标准方法。
增加自己的驱动,流程清楚吗?platform.reg,platform.bib。
文件放在哪里都可以,
估计还是你配置注册表文件时没有dll加载成功。注意一下配置的中断号和地址是否正确或者有冲突。
而且你也要确认一下是否在bib文件中加载了该dll文件。
我修改 power button 驱动,注释掉了PowerOffSystem();
可仍然有效果,很奇怪
// Soft reset and standard suspend-resume both start with suspend for now.
#if (WINCEOSVER >= 400)
// call whichever shutdown API is available
if(gpfnSetSystemPowerState != NULL)
{
gpfnSetSystemPowerState(NULL, POWER_STATE_SUSPEND, POWER_FORCE);
}
else
{
//PowerOffSystem();
}
#else
//PowerOffSystem();
#endif
IO驱动的估计是没有在bib里加进自己的驱动,power的可能是没有注释对或者没有编译进去