用Borland C 3.1实现外设与Windows应用程序实时通信(2)
2014-01-26 01:34
导读:CASEWM-CREATE: … SetIsrWin(hwnd);/*hwnd指应用程序窗口句柄*/ 定义一个在应用程序中使用的消息: #defineISRM-RUPTWM-USER 255最后在DLL中的中断服务程序代码中,调用Pos
CASEWM-CREATE:
…
SetIsrWin(hwnd);/*hwnd指应用程序窗口句柄*/
定义一个在应用程序中使用的消息:
#defineISRM-RUPTWM-USER 255最后在DLL中的中断服务程序代码中,调用PostMessage即可完成Windows应用程序和中断服务程序代码相互的信息交流:
voidinterruptnewIsr(--CPPARGS)
{
…
PostMessage(hWndApp,WM-RUPT,wParam,lParam);
…
}
四、程序实例
本示例先安装在DLL中的外中断服务代码,通过386/AT总线上的中断申请线(IRQ12)外触发,由中断服务代码发送一条消息WM-RUPT通知Windows应用程序外设有实时通信请求,应用程序收到这条消息后,在窗口用户区显示一条信息,表明已和外设联络上,并同时鸣叫一声喇叭。
程序分为两部分:DLL库代码和Windows应用程序代码。
1.DLL库代码
/*----------*
*interruptincludefile,namedhandle.h*
*----------*/
voidFARPASCALSetIsrWin(HWNDhwnd);
voidFARPASCALSetIRQNum(unsignedcharIRQ);
/*----------*
*moduledefinationfile,namedhandle.def*
*----------*/
LIBRARYHANDLE
EXETYPESWINDOWS
STUB'WINSTUB.EXE'
CODEPRELOADFIXED
DATAPRELOADSINGLE
HEAPSIZE1024
EXPORTS
WEP
@1RESIDENTNAME
SetIRQNum@3
/*----------*
*interruptserviceprogramindll,namedhandle.dll*
作者:薛立宏史铁林余佳兵
|