又一个关于ch365速度的问题

我使用ch365 做的 一块 d/a 卡,工作模式 纯PCI 本地地址模式 (D4=1;); 实测的单字节do 速度平均才120k次/s,(在软件循环中循环N次单字节 do操作 / N次单字节 do操作 所耗费的时间),软件的循环中未做其他任何耗时操作(几乎不占用cpu 时间);

截取测试 代码片段如下:

#define _outp_Pci(Do_Value) nPCI1006_Set_Do_Byte(Do_Value,iIndex); #define _inp_Pci() nPCI1006_Get_Di_Byte(iIndex);

#define _outpw_Pci(Do_Value) nPCI1006_Set_Do_Word(Do_Value,iIndex); #define _inpw_Pci() nPCI1006_Get_Di_Word(iIndex);

#define _outpd_Pci(Do_Value) nPCI1006_Set_Do_Dword(Do_Value,iIndex); #define _inpd_Pci() nPCI1006_Get_Di_Dword(iIndex);

//nPCI1006_Set_Do_Byte 就是 重新DDK 编译过的驱动和DLL, 换了名字; //实际上就是 //BOOL WINAPI CH365mWriteIoByte( // 向I/O端口写入一个字节 // ULONG iIndex, // 指定CH365设备序号 // PVOID iAddr, // 指定I/O端口的地址 // UCHAR iByte ); // 待写入的字节数据 //其中 iAddr 是固定的; //Do_Value 同iByte ;

void __fastcall TfrmSpeedTest::btnIoTestClick(TObject *Sender) { UpgradeMrkThreadPriority(); //提高本线程优先级

ULONG i=0;

ULONG time=GetTickCount();

long times_bak,times;

times_bak=times=StrToInt(Edit3->Text); //循环次数; bool volH=true;

switch (Write_Mode) { case 1: while(times--) //byte //就是这个 { if(volH==true) _outp_Pci(0xff); else _outp_Pci(0x00); volH=!volH; } break; case 2: while(times--) //word { if(volH==true) _outpw_Pci(0xff); else _outpw_Pci(0x00); volH=!volH; } break; case 4: while(times--) //dword { if(volH==true) _outpd_Pci(0xff); else _outpd_Pci(0x00);

volH=!volH; } break; default: break; } ULONG time2=GetTickCount();

float cps_speed=(float)(times_bak * Write_Mode)*1000.0 /(float)(time2 -time);

Ed_Speed->Text=FloatToStr(cps_speed/1000.0); //显示速度 LabSpeed->Caption="KByte/sec";

RestoreMrkThreadPriority(); //恢复本线程优先级 return;

}

即使算上while()耗时,速度也应该不会高于200k次/s; 修改与不修改 速度寄存器的 写周期值,也没有明显的变化;

这是为什么??????

我很久之前做的另一块卡是使用了 硬件重定位地址 的工作模式(D4=0),工作速度居然可以达到1.4M, 为什么目前这块卡 (使用的 纯PCI 本地地址模式)却速度降了几乎10倍?

建议你先把数据用块读写试试速度再说.


在我的程序中只能用IO单字节操作,不能用块读写.因为是同一个地址的重复操作.不知有什么办法可以让这个速度更快呢?比如不用CH365.DLL,完全改用自己写程序会不会快一些呢?谢谢.


您好! 您可以参考一下 SPEED365.C 文档,在 EVT\WIN_SW 文件夹中, CH365EVT.ZIP下载地址:http://www.wch.cn/download/list.asp?id=22


你好,我现在用的就是"CH365DLL.DLL",我的意思是您这边能不能将DLL里面的函数公布出来,直接用在我的程序里面,这样操作的速度会不会快一些呢?谢谢.


您好! 1、CH365的应用层接口库 CH365DLL.H 在CH365EVT.ZIP/CBUILD中有。 2、如果要 CH365 源码的话,需要下载权限,可以联系销售: 025-52638377/88/99 。


只有登录才能回复,可以选择微信账号登录