(一)
注意下面的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
版权声明:本文为博主原创文章,转载请附上博文链接!