Web Analytics
yangyang

码农兼一个普普通通小青年

DotNet Framework


.NET Core IoT 人体红外传感器

在前面的文章中,演示了如何通过GPIO的高低电平控制LED灯的亮起和熄灭,这篇文章介绍如何联动人体红外传感器来控制LED小灯的亮起和熄灭。 HC-SR501人体红外感应传感器 HC-SR501长下图这样,圆形的球是菲涅尔透镜.: 有三个插脚,VCC接树莓派5V电源接口, GND接树莓派GND接口,OUT是输出接口,接树莓派的GPIO口,感应到人体后,输出高电平,否则输出低电平。有两种信号输出模式 L不可重复,表示感应输出高电平后,延时时间一结束,输出将自动从高电平变为低电平。 H可重复,表示感应输出高电平后,在延时时间段内,如果有人体在其感应范围内活动,输出将一直保持高电平,知道人离开后才延时将高电平变为低电平。 调节方式就是上图左下角的黄色跳线,拔下就可以选择H或者L,默认为H。 这里由于传感器会向树莓派插口输出电压,尤其 …

IoT Raspberry Pi HC-SR501 PIR

.NET Core IoT Blink小程序

前面一篇文章说明了如何在Ubuntu上运行.NET Core程序,现在开始搭建第一个物联网小程序Blink。 配置GOPI接口权限 在开始访问GOPI时,需要设置树莓派的相关权限。一般都会告诉你使用使用sudo raspi-config命令,但是因为树莓派目前还没有正式版本的64位系统,我装的ubuntu,里面没有raspi-config,如果执行的话,会报Command Not found命令 ,所以需要安装相关模块,可以查看树莓派安装非官方系统没有raspi-config命令的解决方法。这篇文章。 安装完成之后,执行如下命令: ubuntu@ubuntu:~$ sudo raspi-config 就可以弹出主界面。 ▲树莓派设置主界面 ▲开启远程GPIO接口 开启之后,我们就可以开始针对GOPI编程了。 .NET Core代 …

IoT Raspberry Pi .NET Core Blink

树莓派3b+中安装64位ubuntu系统并设置.NET Core开发环境

很久之前买了一个树莓派3B+,放在那里吃灰😂,今天准备拿起来重新搞一下,一个是配置一下.NET Core开发环境,另外一个是玩一下.NET Core IoT。 ▲ 树莓派3B+ 在树莓派上安装64位Ubuntu 20.04 因为树莓派从3B+版本开始,支持64位系统,但是在树莓派官方网站上只提供了64位的beta版本系统。如果你买的是树莓派4 2G以上版本,那么最好安装64位系统,这样能充分利用内存。所以目前要安装64位系统,只有Ubuntu和Gentoo。 首先去Ubuntu官网下载针对Raspberry的64为系统。 下载下来的img文件,使用balenaEtcher工具烧录到树莓派的SD卡中。 使用Flash from file 选择img文件,中间选择树莓派的SD卡(需要读卡器),然后点击Flash!,烧录的过程中不要动读卡器 …

IoT Raspberry Pi .NET Core Ubuntu

Web API 3.0中日期类型的格式化设置

由于Web API快速迭代了好几个版本,在最新版本的格式化中,对于时间的格式化设置,记录一下。 Web API 3.0中的Json序列化,使用的是System.Text.Json这个序列化类。在不对其进行设置的情况下,对于日期格式,输出的内容形式是: 2020-06-30T06:16:38.62 默认使用System.Text.Json时的解决办法 在日期和时间中间有字母"T",这是一种IsoDateTime格式,有些时候,我们需要自定义格式,比如把中间的T去掉,以方便客户端使用。那么怎么办呢?那么就需要自定义数据类型转换。 public void ConfigureServices(IServiceCollection services) { services.AddControllers().AddJsonOptions(o =& …

WebApi

优化MATLAB读取数据的速度

有个C#程序每天实时落地了一些股票行情数据,为节省存储空间,数据是以二进制文件的方式存储的。现在要将这些数据提供给研究人员的MATLAB使用,需要编写一个C#的dll供MATLAB调用。 先说一下实时行情的格式。目前只需要用到存储数据里的,股票代码,涨停价,跌停价,最新价,时间,成交量,成交额,买一至买十的价格和数量,卖一到卖十的价格和数量这些信息,行情从9:25~15:00大概每3秒一条记录。 ↑ 典型的行情界面,上图里盘口只有5档,因为10档要钱😂 在C#里面,可以定义一个MarketData对象,表示某一时刻的行情,行情里面包含股票代码,买卖十档的价格和数量等等,MarketData 如下图,只列出了部分字段: public class MarketData { public string Symbol;//代码 …

Performance Optimizing Matrix MATLAB

如何正确对外暴露集合对象

我们在定义一个实体的时候,一般是不希望对外暴露其内部过多的成员信息的。尤其是一些集合信息,因为这些集合信息如果对外暴露不慎,就会破坏封装性,从而使得外部对象能够对其进行一些破坏性的修改。所以对外我们一般返回只读集合,这个问题在之前的文章不要对外公开泛型List成员中提到过。 问题的产生 下面以我们购物中的购物车为例来说明: public class Cart { private List<ProducItem> ProductItemsCollection; public Cart() { ProductItemsCollection = new List<ProducItem>(); } /// < …

IReadOnlyCollection

通过代理类解决异步回调信息缺失问题

问题的产生 在之前写的爬虫里,有把文章从博客园迁移过来的功能,除了文字之外,还有图片链接。需要把一篇文章里的图片找出来,然后下载,然后重新命名,再把新的名称更新到文章里。这里就涉及到一个问题,图片下载。 图片下载我这里用的是WebClient类: WebClient client = new WebClient(); client.DownloadFile(imageUri, localFilePath); 上面这个是同步方法,有两个参数,一个是图片url,一个是要存储的本地文件路径,包含文件名。很显然,不能用这个同步方法,因为它是阻塞的,下载一篇文章不可能一张图片一张图片的去下载。所以需要找到一个异步方法,同时要能提供图片是否下载成功相关信息。 C#里面提供了一些BeginXX和EndXX的异步方法,在其中的BeginXX方法中, …

Proxy Async Callback

使用EntityFrameworkCore对包含DbContext的类库生成迁移脚本

最近在学习EntityFramework Core的相关东西,其实数据库访问的方式有很多种比如有上古神器ADO.NET ,还有从java泊来的NHibernate等,当然还包括之前的Entity Framework,还有比较轻量级的Dapper等。关于数据访问,当然可以用手写SQL,然后用ADO.NET那一套来处理,但是都2020年了,这么搞显然不够高级,而且不够效率,最重要的是容易996。但是据我所知,并不是所有的公司都会去用ORM,就拿我曾经待过的还算比较大的一家公司来说,一般开发人员是接触不到DB的,对数据库的一些操作操作,有专门的DBA来管理,比如DBA会对某张表默认生成CRUD的存储过程,去调用就可以了,对于查询,一般的也是开发人员用ADO.NET 自己写SQL语句,最多就是把ADO.NET封装一下,提供给一般的开发人员使用。甚至一般的LINQ在有些公司都是禁止使用的 …

Entity Framework Core Migrations

关于新的个人博客

大概2011年的时候我在博客园上开通了一个主页,那个时候刚毕业,晚上下班回家无所事事,又不喜欢打游戏,就开始研究一些技术方面的东西,然后开始在上面写文章,之所以想着写文章,原来只是记录一下个人的一些经验或者遇到的问题的解决方法,方便以后自己查看,正所谓“好记性不如烂笔头”,很多东西如果不及时记录下来,时间长了也就会忘记。还有一部分文章是个人的一些读书笔记,比如看完之后,想着看能不能自己复述出来,这样也能检验自己是否真正的理解,我觉得书写对锻炼自己的表达能力和文字功底,是有一些帮助的。 从2011年到2016年期间,断断续续的写了大概100多篇,有一些是个人工作中遇到问题的总结,比如Excel插件开发系列,有一些是工作之余的一些爱好,比如Kinect开发,还有一些是读书笔记,比如算法和数据结构那些文章。当然,这些都是在工作不需要经常加班的条件下, …

.NET

通过资源监视器排查网络高占用异常

最近公司某台服务器的网络占用经常达到99%,好像最高就是这么多。使得很多服务受到影响,下面就分享一下如何通过windows自带的一些工具排查网络高占用异常。   首先最简单的是资源管理器,这个通过工具栏右键资源管理器,或者Ctrl+Alt+Del就可以调出来,然后点到联网这一个标签页。在最下面列出了机器的所有网卡,包括虚拟网卡,的线路速度和网络使用率。如下图,可以看到,这台服务器上有3个网络适配器,实际上这台服务器上插了两个网卡。     可以看到“本地连接”和“本地连接2”都有流量占用,这里比较关心的是“本地连接”这个网卡上的应用占用流量情况。于是需要找出这两张网卡对应的本地IP地址。     打开命令行控制台,输入IPConfig即可列出本机所有网卡及IP地址信息,如下:     可以看到,“本地连接”这个网卡对应的IP地址是“192.168.1.8”这个地址。     接下来,我 …

网络监控 资源监视器