gpio库_斗牛犬:出奇的快速GPIO库

gpio库

Raspberry Pi等计算机最有趣的功能之一就是能够通过GPIO(通用输入/输出)引脚与物理世界进行交互。

GPIO引脚可以捕获来自多个源的输入(包括来自温度,湿度或单轴传感器的数据)并写入输出,从打开LED到控制直流电动机,LCD显示器或D / A转换器,这些都可以。

什么是斗牛犬?

简而言之,Bulldog是一个Java库,使开发人员可以访问GPIO和其他低级IO接口(例如I 2 C,SPI或PWM)。 使用它,您可以控制LED,执行器,伺服器或收集传感器数据。

由于它是Java库,因此需要JVM在目标设备上运行。 尽管如此,它也有一个用C编写的本机核心(通过JNI桥接到Java)。 它的主要目的是加载内存内容(/ dev / mem)。 使用本机方法,我们可以更快地控制GPIO。

Bulldog的目标是与平台无关,这意味着代码可以在多个平台上运行。 目前,它支持各种流行的单板计算机,包括Raspberry Pi,BeagleBoneBlack和CubieBoard。

积分

还有一个用于Apache Camel的组件,该组件包含Bulldog库功能。 对于那些还没有听说过Apache Camel的人来说,这是一个开放源Java框架,致力于使集成更容易并且对开发人员更易于访问。 通过企业集成模式(EIP)的具体实现,开发人员能够将SBC与各种传输和API集成在一起。 它支持组件像MQTT,HTTP,AMQP,ElasticSearch,谷歌的服务,JDBC,Eclipse的库拉,(S)FTP,等等。

目前,骆驼,牛头犬组件仅支持GPIO和I 2。然而,对于斗牛犬其余支持功能即将到来。

使用斗牛犬

有两种开始使用Bulldog的方法。 首先是将板子实现放入您的Maven依赖项中:



   
   
<dependency >
  <groupId > io.silverspoon </groupId >
  <artifactId > bulldog-board-${board-name} </artifactId >
  <version > ${version.bulldog} </version >
</dependency >

为了使事情变得容易,您可以在类路径上添加所有电路板实现。 他们不会发生冲突。 Bulldog将根据运行您的代码的平台自动选择正确的代码。 配置依赖项后,您可以编写简单的Java代码来控制GPIO引脚。 以下代码段绑定在第一个GPIO引脚上(取决于实际平台是哪个物理引脚):


   
   
import io.silverspoon.bulldog.core.gpio.DigitalOutput ;
import io.silverspoon.bulldog.core.platform.Board ;
import io.silverspoon.bulldog.core.platform.Platform ;
import io.silverspoon.bulldog.core.util.BulldogUtil ;

public class BulldogLED {

  public static void main ( String [ ] args ) {
    // Detect the board we are running on
    Board board = Platform. createBoard ( ) ;

    // Set up a digital output
    DigitalOutput output = board. getPins ( ) . get ( 0 ) . as ( DigitalOutput. class ) ;

    // Blink the LED
    output. high ( ) ;
    BulldogUtil. sleepMs ( 1000 ) ;
    output. low ( ) ;
    }
}

另一种选择是使用斗牛犬骆驼成分。 同样,您需要向Apache Camel项目添加新的Maven依赖项。 它将自动提供所有可能的牛头犬依赖项:


   
   
<dependencies >
  <dependency >
    <groupId > io.silverspoon </groupId >
    <artifactId > camel-bulldog </artifactId >
    <version > ${version.bulldog} </version >
  </dependency >
</dependencies >

之后,您可以创建如下的骆驼路线:


   
   
<?xml version = "1.0" encoding = "UTF-8" ?>
<beans xmlns = "http://www.springframework.org/schema/beans" xmlns:camel = "http://camel.apache.org/schema/spring"
 xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation = "http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd" >

  <bean id = "properties" class = "org.apache.camel.component.properties.PropertiesComponent" >
    <property name = "location" value = "classpath:gpio.properties" />
  </bean >

  <camelContext trace = "false" xmlns = "http://camel.apache.org/schema/spring" >
    <restConfiguration bindingMode = "auto" component = "jetty" port = "8080" />

    <rest path = "/rest" >
      <post uri = "/led" >
        <to uri = "bulldog://gpio?pin={{pin}}" />
      </post >
    </rest >
  </camelContext >
</beans >

上面的骆驼路线公开了一个RESTful接口来控制GPIO引脚。 很快,不是吗?

性能

是什么让我们认为它是如此之快? 我们在库与最流行的GPIO库之一Pi4J之间进行了简短的性能比较。 我们使用USB 示波器来测量Java程序可以在Raspberry Pi 2 B +的GPIO引脚上设置值的频率。

Bulldog可以以1.080 MHz(每秒一百万次)的频率写入GPIO值,而Pi4J约为1kHz(每秒1,000次)。 我们不考虑将其作为正式的性能测试,但差异显而易见。 斗牛犬要快上千倍!

我们用于测试的源代码可以在GitHub上找到

翻译自: https://opensource.com/life/16/4/bulldog-gpio-library

gpio库

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值