阅读:779回复:0
Windriver编程中所遇到的问题:(急)
Windriver编程中所遇到的问题:delphi语言
今天用Windriver编程遇到了如下的问题: 1. 我需要把要中断要执行的数据传入 PC7510_InterruptIrregular(pWorker : POINTER; intResult : PPC7510_Interrupt0_RESULT) stdcall; 函数中,可是却不知道怎么传入, 看到Pc7510_lib中有这样一个函数 PC7510_Interrupt0Handler (pData : POINTER);大概是用来给中断传递参数的,可是却不知道怎么传送: 比如我要在每次中断中给一个端口发送一个脉冲,脉冲数组定义为,pulse :[0..4096] of integer 我该怎样把这个数组以及这个数组的当前指向的值传入。 2. 在不知道方法的情况下,我通过全局变量的方法实现了上面的功能,可是中断可以运行,可是当我停止中断,再一次开启中断的时候,却发现程序没有响应,这是怎么回事?怎样才能改进这个错误? 3. 另外lib 里面有一个函数PC7510_SetCardElements有什么作用,怎么用? 4. 有没有比较好的资料介绍在Delphi环境下的Windriver的资料 5. 我非常着急,希望知道的告诉我,在这里对你们表示感谢! 我用的操作系统是windows 98 32M内存 程序的部分代码如下: var pc7510 :pc7510_handle; addr :pc7510_addr; //中断开始部分 procedure TForm1.Button1Click(Sender: TObject); begin pc7510:=nil; addr :=0; PC7510_RegisterWinDriver(); if not PC7510_Open(@PC7510)then //打开pc7510,如果不成功则显示出错信息 begin showmessage(\'Error while opening PC7510:\'+PC7510_ErrorString); exit; end; pc7510_writebyte(pc7510,addr,7,$36); //启动pc7510,使pc7510工作在方式3 pc7510_writebyte(pc7510,addr,4,$4e); pc7510_writebyte(pc7510,addr,4,$2e); if not PC7510_Interrupt0IsEnabled(pc7510) then / begin PC7510_Interrupt0Enable(PC7510, PC7510_InterruptIrregular) end; end; //中断结束部分 if PC7510_Interrupt0IsEnabled(pc7510) then begin PC7510_Interrupt0Disable(pc7510); pc7510_close(pc7510); end; //中断函数 procedure PC7510_InterruptIrregular(pWorker : POINTER; intResult : PPC7510_Interrupt0_RESULT) ; begin PC7510_WriteByte(pc7510,addr,7,pulse[pulseNumber]); Inc(pulseNumber); If pulseNumber > = 4096 then pulseNumber :=0; End; |
|