最主要的东西还是cbw32.dll 你看手册 手册 看LIB 看H文件。
你现在的思路 只是在碰运气。
对于函数来说,名字 参数 用法 是最重要的,至于实现,没必要去纠结。
cb.dll 只提供了一个导出函数让你在应用程序中使用,就是
int __thiscall DispatchAPI(void *this)
大致的伪C码在上贴中贴了,具体内容不要深究,看看大概的结构和流程和变量什么的。
你有cb.dll 那么也应该有应用程序代码,你可以看看代码中在哪个地方使用了cd.dll里的这个函数,是怎么使用的,参数都是些什么东东。
int __thiscall get_input(int this)
{
int v2; // ST18_4@1
__int16 v3; // [sp+10h] [bp-8h]@1
int v4; // [sp+14h] [bp-4h]@1
v2 = this;
v4 = cbDConfigPort(*(_WORD *)(this + 10), *(_WORD *)(this + 46), *(_WORD *)(this + 82));
v4 = cbDIn(*(_WORD *)(v2 + 10), *(_WORD *)(v2 + 46), &v3);
*(_DWORD *)(v2 + 10) = v3;
return _RetInt(*(_DWORD *)(v2 + 10), 2);
}
这是get_input的伪C码,没什么特别的,就是调用了cbw32.dll中的函数,
int __thiscall set_output(int this)
{
int v2; // ST18_4@1
__int16 v3; // ax@1
v2 = this;
v3 = cbDConfigPort(*(_WORD *)(this + 10), *(_WORD *)(this + 46), *(_WORD *)(this + 82));
return cbDOut(*(_WORD *)(v2 + 10), *(_WORD *)(v2 + 46), *(_WORD *)(v2 + 118));
}
set_output也同样这样。
明智的做法,是阅读应用程序代码中关于调用cb.dll中的内容以后,放弃cd.dll,
看cbw32.dll中的三个函数,清楚参数及用法用途,然后自己调用,或者再重新写DLL。
cbDIn
cbDConfigPort
cbDOut
。 硬件本身是有驱动的,不管是需要还是不需要你显式安装驱动,只要能正常工作,就必定是有驱动的, 在驱动之上,有了SDK 即开发包 或叫开发接口或叫其他类似名字。
只需要看手册 看用法 了解SDK中函数的用法,然后就可以在应用程序中调用相应的API, 在手册中 也有参数和返回值等等的详细说明,你可以根据实际需要,对输入及返回进行各种操作。 所以,你面对的不是高低电平
而是面对的是调用API,去输入/输出/配置,所以要看参数看返回看输入看输出。。。归根到底 就是看相应的资料文档。
虽然我打了这么多字。。。。。。但是。。。
可能的话 楼主还是别勉强了,把这个交给其他同事吧。