trim001
驱动牛犊
驱动牛犊
  • 注册日期2003-10-13
  • 最后登录2004-09-01
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:779回复:0

Windriver编程中所遇到的问题:(急)

楼主#
更多 发布于:2004-06-01 11:13
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;
游客

返回顶部