EDA365电子论坛网

标题: ipc C和skill异步通信问题[已解决] [打印本页]

作者: wmeee    时间: 2013-8-6 09:48
标题: ipc C和skill异步通信问题[已解决]
本帖最后由 wmeee 于 2013-8-7 10:07 编辑

如下是我写的程序:
cid = ipcBeginProcess("d:/wmwork/test.exe" "" handler "" "" "d:/wmwork/text.log")
handler = (lambda (cid data) printf("show: %s",data))

C程序(写在一个按钮下,按一次执行一次):

char command[10]="start!\n";
printf(command);
fflush(stdout);

load进cadence,能跳出控制C窗口,但是按下按钮,cadence没反应,但是log文件中有start字符;
重新load skill代码时,又把上次数据读出来了。

求大神!

/************ 通信成功代码 ********************/
c:
char command[10]="start\n";
printf(command);
fflush(stdout);

skill:
fcid = ipcBeginProcess("d:/wmwork/test.exe" "" "dataH")
procedure(dataH(cid com) axlShell("open"))
ipcWaitForProcess(cid)

allegro.ilinit中加入以下代码
load("d:/wmwork/myskill.il")
/******************************************/
Thank ifuture a lot!
作者: wmeee    时间: 2013-8-6 11:36
ifuture 发表于 2013-8-6 10:42
输出文本。似乎ipc有这个问题。
改成发命令了呢?如果可以马上开始执行命令。就说明正常了。

你是说用ipcSkillProcess?
作者: wmeee    时间: 2013-8-6 13:01
本帖最后由 wmeee 于 2013-8-6 13:03 编辑
ifuture 发表于 2013-8-6 11:48
不是这个意思。
我的意思是。你不要发printf这个输出文本的。输出一个让allegro干活的命令。可以调用现成的 ...


我试过了,没有弹出框。
感觉根本没有调用那个lambda定义的函数。
我在lambda函数中加了一个printIn()函数,也没有调用,但是在第二次load skill文件的时候才运行。
作者: wmeee    时间: 2013-8-6 13:40
ifuture 发表于 2013-8-6 13:23
handler = (lambda (cid data) printf("show: %s",data))
这么写肯定不对嘛。这里的handler需要是一个响应 ...


您对的,这个地方不对。
按照您说的,可以执行。

非常感谢!
作者: wmeee    时间: 2013-8-6 15:02
ifuture 发表于 2013-8-6 13:23
handler = (lambda (cid data) printf("show: %s",data))
这么写肯定不对嘛。这里的handler需要是一个响应 ...


再问一下,我调用注册过的命令都可以用axlShell
但是,调用自己写的skill函数(没有注册),该怎么调用()?
作者: wmeee    时间: 2013-8-6 16:17
ifuture 发表于 2013-8-6 15:04
直接函数名称啊,比如  xxxxxxx()

明天我试试,今天服务器关了。。。

大神,我想把一个这个skill一开软件就启动,我的操作时,在allegro.ilinit最后写入load("skill.il")。
软件开启式,也弹出了skill通信的那个exe,但是点击按钮就没办法执行cadence语句了;
重新load之后,就可以了。这是神马情况?
作者: wmeee    时间: 2013-8-7 08:38
ifuture 发表于 2013-8-6 15:04
直接函数名称啊,比如  xxxxxxx()

you r right!
可以直接执行。xxxxxx()
作者: wmeee    时间: 2013-8-7 09:59
已解决
我在调用ipcStopProcess(o_childId)时出现uninitialized 的错误。
所以我在调用cid = ipcBegin...之后加了ipcWaitForProcess(等待cid程序完成初始化之后再接着初始化allegro程序)。
So it works well.
thank ifuture a lot.
作者: zolamini    时间: 2016-9-21 13:57
大神们,这个函数可以用在c#程序吗?我调不起来,求指导




欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/) Powered by Discuz! X3.2