还是先前那个数组问题,求大侠解决下
Public Type TMapcnt(1 To 5) As Double
End Type
Public Declare Function GT_MapAxis Lib "gt400.dll" (ByVal axis As Integer, map As TMap) As
Integer
~~~~~~~~模块中的大量声明~~~~
~~~~~~~~~~
~~~~~省略~~~
——————————————————————————————————
坐标映射命令函数原型是:short GT_MapAxis(short Axis_Num, double * map_count)。
Axis_Num 为轴号(1、2、3 或4),调用坐标映射命令以后,该轴工作于坐标运动模式。
该轴的实际位置记为Axis _ N ,单位是脉冲。数组map_count包括五个元素,顺次记为x C 、
y C 、z C 、a C 、C ,坐标轴X、Y、Z、A 所对应的相应坐标记为x 、y 、z 、a 。上述
函数描述的映射关系能够简单地描述成下面的计算公式:
由此可以看出被映射的控制轴的运动是坐标 X、Y、Z、A 的线性组合
案例中使用 VC++6.0
void main()
{
short rtn;
GTInitial();
InputCfg();
AxisInitial();
double cnt1[5]={2000,0,0,0,0}; /* 根据系统设置坐标映射数组 */
double cnt2[5]={0,2000,0,0,0}; /*根据系统设置坐标映射数组 */
double cnt3[5]={0,0,2000,0,0}; /* 根据系统设置坐标映射数组 */
double cnt4[5]={0,0,0,2000,0}; /* 根据系统设置坐标映射数组 */
rtn=GT_MapAxis(1,cnt1); error(rtn); /* 映射第1 轴到X 轴 */
rtn=GT_MapAxis(2,cnt2); error(rtn); /* 映射第2 轴到Y 轴 */
rtn=GT_MapAxis(3,cnt3); error(rtn); /* 映射第3 轴到Z 轴 */
rtn=GT_MapAxis(4,cnt4); error(rtn); /* 映射第4 轴到A 轴 */
}
——————————————————————————————————————————
我自己在VB 6.0中编译 (选1轴翻译先)
Private Sub Command1_Click(Index As Integer)
Dim rtn As Integer
Dim cnt1(5) As Double
cnt1(0) = 2000
cnt1(1) = 0
cnt1(2) = 0
cnt1(3) = 0
cnt1(4) = 0
rtn = GT_MapAxis(1, cnt1)
End Sub
然后保存为exe的时候,提示--编译错误:ByRef参数类型不符。光标指向rtn = GT_MapAxis(1, cnt1) 这
句话的cnt1
——————————————————————————————————————————
所以,请教下老师,该怎么设定 数组 cnt1,cnt2,cnt3,cnt4 以及 cnt1(5),cnt2(5),cnt3
(5),cnt4(5)的类型。
也就是把上面的C++语言改成 VB语言 我整了一整晚了也没弄出来,要映射轴后画坐标系,是一个运动控制平台。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
这是Tiger_Zhao大侠帮助我弄的,可能我先前函数定义没给全,以下代码放上去后生成EXE时还是提示--编译错误:ByRef参数类型不符。光标指向rtn = GT_MapAxis(1, cnt1) 这
句话的cnt1
Dim rtn As Integer
Dim t as TMap
t.cnt(1) = 2000
t.cnt(2) = 0
t.cnt(3) = 0
t.cnt(4) = 0
t.cnt(5) = 0
rtn = GT_MapAxis(1, cnt1)
好象一个帖子只让补充3次 我才再来开一贴。。。。不管怎么样,先谢谢Tiger_Zhao大侠!! --------------------编程问答-------------------- rtn = GT_MapAxis(1, t)
试试看 --------------------编程问答--------------------
那原来的rtn=GT_MapAxis(1,cnt1)是表示映射第1 轴到X 轴
那用了rtn = GT_MapAxis(1, t) 是表示映射第1 轴到X 轴
那映射第2 轴到y 轴要用什么样的表达示啊?rtn = GT_MapAxis(2, t) 其中t不变 ? --------------------编程问答-------------------- VarPtr( cnt1 ) 试一下,指针的问题吧 --------------------编程问答-------------------- rtn=GT_MapAxis(1,VarPtr(cnt1) ) --------------------编程问答-------------------- Private Sub Command1_Click(Index As Integer)
Dim rtn As Integer
Dim cnt1(5) As Double
cnt1(0) = 2000
cnt1(1) = 0
cnt1(2) = 0
cnt1(3) = 0
cnt1(4) = 0
rtn = GT_MapAxis(1, cnt1)
End Sub
--------
上图中红色cnt1好像应为cnt1() --------------------编程问答-------------------- 你应该先求助开发商,能被 VB 调用的函数必须是 stdcall 的。 --------------------编程问答--------------------
晕,太专业了,也太复杂。
补充:VB , 基础类