主题 : micro2440 的AD驱动做得实在是可恶 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 37687
精华: 0
发帖: 6
金钱: 35 两
威望: 7 点
贡献值: 0 点
综合积分: 12 分
注册时间: 2011-02-15
最后登录: 2017-09-13
楼主  发表于: 2011-02-18 15:48

 micro2440 的AD驱动做得实在是可恶

一直没有找到单独的ADC驱动,偶然看到有网友说是和Touch放在一起了,
翻看"s3c2440a_touch.cpp" 一看,真是如此,好吧,也将就了,再详细看
里面的代码,不由得气炸了肺!
请看原文件的代码:
=======================================================
static DWORD WINAPI ADCThreadProc(LPVOID lpParameter)
{
    HANDLE DriverEvent = CreateEvent(NULL, FALSE, FALSE, L"ADC_EVENT_FROM_FRIENDLYARM");
    if (DriverEvent == NULL) {
        RETAILMSG(1, (L"Cannot alloc object for ADC driver"));
        return 0;
    }
    for (;;) {

        DWORD ret = WaitForSingleObject(DriverEvent, INFINITE);
        if (ret != WAIT_OBJECT_0) {
            RETAILMSG(1, (L"Unknown error\n"));
            return 0;
        }

        HWND Wnd = FindWindow(L"Dialog", L"ADC Testing");
        if (Wnd == NULL) {
            RETAILMSG(TS_DBGON, (L"Cannot Find the Window\n"));
        } else {
            DWORD ADCValue = (DWORD)GetADCValue();
            COPYDATASTRUCT cp;
            cp.dwData = ADCValue;
            cp.cbData = 0;
            cp.lpData = NULL;
            SendMessage(Wnd, WM_COPYDATA, NULL, (LPARAM)(&cp));
        }
    }
    return 0;
}
=======================================================
产生 "ADC_EVENT_FROM_FRIENDLYARM" 也可以忍受,
但:
             HWND Wnd = FindWindow(L"Dialog", L"ADC Testing");
        if (Wnd == NULL) {
            RETAILMSG(TS_DBGON, (L"Cannot Find the Window\n"));
        } else {
            DWORD ADCValue = (DWORD)GetADCValue();
-----------------------------------------------------------------------------------------
很恶心,存心不想让使用者弄自己的程序!
级别: 新手上路
UID: 28823
精华: 0
发帖: 14
金钱: 70 两
威望: 14 点
贡献值: 0 点
综合积分: 28 分
注册时间: 2010-09-17
最后登录: 2011-12-20
1楼  发表于: 2011-02-22 10:17
当时我看到这个ad,就放弃了,自己在板子上加了一个外置的。