少有人走的路

勇哥的工业自动化技术网站

本站视觉相关教程整理贴子,持续更新

2020年勇哥的机器视觉实验项目清单(大纲)

勇哥的免费视频教程清单

勇哥在B站发布的视频清单

C# 勇哥对于Stopwatch进一步了解:精确测量运行时间

一般测量时间间隔使用的是DateTime.Now实例的DateTime.Ticks当前属性,想要精确测量一个操作的运行时间就只能使用Stopwatch类计时了。

Stopwatch计时精度取决于硬件,如果安装的硬件和操作系统支持高分辨率性能计数器, 则Stopwatch类将使用该计数器来测量运行时间。,否则,Stopwatch类将使用系统计时器来测量运行时间。

测量耗时操作的运行时间:

勇哥的小娱乐:Halcon做fc游戏的自动打怪AI(1)连续窗口截图

勇哥注: 这个系列是勇哥的小娱乐。这么多年来感觉自己就是工作机器,没有一点属于自己的乐子。 突然想到儿时的小梦想是写个fc的坦克大战。要不,先弄个AI,让它自动玩坦克大战吧。fc的坦克大战是fc模拟器的游戏,要做自动打怪的AI,可以考虑连续窗口截图,然后交由halcon进行处理。处理结果交由策略代码处理,最后发布手柄控制指令。因此,首先先要考虑窗口的连续帧如何实时截取,然后就是如何实现虚拟手柄(或者虚拟键盘按键也可以)。这两点做不到,就玩不下去了。图1 fc游戏:坦克大战勇哥首先试一下截

C# 勇哥关于多线程读写plc内存的研究续,解决UI控件读写的效率问题

勇哥注:我们继续上一篇《C# 勇哥关于多线程读写plc内存的研究续,解决lock锁的效率问题》上一篇我们解决了lock锁的效率问题。本节我们继续讨论一下控件读写的效率问题。由下图中,我们看到的RichTextBox.SetText,它占6.44%的效率。本着程序员的工匠精神,我们也要把这部分耗能解决掉。直接说答案:我们在上节代码中,使用了Invoke输出RichTextBox的文本。也就是使用委托来输出控件信息。RtbMsg.Invoke(new Action(() =>

C# 多线程安全的无序集合ConcurrentBag

勇哥注:ConcurrentBag是一个线程安全的无序集合。专为生产消费模式进行订制的集合。如果多线程使用List<T>就会遇到问题:System.InvalidOperationException:“集合已修改;可能无法执行枚举操作。”。原因是timer2在遍历list的过程当中,timer1修改了list,使其大小发生了变化。如果使用ConcurrentBag这类安全集合,可以避免这类问题出现。它的常见方法如下:Add     &

C# 勇哥关于多线程读写plc内存的研究续,解决lock锁的效率问题

勇哥注:我们继续上一篇《勇哥关于多线程读写plc内存的研究》在上篇结尾,我们看到lock锁带来的效率问题。本着程序员应有的工匠精神,本节我们来研究并解决这个问题。先回顾一下上篇文章结尾勇哥截的程序效率图。Monitor.Enter的函数占用cpu时间75.85%,此耗能大户就是lock锁。(因为lock关键字实际上是Monitor的语法糖)由于plc读写操作中,读的次数一定远大于写入的次数,因此我们希望的是,无论有多少个线程都可以一起读,只是同一时间只能有一个线程能写。而lock是独占,它区分不

C#读写锁ReaderWriterLockSlim

这篇文章向大家介绍了读写锁ReaderWriterLockSlim,其优点就是多个线程可以同时读取该对象,要了解更多读写锁的知识,仔细阅读下文吧读写锁的概念很简单,允许多个线程同时获取读锁,但同一时间只允许一个线程获得写锁,因此也称作共享-独占锁。在C#中,推荐使用ReaderWriterLockSlim类来完成读写锁的功能。某些场合下,对一个对象的读取次数远远大于修改次数,如果只是简单的用lock方式加锁,则会影响读取的效率。而如果采用读写锁,则多个线程可以同时读取该对象,只有等到对象被写入锁

C# 勇哥关于多线程读写plc内存的研究

勇哥注: 多线程读写非全双工的硬件资源,是个实现比较困难的任务。 有不服气的同学可以尽管一试。我们说一个硬件如果是全双工,则表示它的读写是两个信道,可以同时进行。但是像很多品牌的plc,一般是不能全双工进行通讯的;另外还有串口,我们也不能全双工通讯。如果你的系统只有一个串口,你如何做到能让多线程读写呢?这要求你写的代码能实现:  多线程可同时访问,但是取得结果是分时取得。 读写功能必须互斥。每个线程的访问和取得的结果必须匹配。勇哥今天写的这个类,经测试可以很好的满足上面的

使用VS的性能分析工具来分析代码的性能瓶颈问题(2) 内存使用率

勇哥注: 一般我们通过使用windows的任务管理器来分析软件的性能问题。 通过cpu占用率、cpu时间、线程数量、句柄数量几个关键参数来分析软件存在的内在泄露、 暴句柄、吃cpu等等问题。 这里我们来研究一下vs自带的性能分析工具,勇哥之前也没有接触过。 因此此篇我与大家共同学习。这一篇讲“内存使用率”工具。先提供一段存在内存泄露的代码。  private void button2_Click(object sender, 

使用VS的性能分析工具来分析代码的性能瓶颈问题(1) CPU采样

勇哥注: 一般我们通过使用windows的任务管理器来分析软件的性能问题。 通过cpu占用率、cpu时间、线程数量、句柄数量几个关键参数来分析软件存在的内在泄露、暴句柄、吃cpu等等问题。 这里我们来研究一下vs自带的性能分析工具,勇哥之前也没有接触过。因此此篇我与大家共同学习。(一)先看下怎么启用vs的性能分析工具。首先,调试菜单选择“性能探查器"。点击 之后会出现下面的界面。这里可以选择分析现有项目,还是分析其它项目或者其它可执行文件。若是分析其它项目我们选择 “更改目标”

C#中只使用Invokerequired来判断是不是UI线程可靠吗?

今天遇到一个C#的Crash,用windbg打开dump,加载sos之后一看,在4号线程出了一个System.InvalidOperationException,在这个地址上调用!pe。可以看到如下的异常信息:12345Exception object:Exception type: System.InvalidOperationExceptionMessage: The calling thread cannot access this object because a different t
<< < 65 66 67 68 69 70 71 72 73 74 > >>
«    2025年12月    »
1234567
891011121314
15161718192021
22232425262728
293031
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
搜索
最新留言
文章归档
网站收藏
友情链接

Powered By Z-BlogPHP 1.7.3

Copyright www.skcircle.com Rights Reserved.

鄂ICP备18008319号


站长QQ:496103864 微信:abc496103864