| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 5064 人关注过本帖
标题:API Library 怎么用?
只看楼主 加入收藏
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9841
专家分:27213
注 册:2012-2-5
收藏
得分:0 

坚守VFP最后的阵地
2012-02-17 00:21
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
如何把電壓認作0或1,是cbw32.dll的事,你查廠家資料,cbw32.dll中哪個函數是返回這個電壓數據的,要使用這個函數,按資料介紹需要哪些步驟。看資料是正經。要麼你把資料發出來讓大家看看,這樣無法解決問題的。

[ 本帖最后由 TonyDeng 于 2012-2-17 00:25 编辑 ]

授人以渔,不授人以鱼。
2012-02-17 00:24
Bunny008
Rank: 1
等 级:新手上路
帖 子:185
专家分:6
注 册:2011-7-27
收藏
得分:0 
回复 69楼 TonyDeng
从代码看,还有那个“data”的表里看,GET_INPUT赋值给pa_channel的是两个4位的01码。
2012-02-17 00:28
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
那個GET_INPUT()很明顯是調用了一系列cbw.dll的函數,必然是按照廠家技術資料寫的,它會告訴你先用哪個、後用哪個、數據的每一位代表什麼意義,只有知道這些,才可能把正確的數據構造出來返回給你。你都知道是兩個4位的二進制碼,但這兩個數據分別代表什麼、是從cbw32.dll哪個函數中提取出來的,你知道嗎?這些東西,在廠家給的資料中一定要有,廠家是絕對不可能只給.dll不給用法文檔的,你把那個文檔找出來吧。

cb是什麼?抄表?

[ 本帖最后由 TonyDeng 于 2012-2-17 00:35 编辑 ]

授人以渔,不授人以鱼。
2012-02-17 00:32
Bunny008
Rank: 1
等 级:新手上路
帖 子:185
专家分:6
注 册:2011-7-27
收藏
得分:0 
回复 74楼 TonyDeng
哦,我继续研究研究。。
cb不晓得啊。。八成computer board吧
2012-02-17 00:39
Bunny008
Rank: 1
等 级:新手上路
帖 子:185
专家分:6
注 册:2011-7-27
收藏
得分:0 
回复 72楼 TonyDeng
http://www.

242页
2012-02-17 00:44
Bunny008
Rank: 1
等 级:新手上路
帖 子:185
专家分:6
注 册:2011-7-27
收藏
得分:0 
回复 72楼 TonyDeng
好吧,我承认我太马虎。另有一块板,那些电线是先接到那块板上再通过那块板接到这个I/O卡上的。那块板上虽然没有任何型号,但是赫然写着0~3, 4~7,什么d1~d8...  之前一直忽略了这块板,以为就是针对针,角对角的一块普通连线板。现在看来是他把电压转换成两个4位二进制数的。。
2012-02-17 01:13
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
首先,76樓給的資料,是讀取這類卡板的通用類庫,但具體如何用,還得看你使用的那塊卡是什麼型號的,才能在這裡找到對應函數。你看24頁清單上的那些卡,找找自己那個。
其次,現在最大的問題是只有你有這種卡,別人就算要替你寫程序,除非他擁有同樣的卡,否則無法測試程序,這基本上決定了很難從頭到尾幫你。
第三,看資料卡上可以獲取、設置通訊口number和各種配置狀態,這顯然跟你的實際的卡和用途有關,現在只有通用資料,但仍然無法知道那個GET_INPUT()到底具體幹了什麼。

根據你77樓說的,似乎那塊PCI卡的作用只是測量前一塊卡的電平狀態,而GET_INPUT()就是獲取這個狀態的。但問題是那個人如何做的硬件連接,他把前一塊卡上的數據接到後一塊卡上的什麼地方,那個地方對應資料上的哪個端口,哪個位代表哪條線。無論如何,你需要找個熟悉相關硬件技術的人看看實物,給出結構結論才行。但沒有實物測試,這是我們這等外人很難幫到你的。現在我明白你原先的思路了,通過反向工程找到GET_INPUT()做什麼,確實是一條路子,你不妨找一些專做反向工程的人看看那個cb.dll能不能反向——事先聲明,我是不懂的。所以,我覺得我能給你的意見,應該只能到這個程度了。看看別人的吧。

授人以渔,不授人以鱼。
2012-02-17 01:42
你们都要疼我哦
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:火星
等 级:贵宾
威 望:49
帖 子:1296
专家分:2746
注 册:2008-7-13
收藏
得分:0 
最主要的东西还是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,去输入/输出/配置,所以要看参数看返回看输入看输出。。。归根到底 就是看相应的资料文档。

虽然我打了这么多字。。。。。。但是。。。
可能的话 楼主还是别勉强了,把这个交给其他同事吧。

小妹,哥哥看你骨骼清奇,绝非凡人,将来必成大业,不如这样,你先把裤裤脱了,待哥哥为你开启灵窍,然后我们一起努力钻研如何
2012-02-17 16:42
Bunny008
Rank: 1
等 级:新手上路
帖 子:185
专家分:6
注 册:2011-7-27
收藏
得分:0 
回复 79楼 你们都要疼我哦
首先,您能提供帮助我是很感激的,但是您不鼓励反而委婉的打击就不对了,什么事情都得有个一回生二回熟吧。新人也得给机会嘛。

您说的手册,Lib,H,不知是不是指76楼的资料。那三个函数的用法,每个参数什么意思,我能看的到。这种牵扯到硬件接口的问题我第一次遇到,加上本来program的基础也不是很好,所以很多提出来的问题也许比较不够水平,见笑了。

由于60楼的解释很合理,我已经放弃碰各种运气使用cb.dll了。只是我最好知道GET_INPUT函数是怎么写的,他是怎么得到输入的,这样我就可以知道怎么来替代这个函数。学一样东西,一般是先模仿,再创造。所以我现在还处于模仿阶段,得看明白别人是怎么做的,自己才能知道在哪里改进。

至于其他同事,应该没有更了解这个程序的了。无奈鸭子被赶上架了。
2012-02-17 22:29
快速回复:API Library 怎么用?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.031204 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved