- 博客(83)
- 资源 (19)
- 收藏
- 关注
原创 画图位置一键搞明白
《CRect坐标判断与绘图技巧》摘要:本文介绍了使用CRect进行坐标判断的关键要点,包括客户区与控件区的坐标差异。通过画图软件可直观查看左上角(L,T)和右下角(R,B)坐标,其中水平距离为|R-L|,垂直距离为|B-T|。重点说明了坐标转换的注意事项:1)客户区与屏幕坐标的转换关系;2)绘制对象的句柄对应;3)使用ClientToScreen()函数进行坐标转换。这些基础但关键的坐标处理技巧,对日常绘图工作具有实用参考价值。
2025-06-10 16:59:14
286
原创 工程突然异常报错MSB3073+ C3859
这样设置之后,重新编译就可以了,如果还是有问题,请重启计算机,每次出现这样的问题,都是这么干的,保证可以解决遇到的这些问题。小问题,大道理哦,问题虽小却可以让你停止不前,加油,打工人,打工魂。
2025-05-07 14:43:39
182
原创 VS突然报错svn不是内部或外部命令,也不是可运行的程序
展开我们发现Pre-Build Event中有command line :svn删除这个指令,在编译,问题解决!我们看到有一个command指令显示错误,在工程属性中,找到相关的command指令,最终我们在build EVENTS中找到了这个svn 的指令。有时候会出现莫名奇妙的问题,但是只要细心就会发现问题所在!
2025-03-05 09:11:01
272
原创 for循环嵌套效率问题
很多时候具体情况需要具体分析,不能一成不变的说哪一种最好,选择合适的方法才是最好的.两个for循环嵌套,怎么做效率才高呢?有时候外循环大,效率高,有时候内循环大,效率高,
2025-03-03 09:30:15
191
原创 VS加入QT组件以及使用方法
那么vs怎么加载QT组件呢,再vs中找到Extensions标签,选择manage Extesion,在右侧的搜索框中输入QT Visual studio Tools,下载安装即可.找到TOOLs—Options—Qt,自动侦测路径,添加就可以了.QT原安装程序,官网自己下载,安装,安装时候注意安装路径.安装完之后,vs需要设置QT版本,否则无法正常编译.添加打开ui的工具–Qt Designer.exe。添加完,有时候我们的QT的UI无法打开,这样,我们的VS就可以正常打开QT啦.
2025-02-28 16:06:21
899
原创 串口编码转换问题出现乱码
readfile读取的数据,要么是char或BYTE类型的,这里读出来的数据需要做一个转换,转换成对应的数据格式,就看正常显示了.我们知道串口通讯时候,有时候我们会选择ASCLL码,有时候会选择HEX,那么我们有时候对接不同的厂商时候,返回的接口数据不一致的时候就会出现所谓的乱码"?当然我们也可以取出每一个字符,计算对应的16进制数据,先计算低位,字符=字符&0X0F,小知识,大作用,解决实际问题,我们是认真的,坚持记录生活,原创不易,且行且珍惜!在计算高位,字符=字符&0XF0>>4,
2025-02-26 13:16:36
284
原创 JSON头文件调用
除了传统的读写操作,现在流行的json文件读取保存,还是非常方便的.以后读取文件可以更方便,更有效,不用在那么麻烦啦.可以转换成你需要的任何类型,数据读取写入太方便了.头文件放在源代码中,在调用处添加引用路径。// 声明Person类。// 反序列化从JSON。
2025-01-09 17:23:01
299
原创 关于字符检测的算法
说到字符检测.,我们想到的首先就是提取字符,然后创建模版,利用定位仿射变换到新的字符上,做差值运算,得到的插值区域就是我们的异常区域.到此训练完成,当然如果需要保存模版的,可以通过序列化参数,保存模版到二进制文件中,支持多模版保存.我们需要对图像进行处理,亮度等信息记录,检测模版参数等,获取金字塔等级,接下来创建模版.a.一般选择自动阈值或绝对阈值.得到感兴趣区域.c.对感兴趣区域筛选,得到需要 的字符区域.b.固定阈值,直接调用threshold.d.对字符排序,组合生成图像.比较变异模型,检测时候用.
2025-01-09 14:08:46
590
原创 通讯串口创建过程
波特率参数设置.DCB结构体,设置之前,我们需要先初始化结构参数,通过GetCommState获取dcb初始化值,在通过直接赋值,完成参数传递,最后设置到串口就可以了.说到串口通讯,不管是RS232,还是RS485其实原理都是一样的,最终调用的API也是一样的,不同的在于参数的设置.SetupComm(hCom,1024,1024);这样,我们一个完整的串口通讯就完成了,每天学习一点点,不积跬步无以至千里,学海无涯,努力向前!//波特率为9600。//数据读取,读取之前,设置读取数据的大小长度,
2024-12-23 10:12:43
407
原创 一维mapping数据查找转换成二维坐标
当然这种对应关系并不是固定的,每家客户的选择都是不一样的,用户有四个选择,左上角,左下角,右上角,右下角,选择不同,对应关系也是大同小异的,会一种,其它也都是类似的.再半导体行业中,通常我们用0 标识良品,用非0值标识次品或其它不同类型的缺陷信息.那么mapping中,好品就是0,不良品就是非0值.mapping在半导体行业中并不陌生,到处都需要用的,有的甚至还涉及到mapping的上传,下载,关联一些数据等.基于这一原则,我们可以查找mapping中的不良品位置,进而转换成坐标,进行相关关联计算.
2024-12-20 15:17:52
214
原创 一维条码读取-halcon图像识别浅谈
二维码识别我们都比较常见,有时候会遇到一维条码的识别,现在很多智能设备都是支持一二维码的识别,但是有时候,对于要求不是很高,又可以降低成本的,还是可以自己开发一些算法用.涉及到图像的,第一步就是取图,图像处理,创建算法,识别,得到理想结果,大量数据验证,调参,最终实现稳定的一个过程.一维条码主要用于商品追溯,.比如我们的快递单号,物流传输过程中,用的都是一维码.今天我们浅谈一维条码读取实现方法.
2024-12-20 14:11:34
246
原创 关于CRC校验算法的浅谈
2.宽字节,数据量是单字节的两倍,需要单独计算高位,.低位,然后转换成一个数据,如果传入的仅单字节就,其实全部都是低位,不存在高位.3.按照指令帧传送,计算出来的CRC,需要低位在前,高位在后,因此需要把计算出来的CRC,高位和低位数据对换以下.第二种算法,异或(XOR),和第一种类似,只不过不是求和,而是每位异或运算^,最终的结果附加到指令末尾.a.字符型char,单字节,遇到双字节的,需要自己先转换成单字节,在计算,否则计算出来的CRC会不正确.4得到的结果存在寄存器中,直到所有数据终止结束.
2024-12-20 13:53:08
517
原创 查找字符串中某个字符返回字符位置
第二步,.根据输出的位置,解析成坐标信息.这个没有什么难度,.自己发会就好了,起始点不一样,结果也会差异很大,四个角都可以是起始点,选一个适合你的就好了.早期的vs版本不支持vs,当然也可以下载boost来实现,关键还是不想下载,那么就自己写吧.特殊案例处理,第一个字符,最后一个也需要兼容,测试通过就可以正常开发了.算法第一步,查找字符并输出字符位置信息,计算有几个字符。1.要求,查找字符串中同一个字符,并找出字符的位置.采用递归查找方法,连续查找.,直到所有都查找完成.
2024-11-22 17:12:50
561
1
原创 串口读数据无法获取的原因
串口硬件配置上,波特率,奇偶校验最好都改成这样,这样有一个好处,串口的响应速度也会变快,缩短等待时间。//长度也很关键,如果设置为0.直接返回,不会读渠道任何数据。GENERIC_READ|GENERIC_WRITE, //允许读和写。hCom=CreateFile(strComCode,//COM1口。//波特率为9600。OPEN_EXISTING, //打开而不是创建。
2024-10-30 17:26:15
657
原创 消息传递窗口不阻塞
很多时候,我们不想写一个线程,只想做测试代码,比如说在一个按钮里实现一个循环执行指令动作,可是一点击按钮,界面就会阻塞卡死,为了解决这个问题,我们可以引用消息传递函数,把消息传递出去,这样我们的界面就不会卡死,实现了像线程一样的功能.PeekMessage 将检索属于当前线程的任何窗口的消息,以及当前线程的消息队列中 hwnd 值为 NULL 的任何消息 (看到 MSG 结构)。这里用的就是PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)获取消息队里信息,
2024-10-30 16:17:53
346
原创 字符类型转换
const char* c_str() 直接赋值 NULL const char*=char;源格式->目标格式 string char* const char* char[]string NULL 直接赋值 直接赋值 直接赋值。6.16进制字符串转换成10进制。
2024-10-28 14:16:28
244
原创 关于校验码的算法
最近工作遇到和校验码打交道的地方,很多地方都会生成校验码.校验码的计算方法也是多种多样的,但是根本不离其宗.这里我们介绍几种常用的校验码.
2024-10-28 13:09:18
734
原创 编程中的注意事项
3.字符长度比较strncmp(),strcmp,字符串比较,cstring str1,str2;也可以用字符一个个比较,当然也可以用字符串比较.InitializeCriticalSection(&Critical);5.全局变量使用时候注意,共同访问的时候需要加锁,否则会导致异常.b)意义完全不一样.一个是赋值,一个是判断是否相等.1.书写规范这个看似简单,却非常重要.
2024-10-24 17:41:57
250
原创 基恩士读取2个二维码
软件在Socket接受函数里,修改,收到的数据并分析即可,当两个都获取到并比较格式长度一致,才算真的读取成功,有一个不成功就是NG.这个逻辑不同客户要求不一样,根据自己需求自己实现就好了.基恩士SR1000既经济又实惠,使我们读码的首选利器,那么通常情况下,读码只需要读取一个二维码,.有时候需要读取多个二维码,基恩士软件是可以设置的.那么软件该怎么实现呢?有时候别看这两组数一模一样,其实长度不一样,比较时候我们当然希望不要多有多余的字符如换行,2个字符长度,去掉之后,才是我们真正想要的数据.
2024-10-18 14:08:46
1072
原创 实测RS485通讯温控器
串口通讯,不管是RS232,RS485,RS442其实都是一样的原理,对应硬件来说接线不同,对于软件来说,大致上应该差不多.SetupComm(hCom,1024,1024);//输入缓冲区和输出缓冲区的大小都是1024。GENERIC_READ|GENERIC_WRITE, //允许读和写。hCom=CreateFile(strComCode,//COM1口。当然,现在很多有多封装好的串口类,拿去调用也是可以的.OPEN_EXISTING, //打开而不是创建。|RS232 |全双工。
2024-10-18 13:38:59
783
原创 函数返回数组怎么操作
指针我们可以用strlen函数计算指针长度,数组长度我们用sizeof(A)/sizeof(TYPE);定义时候是数组,传入一个指针计算长度方法不对.那么有人说,用指针可以不,当然是可以的,那我们返回的就是指针.例如char Map[50],char* MapP;小问题虽小,搞不明白会出大问题,每天进步一点点!这样函数执行完成,我们就可以获取到数字的值.*p+1:*p指向的值+1;//OutP[]一定要赋值。//OutP[]一定要赋值。//OutP[]一定要赋值。*p++:下一个值;
2024-10-18 13:19:23
378
原创 RS485通讯测试
2.通讯指令,严格按照说明书上的协议指令操作,比如说一般供应商提供的软件串口DEMO都是以ASC码格式发送指令的,测试都是非常正常的,比如文件头\STX,文件未\ETX,校验数据CRC计算方法怎么计算,一般说明书里都会给出计算例程,这个也不用多说,关键是指令帧格式.1.串口打开模式,是同步还是异步,经过测试同步完全没有问题,异步时候数据发送(也就是writefile()会返回异常,暂时不清楚异步的原因.这个明确给出每个指令的格式,占用字节数,一般我们发送都是char p[31],
2024-10-16 17:30:46
2220
原创 app退出隐藏在进程之中
资源中 的ID是一个看似简单却非常重要的事情,排查重复的ID,一个个解决掉,做到这里大部分问题应该可以排除了,重新启动软件,在退出,发现软件可以正常退出了.最近发现一个很有意思的事情,APP退出之后,发现进程中依然在默默运行,而且是突然发现的这种情况.因为最近有修改界面,排查问题,应该是问题出现在资源上,就一步一步的找,直到找到问题所在的代码.退出的进程中也没有发现软件还在运行,代码调试时候只发现一个线程未初始化退出异常.
2024-09-20 16:14:19
380
原创 halcon图像怎么显示在我们指定的区域
在通过set_part函数,set_part modifies the image part that is displayed in the window.我们获取一个图像控件的句柄,把图像句柄传递给halcon的图像窗口句柄,设置窗口的属性,这样我们的halcon图像就可以正常显示到windows窗口上了,是不是非常简单.做任何事情都是从简单到复杂,每一个简单的累计,最后堆叠成复杂的模型.坚持就是胜利.简单说,就是一个句柄的传递关系.
2024-09-07 13:23:59
624
原创 Strip Mapping
StripID唯一性,就像我们的身份证一样,可以追踪溯源,自从框架来到工厂,第一件时间是给它加一个身份标签,也就是我们所说的StripID,这个StripID必须满足的条件是唯一性.StripID生成之后,默认StripMapping是全部良品,通过DB生成第一道工序的mapping,然后通过WB修改上传最新的mapping,直到所有工序完成,打包出货.Stripmapping关系到半导体行业中的mapping信息传递,是半导体行业至关重要的导航.
2024-08-01 10:11:40
1085
原创 客户现场电脑卡死
换下来的硬盘,通过测试发现,普通模式下杀毒软件都无法安装,那么只能使出杀手锏,安全模式下进行全盘杀毒,果不其然安全模式下发现了顽固易感病毒,在线的状态下我们强力杀毒,最终解决了的这个可恶的病毒VirusOrg.Win32.Symsvr.A。但是连续运行,还是会出现卡顿,不响应的情况,因此我们软件排查基本没有找到核心问题,那么是否是硬件原因引起的异常,检查最新的驱动安装,更新的驱动程序,卸载最新安装驱动程序,继续观察.3,转安装杀毒软件,安装不了,安全模式下安装,修复.4.转重新安装系统!
2024-08-01 09:26:16
405
原创 MFC窗口大小最大化最小化随拖动调整大小
选择需要支持的对话框属性,开启Title Bar功能,开启System Menu ,Maximize Box ,Minimize box功能,这样我们的主界面就可以支持最大化,最小化,同时Border属性设置为Resizing模式,可以拖动改变大小.//第一个保存的是对话框的Rect。通常我们的MFC窗口默认是没有可以选择的最大化和最小化,开发用户可以选择支持最大化,最小化属性功能.用来盖改变窗体大小,并记录窗口信息,退出时候保存,下次加载时候自动恢复上次保存的窗口大小.
2024-07-29 19:08:43
2543
原创 PE安装系统
进入PE桌面之后,我们选择一键装机就好了,把需要安装的系统放在U盘或除安装盘以外的地方,进入安装,备份,还原界面,我们选择需要安装的系统,执行就可以了,等到重启的时候记得把U盘拔了,等待系统安装完成就好了。万一重启的时候忘记拔U盘也没有关系,只不过需要在安装完系统,重新进入PE,重新引导下就可以了,不然引导文件都装在了U盘里,拔了U盘当然就启动不了。前些天客户的电脑坏了,需要重装系统,我们的恢复光盘安装的时候,由于主板的原因,导致进入windows安装界面,鼠标键盘没有响应,自然也就无法正常安装了.
2024-07-20 09:49:26
333
原创 关于APPCRASH的问题处理
3.电脑中病毒感染,导致软件启动异常.通常联网,安装杀毒软件就可以正常解决,可是遇到顽固病毒,杀毒软件都无法安装怎么办,别急,我们可以在windows启动的时候,选择带网络的安全模式进入电脑系统,安装杀毒软件,安全模式下基本上可以搞定这些疑难杂症. 杀完毒,记得重启,重启之后要再重新查杀一遍,确认没有病毒,这样我们的软件基本上可以恢复正常使用.2.安装了某些硬件引起的不兼容,导致软件启动时候crash,解决这样的通常就是要么更新驱动,要么移除硬件跟换合适的适配硬件.
2024-07-20 09:27:24
2518
原创 网络连通性测试
Win键+R调出运行窗口,输入cmd回车即可,当然部分需要管理员权限才可以运行,Win键+S,输入cmd,右键命令提示符,以管理员身份运行即可.这里几个关键参数对于软件是非常重要的,设置不正确是无法解析的.
2024-07-02 10:26:03
480
原创 字符转换方法
很多时候,我们可以使用string作为中间过渡值,转换成你想要的数据类型,有些类型是不能直接转换的,需要string去过渡,有了这种方法,任何类型的数据类型,你都可以轻松转换了.m_byte=(BYTE*)m_cstr.GetBuffer(m_cstr.GetLength());const char* c_str() 直接赋值 NULL const char*=char;cs_in=_T(“adc中国人的a\r\n新的银行”);
2024-07-01 17:31:13
399
原创 文件中插入数据(指定内容数据上传,下载,,和本地文件同名)
最近客户有这样的一个需求,本来我们的文件读取是以二进制流的方式读取和写入的,客户变更了方法,我们该如何解决呢?下载数据的时候,我们后台把对应的源文件数据复制到目标文件夹中,查找到下载数据的起始位,设置位当前位置,写入数据即可.2.获取目标文件内容,涉及到文件开始,结束.(这个目标文件的位置,新建再多每一个都是一样的位置 )文件上传的时候,备份源文件到指定的目录下,只获取客户需要的数据段,客户看不到备份 的隐藏文件.1.文件的读取,写入方式,我们改为TEXT模式,为了方便查收需要的数据段.
2024-07-01 17:17:35
383
原创 c++实现web服务器数据收发
5.发送接口函数内容,格式按照接口函数给的数据就好了有json数据,xml数据,文本数据,可以根据需要自行设置,这里需要转换一下,否者会发送失败.返回12029原因是IE没有设置TLS1.0,TLS1.1,TLS1.2,TLS1.3,有的美颜装IE,也需要安装下,全部勾选就好了,设置方法:控制面板—Internet选项—高级属性—安全选项卡----找到TLS1.0,TLS1.1,TLS1.2,TLS1.3,全部勾选。//注意PC指向区域在栈空间。AfxMessageBox(_T(“连接失败”));
2024-06-27 21:39:43
1049
原创 Foxmail邮箱使用方法
导致该问题的原因是由于邮箱未开启IMAP/SMTP服务或者POP3/SMTP服务,此时可以登陆网页版进行设置,设置成功后,可以再次使用Foxmail进行登陆。1、如果在创建账号过程中一直提示邮箱地址或密码错误,但实际账号密码又没有问题,2.兼容性问题,右击属性以管理员身份运行即可.
2024-06-04 16:42:37
747
原创 C++创建多级文件夹函数
如果路径的最后一个组件是目录,而不是文件名,则字符串必须以反斜杠 () 字符结尾。如果函数失败,则返回值为 FALSE。若要检索扩展的错误信息,请调用 GetLastError。DLL Dbghelp.dll可再发行组件 DbgHelp.dll 5.1 或更高版本。如果函数成功,则返回值为 TRUE。包含的头文件以及lib.目标平台 Windows。标头 dbghelp.h。
2024-05-07 16:05:32
380
原创 软件代码写作要点
潜心修炼,终有一日可以达到你想要的高度,加油,每天进步一点点,日积月累就是你的成果.加油!虽然大神都不用写流程图,对于复杂的流程,事前规划好流程图是必不可少的秘密.这个个简单的流程图初步规划了流程的走向以及规则,看似简单却隐藏很多细节.比如说文件获取方式:共享文件,文件格式xml,文件内容(待定格式)下载本地功能,删除,上传,更新,刷新等功能.尤。
2024-02-20 16:14:10
532
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人