提供网站建设案例,八大恶心的网站制作,深圳市宝安区石岩街道,wordpress轻社区最近在业余时间玩玩树莓派#xff0c;刚开始的时候在树莓派里写一些基于wiringPi库的C语言程序来控制树莓派的GPIO引脚#xff0c;从而控制LED发光二极管的闪烁#xff0c;后来觉得#xff0c;是不是可以使用HTML5jQuery等流行的前端技术做一个简单的Web站点#xff0c;让… 最近在业余时间玩玩树莓派刚开始的时候在树莓派里写一些基于wiringPi库的C语言程序来控制树莓派的GPIO引脚从而控制LED发光二极管的闪烁后来觉得是不是可以使用HTML5jQuery等流行的前端技术做一个简单的Web站点让树莓派搭载这个站点通过手机或者平板电脑来控制树莓派。经过一番调研考虑如下 使用Apache或者Nginx搭建一个Web服务器优点服务器实现相对成熟缺点偏重而且与树莓派的交互需要涉及Service调用而实现RESTful服务对于Apache或者Nginx需要额外的组件支持要付出一定的学习成本 使用PythonFlesk优点技术相对成熟也有很多成功应用案例缺点对于我来说需要额外学习Python语言 基于这样的前提鉴于目前Mono在Linux下的出色表现想想还是自己使用.NET开发一个轻量型的Web服务器吧第一期版本让它既支持静态文件的访问服务也支持RESTful API的调用在RESTful API中可以暴露访问树莓派GPIO引脚的接口供HTML5jQuery的单页面应用调用于是也就实现了在任意设备上通过浏览器来控制树莓派的目的。 Raspkate项目 Raspkate项目的名字我想就是两个方面Rasp它来源于树莓派的英文名字Raspberry Pi有表示“小、轻量”的意义而Kate则取名于英语中的“风筝”寓意能够充分发挥开发者的想象对其进行扩展和定制。Raspkate就是这样一款基于.NET Framework、由C#开发的轻量型Web服务器它的核心部分是一个HttpListener对象通过多线程模型将HTTP请求异步委托给HttpListener执行。当一个HTTP请求被接受的时候Raspkate会根据请求的格式或类型分配特定的模块Module对请求进行处理然后将处理结果返回。如果请求的是一个文件那么Raspkate会返回文件的内容如果是一个RESTful请求则Raspkate会使用已经注册的RESTful API控制器来处理这个请求并将计算结果以JSON格式返回。 开源地址 Raspkate项目是开源的代码库地址是https://github.com/daxnet/raspkate所使用的许可协议是GPL2.0,因为其所使用的与树莓派相关的组件是第三方的由GPL2.0授权的开源库因此不能在商业环境中使用此项目。 应用场景 您可以在以下场景中使用Raspkate 在自己的应用程序中实现内建的Web服务器Self-Hosting将Raspkate寄宿在Windows Service中向外提供RESTful服务将Raspkate寄宿在Windows Service中向外提供静态Web页面请求服务将Raspkate作为树莓派中的一个独立的小型Web服务器提供控制树莓派GPIO的Web用户界面 整体架构 下图展示了Raspkate项目的整体架构设计 可以看到在Raspkate核心部分就是一个HTTP Listener组件并且由Module和Configuration支撑Raspkate完成HTTP请求处理。每个模块可以包含多个HTTP Handler这在定义模块的时候可以对多个HTTP Handler进行注册。 Raspkate配置信息也就是上图中的Configuration非常简单下图就是这个配置信息的类型视图在RaspkateConfiguration对象上设定了HttpListener所使用的Prefix而Modules部分则指定了Raspkate扫描可用模块的路径IsRelative指定模块路径是否是相对的。 以下是一个标准的Raspkate配置文件 1 2 3 4 5 6 7 8 9 10 11 12 ? xml version1.0 encodingutf-8 ? configuration configSections section nameraspkateConfiguration typeRaspkate.Config.RaspkateConfiguration, Raspkate/ / configSections raspkateConfiguration xmlnsurn:Raspkate.Config prefixhttp://127.0.0.1:9023/ modules add pathmodules/ / modules / raspkateConfiguration / configuration 代码使用 首先使用Git客户端将代码库克隆到本地 1 git clone a hrefhttps://github.com/daxnet/raspkatehttps://github.com/daxnet/raspkate/a 然后在装有MSBuild的Windows机器上执行build.bat命令 build.bat All - 这将编译所有模块并将模块的二进制文件复制到modules目录下build.bat Minimal - 这仅编译核心模块不包含类似树莓派支持等扩展模块 如果是在装有Mono的Linux机器上则相应地执行build.sh即可。 在编译完成之后进入bin目录执行RaspkateService.exe即可注意如果是在树莓派中执行并且希望加载树莓派支持模块则需要通过 sudo ./RaspkateService.exe 命令执行以获得root权限。在成功启动后你应该看到类似下面的画面 这时打开浏览器在浏览器中输入http://127.0.0.1:9023您应该可以看到类似以下的画面 这表示您已经成功运行Raspkate服务此页面显示了运行服务器相关的信息。注意如果你希望你的Raspkate服务能够在同网络的其它机器访问请在执行RaspkateService.exe之前将RaspkateService.exe.config文件中的Prefix设置修改为http://:9023/。但这样做可能会牵涉到用户访问控制的问题如果将Prefix改为该值后出现Raspkate无法启动的问题请先在Command Line执行 1 netsh http add urlacl urlhttp://:9023/ usereveryone 演示 这里有几张屏幕截图展示了Raspkate提供的相关功能。 获取并显示树莓派信息 以下屏幕截取自我的手机浏览器分别显示了我的树莓派系统信息、树莓派主板信息以及树莓派中所有引脚的名称、类型和电平值列表。 使用HTML5jQuery控制发光二极管的点亮和熄灭状态 前端是一个寄宿在Raspkate上的一个HTML5jQuery的单页面应用后端是运行Raspkate的树莓派。 陈晴阳Sunny Chen2003年毕业于中南大学铁道校区。高级程序员系统分析员微软MVPVisual C#。cnblogs网名daxnet并打算以该名闯荡IT江湖。MicrosoftDynamics AX、Microsoft .NET/C#以及领域驱动设计DDD的狂热爱好者。 原文地址http://www.cnblogs.com/daxnet/p/5306587.html .NET社区新闻深度好文微信中搜索dotNET跨平台或扫描二维码关注 赞赏 人赞赏