爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 7716|回复: 9

[源程序] 关于 Surfer 自动化编程的两则经验

[复制链接]

新浪微博达人勋

发表于 2017-7-7 09:39:55 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x
本帖最后由 chengxf 于 2017-7-7 09:53 编辑

任何程序设计语言,都可以来调用 Surfer 的绘图功能。而且调用的基本法则是一样的,只是各种语言的表达方式不同。你熟悉那种语言,你就用那种语言。比如 C。
1、在写调用 Surfer 功能的这些代码的时候,可以参考 Surfer 帮助中的“Surfer Automation(自动化)”部分。据我的经验,这个帮助,你要参考 Surfer14 的帮助,此版本以下的版本的帮助文件,是不能解决你的编程问题的。因为很多 Surfer 中 Script 的关键词、保留词,在其他程序语言中是无法使用的,只有 Surfer14 帮助文件,指导了你在其他语言中如何使用。Surfer 软件不断地在进步之中,因此,我认为你要自己编程,最好只安装 Surfer13,其他都不要安装。这样就非常可靠,14版是 Script 应用最好的,但是它的 exe 文件,被 patch 过,Script 调用它会不会有问题我不得而知,最好安装13版。看到不少朋友还停留在 Surfer8 版用它的自动化功能,应该升级了。综合以上意见,就是编程时使用参考 Surfer14版的帮助,运行你的程序的机器上只安装 Surfer13,而且最好安装英文原版,不要汉化的。这就是我的经验。你如果是应用 Script 的VB语言编程,上面说的与你无关,可以不看。上面说的这一条,主要是给用其他语言编程的朋友看的。
2、还有,可能你也发现,编译好的程序,有时候运行正常,有时候却报错无法运行。这里的主要原因,我发现、我认为是因为我们用的 Surfer 属于D版。当你编译的软件不能调用 Surfer 的功能时,你点击快捷图标运行 Surfer 软件,你会发现这时候它要求你输入注册码,输入以后,软件正常打开运行。这时候,你再运行你自己 的程序,发现一切正常了。
以上两方面的经验,提供给爱好编程的朋友参考共勉。

评分

参与人数 1金钱 +10 贡献 +2 收起 理由
大老鹰 + 10 + 2 感谢程老师

查看全部评分

密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2017-7-7 14:33:25 | 显示全部楼层
关于这个,我给程老师补充几点:

1、Surfer 各个版本的自动化接口多少都有不同的地方,比如最顶层的对象接口,以前是 IApplication,14
版改为 IApplication2,以前的 IxxMap 接口都改叫 IxxLayer ……最正确的办法是针对哪个版本编程,就看哪个版本的帮助。

2、至于 Surfer 8,这是一个非常好的版本,各项基本功能已成熟,自动化接口也算完善,程序本身还很轻量化。

最好的一点是,它非常容易做成绿色版:完全安装 -> 运行并注册 -> 到处相关注册表项到一个 reg 文件。

以后只需要把安装目录和这个 reg 文件复制到任何电脑都可以免安装使用了,不用自动化编程甚至完全无需注册表项。

如果自己编程序使用 Surfer 8,可在调用 Surfer 8 前,调用系统命令导入 reg 文件,就可以正常地通过 Automation 操作 Surfer 8,程序退出前再次调用系统命令清除 Surfer 8 的相关注册表项,就可以做到不留痕迹。

3、Surfer 一直存在的问题是,当系统中同时安装了多个版本的 Surfer 时,通过自动化调用的总是最后一次运行的那个版本。

要通过程序使用特定版本的 Surfer,可下载微软的 Sysinternal Suite 和开源的 Unix Tools,用下面的命令可在运行前确定 Surfer 版本:


  1. sigcheck -n surfer.exe | grep --regexp=^13\.[0-9]\{1,2\}\.[0-9]\{1,3\}$
复制代码


上面的命令如果输出 13.x.yyy 形式的字符串,表示找到的是 13.x 版的 Surfer,输出是空就不是。

4、14 版之前只有序列号是否正确之分,其实并不能很好地区分是否盗版,遇到注册码失效只是说明之前找的序列号不够正确,找一个经受过考验的序列号就是了。但 Surfer 14 改为许可授权之后,就可以明确知道是否盗版,所以有些网站已经明确表示不再关注此版本。

评分

参与人数 1金钱 +10 贡献 +2 收起 理由
大老鹰 + 10 + 2 感谢H老师

查看全部评分

密码修改失败请联系微信:mofangbao
回复 支持 1 反对 0

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2017-7-7 16:26:27 | 显示全部楼层
holz 发表于 2017-7-7 14:33
关于这个,我给程老师补充几点:

1、Surfer 各个版本的自动化接口多少都有不同的地方,比如最顶层的对象 ...

谢谢 Holz 老师的补充。您是这方面的高手,你的几篇文章,给我在编程中启发很大。今天又学到一招运行前确定 Surfer 的版本。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2017-7-7 17:02:23 | 显示全部楼层
我用的surfer8英文版
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2017-7-7 17:04:59 | 显示全部楼层
holz 发表于 2017-7-7 14:33
关于这个,我给程老师补充几点:

1、Surfer 各个版本的自动化接口多少都有不同的地方,比如最顶层的对象 ...

你的意思是不用安装surfer8,直接调用reg就行了吗。怎么调用啊 holz老师
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2017-7-10 09:03:14 | 显示全部楼层
xyangtian 发表于 2017-7-7 17:04
你的意思是不用安装surfer8,直接调用reg就行了吗。怎么调用啊 holz老师

1、在某电脑上完全安装 Surfer 8 并运行至少一次完成注册,用 totaluninstall 之类的安装/卸载监视软件可获得安装 Surfer 8 所需的注册表项,保存为 surfer8.reg 文件。(微软的 Sysinternal Suite 里面有个 Procmon 程序也可)。

2、把安装得到的 Surfer 8 目录和 Surfer8.reg 打包,就是一个绿色便携版的 Surfer 8 了。

3、在需要的电脑上解压,注意路径,如果解压后的路径与原始安装的路径不一致,可编辑 surfer8.reg 文件,将里面的路径替换为当前的正确路径。

4、用命令行方式导入注册表项(既然是自己编程当然不想给人看到导入注册表的过程了):

  1. regedit /s surfer8.reg
复制代码


5、然后就可以随意使用 Surfer 8 的自动化接口啦。

以上应该说明的极其啰嗦了吧?但我怀疑还会有人继续问:tu 怎么用?procmon 怎么搞?光说了注册表导入,完事怎么去除那些导入的注册表项?什么路径又是 怎么回事?

如果是类似这样的问题,请你们 google,我真的不想搞成计算机初级培训班。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2017-9-28 11:34:13 | 显示全部楼层
{:5_213:}{:5_213:}
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2017-11-21 16:46:51 | 显示全部楼层
多谢楼主 又学了好东西
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2017-11-21 17:56:39 | 显示全部楼层
用suffer13绘制的小波变换图,如何在数据大于等于零的时候用实线,小于零的时候用虚线绘制,麻烦大神指教。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2020-4-27 20:02:51 | 显示全部楼层
holz 发表于 2017-7-7 14:33
关于这个,我给程老师补充几点:

1、Surfer 各个版本的自动化接口多少都有不同的地方,比如最顶层的对象 ...

有个问题想请教一下holz老师:
我在使用c#调用时,同时安装了11和15版本,出现调用接口出错问题。经卸载15版本,清理注册表,仍无法调用,甚至导致电脑系统蓝屏崩溃,最后重装了系统只安装11版本才能正常调用。(经多次测试,只要安装15版必然导致所有版本surfer接口调用出错,且不能恢复)版本为程老师分享的15版。
我想咨询有没有什么办法让电脑同时安装两个版本,不影响调用接口?(因为15版本的底图重塑功能非常好用),感谢holz老师和程老师。
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表