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

Windriver编程中所遇到的问题(delphi)急!!谢谢!!

楼主#
更多 发布于:2004-06-01 11:09
Windriver编程中所遇到的问题:
今天用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;
游客

返回顶部