阅读:1215回复:5
诊断程序界面化的问题
用VC++,WINDRIVER开发9054,
需要把采集来的灰度值作为图象显示出来,我作的是对话框程序 采用P9054_IntEnable(hPlx, PLX_IntHandlerRoutine);响应中断 如果发生中断,应该调用函数 WINAPI (), 在这个函数里,我设置了DMA读取数据, 然后想用CDC *pDC=GetDC();取得device context显示图象, 可是不行,说error C2660: \'GetDC\' : function does not take 0 parameters 我又想说把PLX_IntHandlerRoutine()设成对话框的成员函数void CPCI_testDlg::PLX_IntHandlerRoutine() 可是又报错,说error C2664: \'P9054_IntEnable\' : cannot convert parameter 2 from \'void (struct P9054_STRUCT *,P9054_INT_RESULT *)\' to \'void (__stdcall *)(struct P9054_STRUCT *,P9054_INT_RESULT *)\' None of the functions with this name in scope match the target type 我该怎么办? 另外INTCSR的bit21是DMA Channel 0 Interrupt Active 是什么意思?DMA本身就可以产生中断吗? 问题有点弱,看在我所有的分分上给我讲讲吧, 不要让我自己去看9054或者WINDRIVER的资料了, 我一直在看 可是没有硬软件的经验,看了也不太明白 :( |
|
最新喜欢:waangy...
|
沙发#
发布于:2003-10-16 20:06
天啦,多久没有见到lala啦,我还以为是别人呢 :D
如果GetDC是Win32 API(就是说,不是MFC的成员函数),那么GetDC的原型是: HDC GetDC( HWND hWnd // handle to window ); 要个HWND的。 估计你不是在某个MFC的class里面调GetDC,就被认为是Win32 API,于是error C2660: \'GetDC\' : function does not take 0 parameters :D 第二个呢,是因为类的成员函数不能当callback函数的(如果没有记错)。还是给个全局函数吧,在这个函数里面再call成员函数也可以啊 :D |
|
板凳#
发布于:2003-10-17 14:25
错误的道理我能理解
事情是这个样子的 我用对话框进行图象采集并且显示, 采用WINDRIVER,对PCI进行控制 在一个按纽响应ONDATA()里调用函数 P9054_IntEnable(hPlx, PLX_IntHandlerRoutine);// 这个是WINDRIVER封装的对芯片的中断响应函数, 其中PLX_IntHandlerRoutine是中断发生后调用的函数, 原型为void WINAPI PLX_IntHandlerRoutine(P9054_HANDLE hPlx, P9054_INT_RESULT *intResult) 我要在这个函数PLX_IntHandlerRoutine()里读取图象数据, 然后应该在这个函数里进行显示,因为这个函数是无返回类型的 可是直接CDC *pDC = GetDC();是不行的, 我要取得对话框的设备上下文 怎么办? 我用这个 CPCI_testDlg dlg; CDC *pDC = dlg.GetDC(); 可是有人说不行,因为dlg只是一个实例对象,它即没有初始化,也没有和窗口关联 建议我将CDC *pDC = dlg.GetDC(); 改为 CDC *pDC = ((CPCI_testDlg*)(AfxGetApp()->GetMainWnd()))->GetDC(); 可是我查MSDN,AfxGetApp好象是WIN CE 的函数,这样可以用吗? 呵呵~~终于看到熟人了,好啊好啊~~ 没办法,总是做不出来,老师还总让我做驱动 而且又是没有硬件就让我先做驱动 郁闷ING~~~ |
|
|
地板#
发布于:2003-10-17 14:43
为什么要在这个callbakc函数画图年?
1、开个全局的data buffer,PLX_IntHandlerRoutine函数把数据往data buffer写,你的dialog的某个函数从这个data buffer读数据,显示。 或 2、和那个“有人”的方法是一样的。 CDC *pDC = ((CPCI_testDlg*)(AfxGetApp()->GetMainWnd()))->GetDC(); 这样就可以画画了 :D 等等。。。 AfxGetApp在WinCE也有,Win32也有。我知道你怎么看MSDN的 :D你是按F1,然后发现是for WinCE的函数,嘿嘿。你直接打开MSDN,在索引看看 ;) |
|
地下室#
发布于:2003-10-17 15:11
果然果然,我的VC6装的MSDN是for .NET的
用起来不是太习惯~ :D 我就先照那个“有人”的方法做了,能画出来就行,不行就再改吧~~ 谢谢猫王GG,可是我咋不能给分分捏?不急不急,以后慢慢给吧 ;) |
|
|
5楼#
发布于:2003-10-17 15:32
不愧是lala,想骗点分好难啊 :D
|
|