(一)
注意下面的img不能放在线程外面写。
而是要放在lamada写法的线程里面。
public string ccdTopWork() { HObject img = new HObject(); img.Dispose(); var time = stringHelper.GetHHmmss(); try { if (CCDTopDelayTime == 0) CCDTopDelayTime = 5; Thread.Sleep(CCDTopDelayTime); if (CCDIsDebugMode) { img = ccdTop.GrabImage(CCDTopImgFilePath); new Thread(new ThreadStart(() => { ccdTopLogic(img, 0, time); img.Dispose(); })).Start(); } else { img = ccdTop.GrabImage(); new Thread(new ThreadStart(() => { ccdTopLogic(img, 0, time); img.Dispose(); })).Start(); } return string.Format("P3,{0}", time); } }
正确写法如下:
public string ccdTopWork() { HObject img = new HObject(); img.Dispose(); var time = stringHelper.GetHHmmss(); try { if (CCDTopDelayTime == 0) CCDTopDelayTime = 5; Thread.Sleep(CCDTopDelayTime); if (CCDIsDebugMode) { new Thread(new ThreadStart(() => { ccdTopLogic(ccdTop.GrabImage(CCDTopImgFilePath), 0, time); img.Dispose(); })).Start(); } else { new Thread(new ThreadStart(() => { ccdTopLogic(ccdTop.GrabImage(), 0, time); img.Dispose(); })).Start(); } return string.Format("P3,{0}", time); }
错误的写法会造成执行执行外部这句出错, ProcCall.Execute()
ProcCall.SetInputIconicParamObject("Image", img); ProcCall.SetInputCtrlParamTuple("parameter", paramList); ProcCall.SetInputCtrlParamTuple("test_parameter", testNum); ProcCall.Execute();
(二)
在使用halcon引擎的时候,如果你有多个相机要并发执行外部函数,请注意一定要每个相机有自己的HDevProcedureCall。
如果你每个相机都用同一个HDevProcedureCall,会有很不幸的事情发生。
你会发生外部函数调用经常会报传出的对象异常之类的报错。
而你分别运行这几个外部函数却是没有问题的。
重要的事再强调一下:多相机并发的时候,你不能使用同一个HDevProcedureCall来调用外部函数。
另外,你的设备不管有多少个相机,注意都只需要一个halcon引擎(HDevEngine )哦。
private HDevEngine MyEngine = new HDevEngine(); public HDevProcedureCall ProcCall; var halconExamples = HSystem.GetSystem("example_dir"); var ProgramPathString = halconExamples + @"\hdevengine\hdevelop\fin_detection.hdev"; var Program = new HDevProcedure(CCDProgramPath); ProcCall = new HDevProcedureCall(Program);
(三)
记个题外话。
在线建立一个空的仓库后,想把本地目录下的工程上传到新建仓库怎么搞?
首先,本地目录下执行 git init
再执行指令把本地目录和远程仓库建立联系
git remote add origin 远程仓库地址
再执行 git pull origi master 试一下
如果还有错误,再百度一下吧。
另外,极有可能出现下面的错误:
git push error: failed to push some refs to
出现错误的原因是github中的README.md文件不在本地代码目录中。
也就是说我们需要先将远程代码库中的任何文件先pull到本地代码库中,才能push新的代码到github代码库中。
使用如下命令:git pull --rebase origin master
然后再进行上传: git push -u origin master
多人协作改代码怎么搞?
这个只需要对你的线上仓库做一个协助邀请就可以了。
在这里输入你同事的git账号名,就可以了。
然后你的同事去账号对应的注册邮箱收邀请邮件即可。
成功后他会在自己的git下面看到这个项目了。
---------------------
作者:hackpig
来源:www.skcircle.com
版权声明:本文为博主原创文章,转载请附上博文链接!

