GALIL 中断 点击:840 | 回复:13



suzizus

    
发表于:2012-05-15 14:23:59
楼主

刘工,您好~
请问一下 GALIL只能有一个中断子程序吗?
能不能有#INIT1,2,3呢?



楼主最近还看过



刘岩利

  • [版主]
  • 精华:2帖
  • 求助:0帖
  • 帖子:20帖 | 8248回
  • 年度积分:0
  • 历史总积分:28866
  • 注册:2005年3月09日
发表于:2012-05-15 15:05:25
1楼
不能,但是这一个程序也就够了,您可以在程序中判断不同的中断源并做不同的处理。

suzizus

  • 精华:0帖
  • 求助:7帖
  • 帖子:8帖 | 15回
  • 年度积分:0
  • 历史总积分:153
  • 注册:2011年12月16日
发表于:2012-05-15 15:59:48
2楼
回复内容:
对:刘岩利关于 不能,但是这一个程序也就够了,您可以在程序中判断不同的中断源并做不同的处理。 内容的回复:

谢谢~另外 还有一个问题,我现在要想要将数组G()写入卡中
 使用这个函数RC = DMCArrayDownload(hDmc, "AA", 0, 2 * pwidth - 1, G(), BytesWritten)
但是错误G()这里类型不匹配
这里要怎么写呢?是什么类型的?

刘岩利

  • [版主]
  • 精华:2帖
  • 求助:0帖
  • 帖子:20帖 | 8248回
  • 年度积分:0
  • 历史总积分:28866
  • 注册:2005年3月09日
发表于:2012-05-15 17:54:44
3楼

G()是什么?这里应该是个数值,代表前面的字符串长度.

suzizus

  • 精华:0帖
  • 求助:7帖
  • 帖子:8帖 | 15回
  • 年度积分:0
  • 历史总积分:153
  • 注册:2011年12月16日
发表于:2012-05-15 19:20:38
4楼
回复内容:
对:刘岩利关于 G()是什么?这里应该是个数值,代表前面的字符串长度. 内容的回复:

Buffer to write the array data from. Data does not need to be NULL terminated.这个参数说明书里面是这个说的
这里G()是要写入的数组
我是希望将G()里面的数据写到galil卡中 应该怎么写呢

suzizus

  • 精华:0帖
  • 求助:7帖
  • 帖子:8帖 | 15回
  • 年度积分:0
  • 历史总积分:153
  • 注册:2011年12月16日
发表于:2012-05-15 19:24:18
5楼
回复内容:
对:suzizus关于 回复内容:对:刘岩利关于 G()是什么?这里应该是个数值,代表前面的字符串长度. 内容的回复:Buffer to write the array data from. Data does not need to be NULL terminated.这个参数说明书里面是这个说的这里G()是要写入的数组我是希望将G()里面的数据写到galil卡中 应该怎么写呢 内容的回复:

我看GALIL 关于VB的例子中是这么用的
 RC = DMCArrayDownload(hDmc, "AA", 0, 99, Data, Len(Data), BytesWritten)
于是我类比了一下,我指的G()就是这里的Data,也就是数组的内容,不过他这里是字符串
下传数组的时候 需要以字符串的类型发送吗?

suzizus

  • 精华:0帖
  • 求助:7帖
  • 帖子:8帖 | 15回
  • 年度积分:0
  • 历史总积分:153
  • 注册:2011年12月16日
发表于:2012-05-15 19:46:18
6楼
回复内容:
对:刘岩利关于 G()是什么?这里应该是个数值,代表前面的字符串长度. 内容的回复:

我看GALIL 关于VB的例子中是这么用的
 RC = DMCArrayDownload(hDmc, "AA", 0, 99, Data, Len(Data), BytesWritten)
于是我类比了一下,我指的G()就是这里的Data,也就是数组的内容,不过他这里是字符串
下传数组的时候 需要以字符串的类型发送吗?

刘岩利

  • [版主]
  • 精华:2帖
  • 求助:0帖
  • 帖子:20帖 | 8248回
  • 年度积分:0
  • 历史总积分:28866
  • 注册:2005年3月09日
发表于:2012-05-17 20:13:28
7楼

抱歉,,昨天没有上网。

既然您已经看到了VB的例子,您自然就可以看到,Data是个字符串。字符串的内容就是数组内各元素的值

Private Sub Command5_Click()
    Dim Data As String
    Dim BytesWritten As Long

    Response = Space(256)
    ResponseLength = 256

    RC = DMCCommand(hDmc, "DA AA【】;DM AA【100】", Response, ResponseLength)

    Data = "0" + Chr$(13) + "1" + Chr$(13) + "2" + Chr$(13) + "3" + Chr$(13) + "4" + Chr$(13) + "5" + Chr$(13) + "6" + Chr$(13) + "7" + Chr$(13) + "8" + Chr$(13) + "9" + Chr$(13)
    Data = Data & "0" + Chr$(13) + "1" + Chr$(13) + "2" + Chr$(13) + "3" + Chr$(13) + "4" + Chr$(13) + "5" + Chr$(13) + "6" + Chr$(13) + "7" + Chr$(13) + "8" + Chr$(13) + "9" + Chr$(13)
    Data = Data & "0" + Chr$(13) + "1" + Chr$(13) + "2" + Chr$(13) + "3" + Chr$(13) + "4" + Chr$(13) + "5" + Chr$(13) + "6" + Chr$(13) + "7" + Chr$(13) + "8" + Chr$(13) + "9" + Chr$(13)
    Data = Data & "0" + Chr$(13) + "1" + Chr$(13) + "2" + Chr$(13) + "3" + Chr$(13) + "4" + Chr$(13) + "5" + Chr$(13) + "6" + Chr$(13) + "7" + Chr$(13) + "8" + Chr$(13) + "9" + Chr$(13)
    Data = Data & "0" + Chr$(13) + "1" + Chr$(13) + "2" + Chr$(13) + "3" + Chr$(13) + "4" + Chr$(13) + "5" + Chr$(13) + "6" + Chr$(13) + "7" + Chr$(13) + "8" + Chr$(13) + "9" + Chr$(13)
    Data = Data & "0" + Chr$(13) + "1" + Chr$(13) + "2" + Chr$(13) + "3" + Chr$(13) + "4" + Chr$(13) + "5" + Chr$(13) + "6" + Chr$(13) + "7" + Chr$(13) + "8" + Chr$(13) + "9" + Chr$(13)
    Data = Data & "0" + Chr$(13) + "1" + Chr$(13) + "2" + Chr$(13) + "3" + Chr$(13) + "4" + Chr$(13) + "5" + Chr$(13) + "6" + Chr$(13) + "7" + Chr$(13) + "8" + Chr$(13) + "9" + Chr$(13)
    Data = Data & "0" + Chr$(13) + "1" + Chr$(13) + "2" + Chr$(13) + "3" + Chr$(13) + "4" + Chr$(13) + "5" + Chr$(13) + "6" + Chr$(13) + "7" + Chr$(13) + "8" + Chr$(13) + "9" + Chr$(13)
    Data = Data & "0" + Chr$(13) + "1" + Chr$(13) + "2" + Chr$(13) + "3" + Chr$(13) + "4" + Chr$(13) + "5" + Chr$(13) + "6" + Chr$(13) + "7" + Chr$(13) + "8" + Chr$(13) + "9" + Chr$(13)
    Data = Data & "0" + Chr$(13) + "1" + Chr$(13) + "2" + Chr$(13) + "3" + Chr$(13) + "4" + Chr$(13) + "5" + Chr$(13) + "6" + Chr$(13) + "7" + Chr$(13) + "8" + Chr$(13) + "9"

    RC = DMCArrayDownload(hDmc, "AA", 0, 99, Data, Len(Data), BytesWritten)
   
    If RC = 0 Then
        MsgBox "Array downloaded successfully"
    End If
End Sub

 

刘岩利

  • [版主]
  • 精华:2帖
  • 求助:0帖
  • 帖子:20帖 | 8248回
  • 年度积分:0
  • 历史总积分:28866
  • 注册:2005年3月09日
发表于:2012-05-17 20:16:16
8楼

另外,VB中声明这个函数的时候,也有变量说明的,您仔细看一下。而且前面还有个说明“Array data can be  delimited by a comma or CR (0x0D) or CR/LF (0x0D0A).”

也就是说,BUFFER中就是用回车分割的数值。
“Buffer to write the array data from. Data does not need to be NULL terminated.”

PublicdeclareFunction DMCArrayDownload Lib "dmc32.dll" (ByVal hDmc As Long, ByVal ArrayName As String, ByVal FirstElement As Integer, ByVal LastElement As Integer, ByVal Data As String, ByVal DataLength As Long, BytesWritten As Long) As Long
‘ Download an array to the Galil controller. The array must exist. Array data can be
‘ delimited by a comma or CR (0x0D) or CR/LF (0x0D0A).
‘ NOTE: The firmware on the controller must be recent enough to support the QD command.

‘ hDmc             Handle to the Galil controller.
‘ ArrayName        Array name to download to the Galil controller.
‘ FirstElement     First array element.
‘ LastElement      Last array element.
‘ Data             Buffer to write the array data from. Data does not need to be
‘                  NULL terminated.
‘ DataLength       Length of the array data in the buffer.
‘ BytesWritten     Number of bytes written.

suzizus

  • 精华:0帖
  • 求助:7帖
  • 帖子:8帖 | 15回
  • 年度积分:0
  • 历史总积分:153
  • 注册:2011年12月16日
发表于:2012-05-18 10:35:37
9楼
回复内容:
对:刘岩利关于 另外,VB中声明这个函数的时候,也有变量说明的,您仔细看一下。而且前面还有个说明“Array data can be  delimited by a comma or CR (0x0D) or CR/LF (0x0D0A).”也就是说,BUFFER中就是用回车分割的数值。“Buffer to write the array data from. Data does not need to be NULL terminated.”PublicdeclareFunction DMCArrayDownload Lib "dmc32.dll" (ByVal hDmc As Long, ByVal ArrayName As String, ByVal FirstElement As Integer, ByVal LastElement As Integer, ByVal Data As String, ByVal DataLength As Long, BytesWritten As Long) As Long‘ Download an array to the Galil controller. The array must exist. Array data can be‘ delimited by a comma or CR (0x0D) or CR/LF (0x0D0A).‘ NOTE: The firmware on the controller must be recent enough to support the QD command.‘ hDmc             Handle to the Galil controller.‘ ArrayName        Array name to download to the Galil controller.‘ FirstElement     First array element.‘ LastElement      Last array element.‘ Data             Buffer to write the array data from. Data does not need to be‘                  NULL terminated.‘ DataLength       Length of the array data in the buffer.‘ BytesWritten     Number of bytes written. 内容的回复:

谢谢刘工,这个问题解决了。不过我又有新的问题,不好意思,麻烦您了
我现在数组太大了,所以需要分行发送到卡中,所以等第一行数据运动完成后,再发送下一行数据到卡中
这里我没找到如何让上位机知道下位机运动完了?有没有这样一个函数,让卡发送信息到上位机的呢
试过上位机查询的方式,不太行

suzizus

  • 精华:0帖
  • 求助:7帖
  • 帖子:8帖 | 15回
  • 年度积分:0
  • 历史总积分:153
  • 注册:2011年12月16日
发表于:2012-05-18 12:49:59
10楼
回复内容:
对:刘岩利关于 这个问题涉及到您使用的控制器型号和编程工具。有几个型号的控制器可以向PC发送中断。一些编程语言可以接收这个中断信号(VB就没有这个能力)。MG指令是可以让卡主动向上位机发送信息,但是这个信息的接收依然要靠上位机去查询才行。通用的方案还是使用查询的方式,不知道您所说的 “不太行”是什么意思? 内容的回复:

我用的卡是2163,上位机VB,
我原先的想法是通过查询变量完成,即指定一个变量,运动完成后变量值改变,上位机查询
没成功,不知道这个方法行不行,也有可能是我程序写的有问题

刘岩利

  • [版主]
  • 精华:2帖
  • 求助:0帖
  • 帖子:20帖 | 8248回
  • 年度积分:0
  • 历史总积分:28866
  • 注册:2005年3月09日
发表于:2012-05-18 13:20:58
11楼

您所说的"没成功"是什么样的状态?您的程序是怎么写的?

 

刘岩利

  • [版主]
  • 精华:2帖
  • 求助:0帖
  • 帖子:20帖 | 8248回
  • 年度积分:0
  • 历史总积分:28866
  • 注册:2005年3月09日
发表于:2012-05-18 23:00:30
12楼

这个问题涉及到您使用的控制器型号和编程工具。有几个型号的控制器可以向PC发送中断。一些编程语言可以接收这个中断信号(VB就没有这个能力)。MG指令是可以让卡主动向上位机发送信息,但是这个信息的接收依然要靠上位机去查询才行。

通用的方案还是使用查询的方式,不知道您所说的 “不太行”是什么意思?

花花公子@123

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 75回
  • 年度积分:0
  • 历史总积分:101
  • 注册:2016年11月14日
发表于:2018-05-28 16:05:21
13楼

这个资料很实用,要努力学习

SSI ļʱ