- 博客(608)
- 资源 (90)
- 收藏
- 关注
原创 GenImageInterleaved Wrong type of control parameter 1
HALCONerror#1201:Wrongtypeofcontrolparameter1源码:HObjectrgbImage;constintiRow=1;constintiCol=1;constcharsz[3*iRow*iCol]={1,2,3};try{HalconCpp::GenImageInterleaved(&...
2022-05-31 09:50:32
35
原创 1000多个文件,占用空间10G,删除的效率
一,Directory.Delete失败。System.IO.Directory.Delete(strFirstSubDir);“System.IO.IOException”类型的未经处理的异常在 mscorlib.dll 中发生 其他信息: 目录不是空的二,递归删除文件后,再删除。121秒。三,FileSystem.DeleteDirectory 2秒。FileSystem.DeleteDirectory(strFirstSubDir, UIOption.OnlyErrorDialogs, r.
2022-04-13 14:55:23
150
原创 winform关于catch Program.Main
测试环境:win10 + VS2013一,点击主窗口的异常,可以catch到。二,弹出的新窗口的按钮异常,可以catch到。三,System.Timers.Timer的异常catch不到。四,新线程catch不到。一,建立一个WinForm项目。 static void Main() { try { Application.EnableVisualStyles(); ...
2022-03-09 16:59:02
25
原创 HALCON error #1201: Wrong type of control parameter: 1 in operator threshold
HALCON error #1201: Wrong type of control parameter: 1 in operator threshold错误代码:HTuple tMin, tMax; tMin.Append(3).Append(5.5); tMax.Append(4.0).Append(8); Hobject region; Halcon::threshold(img, ®ion,tMin, tMax);错误原因:tMin各元素类型...
2022-02-28 10:52:33
524
原创 关于Halcon::threshold 用时
Halcon::threshold 利用HTuple一次二值化两组区域比两次Halcon::threshold略快,不到5%。测试环境:VC2013 halcon10CWatch watch; for (int i = 0; i < 100; i++) { Halcon::threshold(imgCoatCheck, &m_regions.m_regionCoatLightNG, dMedialCoatCheckGray + iNGDiffGray, ...
2022-02-25 15:44:15
25
原创 threshold用时
threshold 16000行,16000列,用时13msthreshold 16000行,3列,大约1.3ms某个算法,我优化后反而大大变慢 才发现的。VC2013 halcon10。可能原因: halcon进行了加速。
2022-02-23 18:30:18
89
原创 托管C++中的^%
VS(还是VA)的提示条是:^% ,声明是^。实际使用的时候感觉和^一样,可能提示这是出参吧。使用示例: HalconDotNet::HTuple^ tWidth = gcnew HalconDotNet::HTuple(), ^tHeight = gcnew HalconDotNet::HTuple(); HalconDotNet::HOperatorSet::GetImageSize(img, tWidth, tHeight);...
2022-02-16 16:28:45
172
原创 halcon的Hobject转HObject
非托管C++代码:class CPLUSALOG_API_20211029 CCTest{public: CCTest(); int* Get(); ~CCTest();protected: Hobject* m_pRegion;} CCTest::CCTest(){ m_pRegion = new Hobject(); Halcon::gen_circle(m_pRegion, 10.0, 10, 10);}int* CCTest::G...
2022-01-25 10:11:57
540
3
原创 Undefined gray values in operator intensity
可能原因之一:参数应该是image类型的HObject,误弄成了Region类型的HObject
2022-01-17 10:36:18
194
原创 halcon10求周长
关于接口 非托管C++和C#分别定义类似接口,托管C++派生与非托管C++的接口,和C#的接口是整体部分关系。C#接口:非托管C++:托管代码C++声明:托管C++实现:托管C++ 派生于C#接口,和C++接口是整体、部分关系,更简单。...
2022-01-14 17:18:23
76
原创 加强容错设计
这世界几乎不存在完全正确的软件系统,目前的趋势是:系统规模越来越大,逻辑越来越复杂,要求越来越高。这种情况下追求完全正确会让成本变得不可控。理论上,设计、实现、环境都正确的软件可以做到完全正确;现实是,这三条一条都做不到。一,就算是小型商业软件,无论测试还是形式化证明,工作量都是巨大无比,所以只能妥协而采取近似解。二,开发工具、第三方库不会完全正确,或多或少的存在缺陷。三,运行环境不一定和设计环境相同,比如:操作系统、数据库系统版本号不一致,操作系统、数据库系统本身的缺陷等。出于对现实的妥协,容错技术应
2022-01-09 14:54:19
231
原创 for (int i = 0; i < v.size() - 1; i++)
std::vector<int> v; for (int i = 0; i < v.size() - 1; i++) { int x = v[i]; }此代码会异常,原因:v.size() 的结果是UINT的0,减去1后,就是40多亿。或者-1转成UINT就是这么多。...
2022-01-07 11:31:48
470
原创 【闻缺陷则喜】避错设计
同型原理 同型原理指保持形式统一。统一不同人风格很难,同一个人急躁的时候和轻松的时候风格都不一样,何况不同的人。统一的内容包括但不限于:统一的命名规则。 利用接口和适配器统一诸多类似算法。CDC系统的算法主要有:瑕疵检测、寻找极耳、寻找Mark孔,宽幅测量等,每种算法因为要检测的材料不同,有细微区别。可以统一成接口:输入图像,输出json串。 统一的文件格式,如:日志文件。 简化问题,问题有多个解。选择一个较优解。比如...
2022-01-05 19:17:59
49
原创 真实重构例子
很简单的问题。出于保密考虑,只显示部分代码。功能需求有些工艺有槽位,有些工艺没槽位。有槽位的理论上可能多行,已知工艺都是单行槽位。寻找槽位需要以下参数:槽位行数。一行有多少个槽位,不同行槽位数相同。槽位宽高及宽高公差,不同槽位宽高完全相同。各行槽位(中间)距离涂布顶端(或底端)的位置及公差。是以涂布顶端还是涂布底端为参考位置。各列槽位(中间)距离涂布左边缘(或右边缘)的位置及公差。是以左边缘为参考,还是以右边缘为参考。设计此功能可以拆分成两个步骤:寻找各槽位的中心
2021-12-28 18:33:19
149
原创 HOperatorSet.GenRectangle1 参数是负数的矩形
默认会被裁剪掉。HOperatorSet.SetSystem("clip_region", "false");就好了
2021-12-22 13:14:43
351
原创 halcon SetPart的缺陷
代码:void ShowRect(int iWideSize) { hWindowControl1.HalconWindow.ClearWindow(); hWindowControl1.HalconWindow.SetPart(0, 0, iWideSize, iWideSize); HObject rect; HOperatorSet.GenRectangle1(out rect, 0,...
2021-12-22 11:52:04
95
原创 高内聚和内聚分类
内聚 内聚指的的一个模块各组成成分的紧密程度。LCOM4通俗的说就一个类的成员变量和成员函数可以分为几组,以下两种情况之一分为一组:一、函数间存在调用关系。二、两个或更多函数操作同一个成员变量。此值最好是1。 偶然内聚、逻辑内聚 前者看起来没联系,实际也没联系;后者看起来有联系,实际没联系。这种情况很常见,尤其在基础库:一、某个读取配置类,有三个函数从txt读取配置,从ini读取配置,从json文件读取配置。系统最...
2021-12-15 19:58:33
1196
原创 低耦合概述
低耦合 耦合指的两个系统(模块)联系紧密。共7种,除掉无直接耦合和高级语言不存在的内容耦合,共5种。耦合从低到高,分别是:数据耦合、标记耦合、控制耦合、外部耦合、公共耦合。 数据耦合两例 JiSuan(5, 3);CGouMaiXinXi gouMai = new CGouMaiXinXi();//...JiSuan(gouMai); 标记耦合六例 ...
2021-12-11 13:22:05
310
原创 托管C++实现C#接口崩溃的一种情况
“System.TypeLoadException”类型的未经处理的异常在 CYSAlogExe.exe 中发生其他信息: 程序集“CLRAdapter, Version=1.0.8011.18681, Culture=neutral, PublicKeyToken=null”中的类型“CLRAdapter.CAlogFactory”的方法“GetCameraAlgo”没有实现应该定义为:virtual array<ProjectBaseLib::IImgAlog^, 1>...
2021-12-07 10:29:17
371
原创 HALCON error #1302: Wrong value of control parameter: 2 in operator affine_trans_region
关于affine_trans_region最好一个参数,帮助上可选值是:'constant','nearest_neighbor'VS2013 halcon10 这两个值都会崩溃。void Test() { HObject rRect; HOperatorSet.GenRectangle1(out rRect,0, 0, 100, 100); HTuple matIdentity; ...
2021-11-14 13:30:02
1076
1
原创 简单C#类转非托管C++
开发工具: C#2013功能:针对简单的C#类,生成对应的非托管C++类,并生成托管C++的转换函数。应用场景:界面层、数据层C#,逻辑层C++。简单的C#类:类型只包括 double string List源码下载:简单的C#类生成对应的C#类-C#文档类资源-CSDN文库https://download.csdn.net/download/he_zhidan/37948430 public class CFieldInfo {
2021-11-07 10:59:59
359
原创 通过简单原理增强软件可靠性
简单原理,就是字面的意思,系统越简单越好。复杂问题简单化,很难;简单问题复杂化,很容易。简化问题至少有如下方法:借用、取舍、拆分、分类、分工、模式与学习、规范 。借用是站在巨人的肩上。“欲穷千里目,更上一层楼”。遇到问题,先不急着动手,先思考、查阅记录,看以前是否遇到相同或接近的问题,直接复用或借鉴。以前,我和500年接到一个流程图的小项目,500年奋战几天没能解决,半年后发现BCG有现成的功能。如果没有可复用或借鉴,查阅团队文档和第三方文档。取舍。抓住主要矛盾,忽略次要矛盾。常见反例:某程序员
2021-10-24 16:29:18
42
原创 复制文件夹需要考虑的问题
完成一个函数复制文件夹,将源文件夹(strSrcDir)的文件复制到目标文件夹(strDestDir)。为了简化问题,限定如下:一,如果参数错误,可以崩溃,但不能损坏源文件。简单实现:依次复制各文件,如果目标文件存在,则先删除。这个实现有个严重的缺陷但触发几率低的缺陷。当源文件夹和目标文件夹相同时,会把源文件夹清空。可能有人说源文件夹和目标文件夹几乎不会完全相同。以下情况很常见:一,源文件夹和目标文件夹都是配置的,在两个不同的配置界面。二,一个文件夹是按某种规则生成,一个文件夹是配置的。解
2021-10-24 16:00:49
64
原创 保存文件的同时删除文件,保存用时会略微升高
保存文件的同时删除文件,保存用时会略微升高-C#文档类资源-CSDN文库https://download.csdn.net/download/he_zhidan/31084269保存文件的同时删除文件,保存用时会略微升高。没必要花大功夫专门处理 保存500文件用时(毫秒):30906 删除文件同时,保存500文件用时(毫秒):30263...
2021-10-13 10:07:14
19
原创 C++复制内存比C#稍快
同一台机器,都是VS2013,都是Debug版。 复制10M 内存5000次,C++ 4秒,C#6秒。C++稍快,除非核心模块没必要C#换C++。下面是C++和C#的测试代码。 [TestMethod] public void MemcpyUseTime() { byte[] src = Enumerable.Repeat((byte)0x08, 1000*1000*10).ToArray(); src[0] = 5; ...
2021-10-12 10:32:06
40
原创 10000次写1K 比 一次写10M 耗时多30倍
Test1一次写10M,Test2 100次写100K,Test3 10000次写1K。Test1用时,单位毫米:93 111 95 102 105Test2用时,单位毫米:226 210 198 289 224Test3用时,单位毫米:3000 3000 4000 3000 3000Test1平均用时101.2毫秒,Test2平均用时229.4毫秒,Test3平均用时3200毫秒。结论:10000次写1K 比 一次写10M 耗时多30倍。测试环...
2021-09-30 10:48:13
25
原创 [闻缺陷则喜]关于boost的想法
公司有个大约2万行的项目,用到了boost,我想取消掉不用boost。理由:一,可理解性差,除了高手很难弄懂。二,类太多,光头文件就1万多。大点的团队四五个高手,每人用一个boost类。高手流失后,很难补充,因为候选人不知道需要熟悉那五个类。我同学,一入职就接手一个boost用得多的项目,不到3个月就摸清了整个脉络,结果被辞退了,理由:3个月无任何成果。此公司花了6个月才找到他。 只有一个读取xml的类用到了boost,要想不用boost,要么自己写xml内核,要么用其他xml库。前者成本高...
2021-09-21 16:48:18
35
原创 [闻缺陷则喜]多线程读取参数文件
源码下载:https://download.csdn.net/download/he_zhidan/22215361事情起因:修改配置后,C++函数取读配置xml时,相机缓存满了而引起崩溃。几率发生。解决思路:读文件费时间,所以开一个线程读文件。抽象后的类似demo:假定读文件需要0.6秒,图像处理(用存文件代替)需要0.5秒,各执行100次。类和函数读取文件函数:一,List<int>增加本序号(0开始)。二,随机生成5000整数,加到list<int.
2021-09-09 16:04:49
25
原创 [闻缺陷则喜]win10家庭版vm打开虚拟机本机蓝屏
今天开启电脑后,用vm打开虚拟机本机蓝屏卸载重装vm也没用。新建立的虚拟机也有此问题,说明虚拟机文件可能没问题。vm打开虚拟机本机蓝屏bcdedit /set hypervisorlaunchtype off 也没用。想起昨天晚上Windows更新了,于是卸载了windows更新。修改注册表的方式,禁用了更新,不知道有效么?...
2021-09-09 10:44:46
228
原创 [闻缺陷则喜]C#程序集名称
开发环境:Win10 VS2013。一,新建一个类库Lib。namespace Lib{ public class Class1 { public int Add(int x,int y) { return x + y; } }}二,新建一个WinForm,调用Lib.dll,正常运行。三,在windows下将Lib.dll改成为Lib1.dll, WinForm引用LIb1.dll,运行异常。四...
2021-09-08 09:22:36
41
原创 EFI VMware Virtual SCSI Hard Drive (0.0) ... No Media
EFI VMware Virtual SCSI Hard Drive (0.0) ... No MediaEFI VMware Virtual IDE CDROM Drive (IDE 1.0) ... No Media先关闭虚拟机,然后用记事本打开指定虚拟机目录下的扩展名为VMX的文件去掉firmware=”efi”,即可。开启虚拟机后,进入PE界面。使用分区工具分区。进入虚拟光盘,运行安装器安装。以前在Win10上 没这么麻烦,直接就可以安装vm15。开始以为是vm安装盘有问题,
2021-09-07 18:31:44
2813
原创 [闻缺陷则喜]C#调用C++的类
开发环境:Win10+VS2015 新建Win32 DLL 一,确保c:\code文件夹存在。二,新建Win32项目HD。向导的应用程序类型选择:DLL,勾选“导出符号”。 C#调用extern "C" 函数 一,打开hd.h和hd.cpp,发现向导已经导出一个变量、一个函数、一个类。HD_API int fnHD(void);前面加上extern "C" 变成extern "C" HD_...
2021-08-31 17:38:58
35
原创 已加载菜单组 DDF
原因:cuix默认菜单组名称DDF,如果不修改容易重复。解决方案:修改菜单组名。具体步骤:1,CAD cui命令 打开“自定义用户界面"。2,打开需要加载的cuix文件。3,修改菜单组名。...
2021-08-31 13:43:48
22
原创 System.BadImageFormatException: 未能加载文件或程序集
看攻略:C#可以调用托管C++的类,托管C++ 可以调用非托管C++的类。从而间接实现C#调用C++的类。实践,运行时崩溃,提示如标题。最终发现原因:C#的 解决方案平台是Any CPU,托管C++和非托管C++的平台是X64,托管C++和非托管C++的平台改成X86(Win32)就可以。操作系统:Win10 开发环境和平台工具集:VS2015...
2021-08-27 11:16:32
390
原创 [闻缺陷则喜]编码与实现方式
人类记忆字母、数字、汉字、符号需要记住读音或笔顺;计算机制只需要记录编号。 ASCII码 文本编码方式的基础是ASCII码,它是一个7位的编码标准,包括26个小写字母、26个大写字母、10个数字、32个符号、33个控制代码和一个空格,共128个代码。其中ASCII码是大多数常用编码的基础。 ANSI ANSI(美国国家标准协会)通常使用 0x00~0x7f 范围的1 个字节来表示 1 个英文字符。超出此范围的使用0x80~0xFFFF来编码,即扩展的ASCII编码
2021-08-25 19:34:17
49
原创 单元测试 节选自《闻缺陷则喜》(此书可免费下载)
单元测试 单元测试用例设计 功能测试的用例设计是业务功能逻辑的输入输出,单元测试中就是函数的输入输出,那么单元测试中的输入输出有哪些呢?输入:被测试函数的输入参数被测试函数需要的全局变量被测试函数的内部私有变量函数内部调用子函数的数据函数内部调用其他模块的数据函数内部调用外部服务的数据输出:被测函数的返回值被测试函数的输出参数被测试函数修改的全局变量被测试函数修改的内部变量被测试函数增删改的数据库数据等被测试函数...
2021-07-17 10:08:02
53
2
简单的C#类 生成对应的C#类
2021-11-07
保存文件的同时删除文件,保存用时会略微升高
2021-10-11
多线程样例一 读写参数文件
2021-09-09
闻缺陷则喜20210509.doc
2021-05-09
作为公共组软件工程师如何工作
2019-02-10
士农库1.1 头文件、lib、dll 两个测试项目
2019-02-10
面试北京XX数通总结
2019-01-23
如果我当上技术经理如何开展工作
2019-01-06
最短点对演示程序
2018-12-31
墨家巡逻兵1.0.2、编辑器、源码
2018-11-17
8邻域01模式和8联通性不同的情况
2017-09-11
智勇三国生成验证码的程序,欢迎指教
2011-07-29
SaveBarState LoadBarState
2009-11-14
窗口(CWnd类)控制 SWF格式
2009-11-07
取得窗口类对像或指针
2009-11-07
VC6命令消息的响应顺序
2009-10-31
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人