![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C#
文章平均质量分 68
唠嗑一夏
这个作者很懒,什么都没留下…
展开
-
模拟BACnet设备(八)
前面一到七篇,从理论,工具到实践介绍了BACnet,今天这一篇我们来模拟一下BACnet设备。我们模拟来写一个有关于电梯呼梯的BACnet设备.效果图如下:这个呼梯设备呢,比较简单只有三个参数,最低楼层,最高楼层和当前楼层,会变化的是当前楼层,随着上行或下行的时候当前楼层就会变化,下面是这个Demo的UI。实现的功能有:1 能在Yabe中查找到这个设备,以及显示这个设备的所有对象;2 实现基本的读写功能;3 能够实现订阅属性值变化的功能;作为一个BACnet模拟设备,需要有一个xml文件,原创 2024-04-23 13:38:03 · 1351 阅读 · 0 评论 -
BACnet的订阅 (七)
现在有一个需求就是我只关注温度的变化,当BACnet设备(Bacnet.Room.Simulator以这个为例)的温度有变化时就直接推送给我,而不是我一直在实时监控这个温度值,如何实现呢?答案就是预订“属性值改变”,请求当BACnet设备的温度对象的温度属性值改变时,要告知我。回调中收到这个属性被订阅的消息,在这个回调中,它先记录下来这个订阅,并发送。值变化: 一个主动发送属性值变化,另外一个接收到值变化的通知。中将订阅属性值发生变化的数值发送,即主动推送属性值变化。,订阅某个对象的属性值变化。原创 2024-04-23 13:33:16 · 449 阅读 · 0 评论 -
BACnet的读写服务 (六)
介绍了Bacnet设备的读和写, 读整个设备的对象列表, 读单个对象的某个属性, 读单个对象的所有属性 `ReadPropertyRequest`;写某个对象的当前值`WritePropertyRequest`。原创 2024-04-22 13:33:54 · 804 阅读 · 0 评论 -
BACnet 发现设备和面向对象结构 (五)
前面学了BACnet面向对象的模型以及提供的服务,现在来研究一下如何简单使用WhoIs和Iam服务。Object类这个Object类所在的命名空间在下,不是微软定义的object类哈。看一下这个类的字段也很简单,一共三个字段:Bacnet对象类型,是一个枚举类型;Bacnet对象实例号;对象实例号与前面的对象类型一起就能确定是哪一个对象。属性列表, 说明一个对象可以包含多个属性。[Systemget;set;get;set;get;set;} }get;set;get;原创 2024-04-22 08:42:07 · 1210 阅读 · 0 评论 -
了解BACnet服务(四)
在面向对象技术中,与对象相关联的是属性和方法,属性用来说明对象,而方法是外界用来访问或作用于对象的手段。在BACnet 中,把对象的方法称为服务(Service)。服务就是一个BACnet 设备可以用来向其它BACnet 设备请求获得信息,命令其它设备执行某种操作或者通知其它设备有某事件发生的方法。下图:BACnet设备接收服务请求和进行服务应答的示意图。BACnet 定义了35 个服务,并且将这35 个服务划分为6 个类别。原创 2024-04-19 13:40:55 · 701 阅读 · 0 评论 -
了解BACnet的对象模型 (三)
[OTC]在楼宇自控网络中,各种设备之间要进行数据交换,为了能够实现设备的互操作,所交换的数据必须使用一种所有设备都能够理解的“共同语言”。BACnet 的最成功之处就在于采用了面向对象的技术,定义了一组具有属性的对象(Object)来表示任意的楼宇自控设备的功能,从而提供了一种标准的表示楼宇自控设备的方式。*在BACnet 中,所谓对象就是在网络设备之间传输的一组数据结构,对象的属性就是数据结构中的信息,设备可以从数据结构中读取信息,可以向数据结构写入信息,这些就是对对象属性的操作。*BACne原创 2024-04-19 13:00:00 · 1046 阅读 · 1 评论 -
BACnet调试工具的使用 (二)
在SetupYabe_v1.3.2.exe安装完成之后,我们在电脑的开始菜单栏可以看到Yabe文件夹下有好几个应用程序,今天我们使用Bacnet.Room.Simulator (一个BACnet设备模拟器,模拟温度和湿度)和Yabe(Bacnet设备点的扫描器)来进行简单操作。接着我们可以订阅户外温度的值,当温度变化时就通知Yabe, Yabe中也能实时看到温度的变化,并且用折现图绘制出来。改变属性值,先看看Out of Service(脱离服务)的值是不是true, 只有当。2.4 订阅属性值变化。原创 2024-04-18 16:17:19 · 672 阅读 · 4 评论 -
Bacnet 入门参考资料 (一)
OTC]在网上整理的一些BACnet的相关资料,在这里作一个整理,方便自己食用。原创 2024-04-18 15:45:00 · 563 阅读 · 0 评论 -
ManualResetEvent 在线程中的使用C#
ManualResetEvent 用于表示线程同步事件,可以使得线程等待信号发射之后才继续执行下一步,否则一直处于等待状态中。原创 2024-03-07 14:53:15 · 474 阅读 · 0 评论 -
C#和低功耗蓝牙BLE通讯
以前都是用手机APP和蓝牙设备通信,现在在一个项目中需要更改为用电脑端上位机与蓝牙通讯的需求,在此记录自己走过的坑和积攒的经验。原创 2024-03-07 14:15:05 · 3114 阅读 · 11 评论 -
检验Pdfsharp.dll 支持的语言及对应的字体
PdfSharp 语言和字体的支持有限,有时候再本地电脑上能正常显示文本,但在其它电脑上就显示乱码或一个正方体,或?不同操作系统可能自带的字体本身就不一样,可能中文系统有的,英文系统没有,这就导致文本显示有问题。现在我们在PdfSharp.Drawing XFont 类增加一个IsSupport的方法,判断该字体是否支持字符串的绘制。在确保字体可以使用时,使用该字体绘制文本并显示出来看看效果。可使用的字体会显示Ok, 不支持该语言文本的字体则显示NG。这篇文章,修改源码,做的一个小工具。原创 2023-11-16 10:47:21 · 683 阅读 · 0 评论 -
PdfSharp 对中文字体显示乱码的问题
如果您将字符串反转,并且确保为开始、结束、中间或独立显示选择正确的Unicode字符,则阿拉伯文本可以工作。只支持简单的语言,如英语或德语,字符和字形之间具有简单的一对一关系。华文隶书, 华文宋体, 华文细黑, 华文新魏, 华文行楷, 华文中宋, 华文彩云, 华文仿宋, 华文琥珀。对PDFsharp的源码进行修改,使其支持对TTC字体文件的支持。,通过输入的字体名称检测能否在PdfSharp上正常使用,也涉及源代码的更改。在官网对此有回应,PdfSharp是不支持的。原创 2023-11-16 08:44:46 · 1328 阅读 · 0 评论 -
C# 对文件进行排序 (按时间或名称)
对文件进行排序,可以是按时间或按名称正序或倒叙去排。同理,如果需要正序排序,只需要将X和Y的比较位置互换一下就可以了。,也可以去其它时间,按需要使用即可。原创 2023-10-31 17:33:56 · 1179 阅读 · 0 评论 -
C# 如何将使用的Dll嵌入到.exe应用程序中?
有没有想自己开发的exe保留一点神秘,不想让他人知道软件使用了哪些dll;又或许是客户觉得一个软件里面的dll文件太多了,能不能简单一点,直接双击.exe就可以直接运行了,别搞那么多乱七八糟的。无论是主动还是被动,这就产生了一个需求,如何将软件调用的dll嵌入到exe中呢?原创 2023-08-30 16:30:00 · 2644 阅读 · 0 评论 -
C# 添加现有的窗体的时候,为何窗体的控件不显示了?
将Form1.cs Form1.resx Form1.Designer 三个文件直接复制到新项目的目录下,然后直接在新项目上选择添加现有项,添加完之后,你会发现它们是各自分离的(如右边展示的状态),是不是懵逼了?添加完之后,打开的窗体发现没有显示任何控件,窗体的大小还变小了?4 注意如果有多个现有项.cs需要添加,请单独的一个一个的添加,先添加完Form1.cs ,再重复以上步骤添加Form2.cs.保存后重新打开项目*.Designer.cs文件和*.resx文件就在.cs文件下了。原创 2023-08-29 17:15:00 · 1632 阅读 · 0 评论 -
使用VS2019如何创建Win32的项目?
闲来无事,想学习一下Win32的开发,使用VS2019如何创建Win32的项目?费了老大的劲儿,终于捣鼓出来,现在记录一下。在弹出来的对话框中选择**“桌面应用程序(.exe)一个空的Win32项目就创建完成了。2、配置新项目,填写好项目名称和路径,点击“两个入口作用都是一样的。如果找不到这个选项的话,就得启用“”安装相关的开发插件了。1 创建新项目,在筛选栏选择。,如下图,选择第一个“原创 2023-06-03 14:17:03 · 1987 阅读 · 0 评论 -
C# XML的节点遍历、定位、编辑和删除(三)
在项目的实际应用中,有很多数据都会保存为XML配置文件。使用率比较高的操作有加载文档, 读取文档,读取XML的某个节点或属性值,增加或插入一个节点,遍历节点信息等。原创 2023-05-15 14:30:00 · 3518 阅读 · 0 评论 -
winform窗体大小不能通过鼠标拖拽调整大小,窗体上的控件也无法调整大小和移动?
记录一下自己给自己的挖的坑: winform窗体大小不能通过鼠标拖拽调整大小了,窗体上的控件也无法调整大小和移动?将窗体(或控件)的MaxinumSize 和 MinimumSize设置为(0,0),即可随意拖拉窗体(或控件)的大小了设置成一样的大小,导致窗体无法使用鼠标拖拽改变大小。如果其中某一个属性设置了固定大小,那么使用鼠标拖拉的时候也会有一定的限制的。,导致窗体(或控件)无法使用鼠标拖拽改变大小, 此时控件的位置也无法移动了。即可随意拖拉窗体(或控件)的大小和位置了。原创 2023-05-11 17:54:51 · 4989 阅读 · 1 评论 -
创建XML的三种方式(二)
本文介绍了在winform中使用C#开发语言来创建XML文档的三种方式,并介绍了各自的优缺点。方法1是使用`XmlDocument`创建XML文档,方法2是使用`XmlTextWriter`编写XML文档,方法3是使用`LINQ to XML`的Document类生成XML文档。原创 2023-05-11 15:00:00 · 4129 阅读 · 0 评论 -
了解 XML结构(一)
XML(XmlDocument)结构特点1 有且仅有一个根节点2 以开头3 XML类似一个树形结构,结点之间关系可以是父子关系或兄弟同级关系4 每个节点有自己的文本和属性,对应的属性也有属性值。5 每个节点和属性都是我们自定义语言去描述的原创 2023-05-10 17:12:40 · 803 阅读 · 0 评论 -
C# 对PdfiumViewer工具栏进行自定义,实现放大缩小,首页, 尾页,上一页等功能。
关于PdfiumViewer的介绍 C# 使用PdfiumViewer实现对PDF文档打印预览(二),可以查看上一篇的文章。因为控件在工具栏展现的功能只有 保存、打印、放大、缩小这四个,现在想加上首页、尾页、上一页(下一页)的功能,以及显示当前页码,扩展一下功能。改造成下面这个样子。原创 2023-05-09 16:00:00 · 3220 阅读 · 0 评论 -
C# 使用PdfiumViewer实现对PDF文档打印预览(二)
想要对PDF文档进行预览和打印,实际上这个文档可以是存在的,也可以是一个PDF文件流(本地并没有PDF文件),找了一段时间发现有个特牛逼的开源组件,满足我这一切的需求,还可以自定义缩放,翻页的按钮。但是这个组件需要和pdfium.dll配合使用,放在同一个路径下,运行在X86平台下。原创 2023-05-08 14:00:00 · 7815 阅读 · 0 评论 -
C# 使用自带的组件PrintPreviewDialog 和 PrintDocument实现打印预览(一)
有这么个需求:DataTable中有一些数据是需要给显示或直接可以连接打印机进行打印的, 查阅了一下资料,发现官方就有组件PrintPreviewDialog和PrintDocument能实现这个功能。原创 2023-05-07 12:00:00 · 5415 阅读 · 0 评论 -
C# 介绍三种不同组件创建PDF文档的方式
介绍三种不同的方式创建PDF文档,有些组件功能比较强悍,支持PDF、WORD、PPT、HTML、TXT还有邮件等功能。如使用Grid或Table存放内容,比较简单容易上手。但是是收费组件,如果商用会涉及版权问题哦。功能仅专注于PDF,但生成速度快,还可以存储为数据流,可以以打印预览的形式展现。需要注意一点,该控件支持的字体。该组件是开源的,可免费使用。可按具体需求选择组件。原创 2023-05-06 16:00:00 · 2621 阅读 · 0 评论 -
c# 数据保存为PDF(三) (PdfSharp篇)
因为项目需求需要将数据导出存为PDF文档,方便客户使用。相比于TXT ,EXCEL等格式,导出PDF时可以减少字体乱码,文体格式不一样的痛点。在前面试用了Spire.PDF和Aspose.Pdf都可以导出我想要的格式的PDF,但这两个没有开源,正版都是要收费的,只好另寻他欢罢了。之后,寻寻觅觅,终于遇见PdfSharp,相处一段时间后,那便是日久生情了,陷进去了,从此就是它啦。原创 2023-05-05 17:14:10 · 11303 阅读 · 11 评论 -
c# 数据保存为PDF(二) (Aspose pdf篇)
项目中需要将数据导出存为PDF格式,试了一下Aspose组件,仅以此记录一下使用感受。与前面使用的Spire.PDF进行了简单对比,两个组件各有优缺点原创 2023-05-04 17:30:00 · 3877 阅读 · 0 评论 -
c# 数据保存为PDF(一) (spire pdf篇)
项目中需要将一些数据转存为PDF ,打开时不会乱码也不可编辑,方便用户使用和查阅。然后在网上找了一些资料,发现一个国产开发的组件那就是Spire,功能挺丰富的,可以保存为Excel、PDF、图片、PPT、二维码还带有邮件发送功能。原创 2023-04-28 18:00:00 · 3590 阅读 · 0 评论 -
使用NPOI做Excel简单报表
前面介绍了NPOI单元格样式的使用、单元格合并,以及NPOI提供的颜色。现在用上前面的一些知识点,做一个测试结果表格。1、 介绍NPOI 的颜色卡、名称以及索引2、 NPOI的CellStyle单元格样式3、 将DataTable中的数据保存到Excel (二) 使用NPOI。原创 2023-04-22 17:00:00 · 964 阅读 · 0 评论 -
NPOI的CellStyle单元格样式
主要介绍NPOI(版本2.0.6)的单元格样式CellStyle的设置,具体样式的展现。包括边框样式、实线、虚线、点虚线等;单元格背景颜色、字体、对齐以及填充图案原创 2023-04-19 17:37:16 · 3520 阅读 · 0 评论 -
LiveCharts2 初步认识
LiveCharts2 是一个简单、灵活、交互式以及功能强大的跨平台图表库。LiveCharts2 现在几乎可以运行在任何平台,支持Maui,Uno Platform、Avalonia、Etoforms、Xamarin、Blazor-wasm、WPF、Winforms、WinUI、UWP等。LiveCharts2 是LiveCharts(0)的升级,它修复了前身的主要设计问题,专注于在任何地方运行,在不丢失V0中已有的特性情况下提高了灵活性。原创 2023-04-19 18:00:00 · 6538 阅读 · 9 评论 -
将DataTable中的数据保存到Excel (二) 使用NPOI
NPOI是一个开源的.NET组件,可以读写Excel文件,支持Office97-2007格式,功能强大。下面介绍NPOI写数据到Excel,以及读取Excel数据存储到DataTable中原创 2023-04-21 17:00:00 · 1806 阅读 · 0 评论 -
C# 国际化问题之CultureInfo(小数点的不同一些欧洲国家习惯使用,而非.)
方法一适用于客户提出需要按自己习惯方式输入和显示数值,缺点:在数值转换的地方都要用上数值格式化NumberFormatInfo ,比较麻烦。方法二 比较简易方便。缺点:不能根据国家地区的习惯显示数值字符串。如果无太大的需求推荐使用方法二。原创 2023-02-01 17:00:00 · 2057 阅读 · 0 评论 -
C# 使用代码将图片的背景去除
C# 使用代码将图片的背景去除。并推荐一个去除图片背景的在线网站原创 2023-01-03 16:27:59 · 1882 阅读 · 0 评论 -
C# 分割与截取字符串、填充字符使得字符串长度对齐
对字符串的各种操作经常使用到,比如分割(`split`)截取(`subString`)字符串、将数组转成字符串(`String.Join`),其中的数组元素使用特定的分隔符; 以及填充字符串到指定长度(`PadRight` 或 ` PadLeft`),以便于字符串长度对齐。原创 2022-11-04 12:00:00 · 982 阅读 · 0 评论 -
VS2008 VS2010 VS2015 VS2019不同版本的.sln 和 .csproj的区别
VS不同版本中.sln的区别原创 2022-10-23 18:00:00 · 1766 阅读 · 0 评论 -
MSBUildToolsPath is not specified for the ToolsVersion “14.0“ defined at “HKEY_LOCAL_MACHINE\SOFTWAR
MSBUildToolsPath is not specified for the ToolsVersion "14.0" defined at "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSBuild\TOolsVersions\14.0", or the value specified evaluates to the empty string原创 2022-10-21 18:00:00 · 762 阅读 · 1 评论 -
.NET Framework 离线安装包下载地址
.NET Framework 离线安装包下载地址转载 2022-10-19 15:05:06 · 14181 阅读 · 0 评论 -
C# 使用OleDb导出Excel的注意事项
C# 将数据导出到Excel保存原创 2022-10-10 17:26:44 · 367 阅读 · 0 评论 -
C# 调用Everything查找文件
C# 使用Everything搜索文件,快速完成文件的查询原创 2022-08-13 15:54:24 · 1015 阅读 · 0 评论 -
C# TextBox输入自动填充
C# TextBox自动填充数据原创 2022-08-13 11:16:40 · 952 阅读 · 0 评论