回复内容:
对: Vicky2016 回复内容:对: 刘岩利 回复内容:对: Vicky2... 内容的回复!
-------------------------
1、首先,您用的什么版本的api在做开发?不同版本的api函数或者方法的名称和使用有点差异。其次,您所说的 MG 是指您下载到控制器程序中的MG指令(一半不建议这样使用),还是您的oc上的程序要用MG查询点什么?
2、这些变量是属于控制器的,他们的名称对于上位机并没有任何意义(如果您在上位机程序中定义了同名变量,除了增加自己的混乱一位,也没有任何好处),只是字符串而已。如果,您要给控制器上的变量,例如num,赋值为100
那么,您就要自己构造一个字符串“num=100”,然后把这个字符串当作一般的指令发送给控制器。
回复内容:
对: 刘岩利 回复内容:对: Vicky2016 回复内容:对: ... 内容的回复!
-------------------------
刘版主您好,关于以上问题回复
1、我安装的软件版本名称是GalilTools-1.6.4.578-Win-x64,上位机开发工具是vs2010,关于MG指令的程序下载到控制器可能做法不妥当,我目前的需求是在上位机程序中使用MG查询变量(该项可简单使用,如查询速度,加速度,运行状态等)和显示提示信息【该项尚不明确如何实现】。另外,关于信息显示的问题,我在用户手册上有看到MG的以太网口用法示例:MG{Ec} "Hello"将信息“Hello”发送到端口#3。鉴于此条示例,我是想着把一些提示信息通过MG命令发送到上位机开发程序用户界面,如可以,那么{Ex}中的x(即端口号)又是如何指定或确定的?以及如何在上位机程序中接收该提示信息?
2、根据版主回复,现已理解并尝试学习使用该方法,多谢!
如果用的是galiltools的话,那么向控制器发送指令的函数/方法是
string Galil::command(string command = "MG TIME", string terminator = "\r", string ack = ":", bool trim = true)
返回的字符串就是指令的反馈,您要自己把字符串转换为数字。如果指令本身有错,返回的字符串会是一个问号。识别查询出错,这本身是非常必要的一个步骤。
另外一个是
double Galil::commandValue(string command = "MG TIME")
这个是直接返回数值的。
至于如何把一个数字显示在软件窗口中,这个,与控制器的应用无关了,看您的vs2010的手册吧。
如果一定要显示控制器内部MG指令的信息,建议不要用MG{Ec} "Hello"的方式,而是在程序执行后,用WH指令查询当前实际使用的通讯句柄标号,然后用CF指令指定信息输出句柄,这样兼容性好一些。
在pc上接收这些信息,用到的是方法/函数是
string Galil::message(int timeout_ms = 500)
这个函数只能得到之前发送的信息,如果要不遗漏信息,就要不断的定时循环执行这个函数。得到的不止有MG指令要显示的内容,还可能有控制器自身的出错信息,比如程序执行到哪一行发现错误执行不下去了。