在线咨询 切换到宽版
eetop公众号 创芯大讲堂 创芯人才网

 找回密码
 注册

手机号码,快捷登录

手机号码,快捷登录

搜全文
查看: 511|回复: 10

[求助] skill怎么处理命令结果阻塞的情况

[复制链接]
发表于 7 天前 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

×
如题,就是我在使用skill的时候遇到了一个问题,我有两个skill脚本需要运行,我想集合到一个脚本运行,写了一个总成的skill脚本3
load("/path1/skill1")

load("/path1/skill2")
问题是如果直接运行skill3会出问题,如果单独先load("/path1/skill1")结束后再load("/path1/skill2")就能正常运行,分析了一下,skill1脚本中有一个打开界面的操作,skill2需要在这个界面打开后才能正常执行,但是skill3会在skill2运行结束后才执行skill1脚本中打开界面的操作,有没有大佬遇到过这种情况,怎么解决呀。
发表于 7 天前 | 显示全部楼层
在skill1的的主函数执行完成后,在你需要的界面没有关闭情况下,做个判断或者打开界面的操作后再执行skill2的主函数
回复 支持 反对

使用道具 举报

发表于 6 天前 | 显示全部楼层
SKILL1打开的界面是什么?如果是个自己设计的Form,那么把需要在这个Form打开后执行的操作放到回调函数里。
回复 支持 反对

使用道具 举报

 楼主| 发表于 5 天前 | 显示全部楼层


   
acrofoxAgain 发表于 2025-9-21 10:21
SKILL1打开的界面是什么?如果是个自己设计的Form,那么把需要在这个Form打开后执行的操作放到回调函数里。 ...


谢谢大佬的回复,skill1是ddsServOpen("em_skill" "test1" "" "edit" "nil"),打开的是下面的界面(在服务器上截不了图有点糊抱歉),我的操作主要是想用脚本打开layout的那个界面,因为后续的skill脚本需要在版图界面打开的情况下运行
2.jpg
然后skill2是hiFormDone(deOpenForm)加上我需要运行的脚本,上面那行运行完输入这行就能够正常打开版图界面了,放到回调函数里面是

procedure(callback(a)
ddsServOpen("em_skill" "test1" "" "edit" "nil")
)

procedure(callback_b(a)
callback(1)
hiFormDone(deOpenForm)
)
callback_b(1)

这样吗,但是试了一下好像还是没能成功打开版图界面,查了一下日志分别运行两行代码显示
\i ddsServOpen("em_skill" "test1" "" "edit" "nil")
\t t
\p >
\p >
\i hiFormDone(deOpenForm)
\t t
\p >
如果一起运行的话是
\i ddsServOpen("em_skill" "test1" "" "edit" "nil")
\i hiFormDone(deOpenForm)
\t t
\p >
\e *Error* eval:unbound variable - deOpenForm
\p >
\p >
感觉这个界面要打开需要出现这个“\p >”,但是每次都是读完全部的代码执行,求大佬指点
回复 支持 反对

使用道具 举报

 楼主| 发表于 5 天前 | 显示全部楼层


   
Quinn714 发表于 2025-9-20 22:45
在skill1的的主函数执行完成后,在你需要的界面没有关闭情况下,做个判断或者打开界面的操作后再执行skill2 ...


感谢大佬的回复,我尝试了一下使用hiIsFormDisplayed()函数进行判断


代码如下
ddsServOpen("em_skill" "test1" "" "edit" "nil")
when(hiIsFormDisplayed(deOpenForm)
hiFormDone(deOpenForm)
)
结果返回一个t和一个nil,说明ddsServOpen("em_skill" "test1" "" "edit" "nil")成功运行了,但是没有打开form,hiIsFormDisplayed(deOpenForm)返回了nil,在这些运行完后才弹出了form窗口,这时我用hiIsFormDisplayed(deOpenForm)就能返回t了,说明它还是存在代码全部运行完后才能弹出form,我想了一下如果能让skill在运行完ddsServOpen("em_skill" "test1" "" "edit" "nil")先进行终止,然后再继续运行可能可以解决,但是不知道怎么操作,求大佬指点
回复 支持 反对

使用道具 举报

发表于 5 天前 | 显示全部楼层


   
东伯利亚垂耳兔 发表于 2025-9-22 15:45
感谢大佬的回复,我尝试了一下使用hiIsFormDisplayed()函数进行判断


嗯呢,不知道你前面skill函数运行结果是什么,没法回答你。如果只是针对skill2的主函数,需要打开layout这个操作,可以考虑用deOpenCellView()这个函数,而且返回值是winid,也方便你操作
回复 支持 反对

使用道具 举报

 楼主| 发表于 5 天前 | 显示全部楼层


   
Quinn714 发表于 2025-9-22 16:37
嗯呢,不知道你前面skill函数运行结果是什么,没法回答你。如果只是针对skill2的主函数,需要打开layout ...


感谢大佬!我用deOpenCellView不知道为什么运行后面的脚本会出现p1 not found的情况,用了vxfiOpenLayout会报license的错误,刚刚改成了geOpen解决了这个问题,谢谢大佬!
回复 支持 反对

使用道具 举报

发表于 5 天前 | 显示全部楼层


   
东伯利亚垂耳兔 发表于 2025-9-22 14:55
谢谢大佬的回复,skill1是ddsServOpen("em_skill" "test1" "" "edit" "nil"),打开的是下面的界面(在服务 ...


这样的话,可以试试用hiRegTimer将SKILL2的内容延迟执行看行不行
回复 支持 反对

使用道具 举报

发表于 5 天前 | 显示全部楼层


   
东伯利亚垂耳兔 发表于 2025-9-22 16:44
感谢大佬!我用deOpenCellView不知道为什么运行后面的脚本会出现p1 not found的情况,用了vxfiOpenLayout ...


你们服务器没装voltus-fi,所以报错
回复 支持 反对

使用道具 举报

 楼主| 发表于 5 天前 | 显示全部楼层


   
acrofoxAgain 发表于 2025-9-22 17:22
这样的话,可以试试用hiRegTimer将SKILL2的内容延迟执行看行不行


谢谢大佬,试了一下好像也不行,之前也有试过用sleep()函数做延迟,可能就是只能在所有代码运行结束的最后才能响应打开这个form的行为
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条

手机版| 小黑屋| 关于我们| 联系我们| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2025-9-27 09:29 , Processed in 0.021930 second(s), 4 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表