【问题标题】:Is there a way to define the pin with an input?有没有办法用输入定义引脚?
【发布时间】:2019-05-29 21:26:23
【问题描述】:

我正在尝试编写一种dmx controller,因此我得到了RaspberryPi,现在我想编写一个程序来控制带有pi4j 的GPIO。这个想法是询问应该作为输出的 GPIO,将其保存在一个 int 中并重复使用它来告诉pi4j 我想成为哪个 GPIO。

抱歉代码不好:)

我的母语是德语,所以println 是德语。

System.out.println("GPIO des DMX Outputs :");

BufferedReader br_dmx_out = new BufferedReader(new InputStreamReader(System.in));

int dmx_out = Integer.parseInt(br_dmx_out.readLine());

System.out.println("Der DMX Output GPIO ist also GPIO " + dmx_out);         

// GPIO Controll

String predef = ""+dmx_out;
/*
String def = MessageFormat.format("RaspiPin.GPIO_0{0}",predef);
System.out.println(def);
*/
Pin pin_dmx = "RaspiPin.GPIO_0"+ predef;

GpioController gpio = GpioFactory.getInstance();

GpioPinDigitalOutput dmx_output = gpio.provisionDigitalOutputPin(pin_dmx);

通常你编码:

GpioPinDigitalOutput dmx_output = gpio.provisionDigitalOutputPin(RaspiPin.GPIO_01);

Java 说:

Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
    Type mismatch: cannot convert from String to Pin

    at test.main(test.java:44)

我也尝试了switch/case,但这也不会

GpioController gpio = GpioFactory.getInstance();

switch(dmx_out)
{
case 2:
    GpioPinDigitalOutput dmx_output = gpio.provisionDigitalOutputPin(RaspiPin.GPIO_02);
    break;

Java 的错误:

Exception in thread "main" java.lang.Error: Unresolved compilation problems: 
    Duplicate local variable dmx_output
    Duplicate local variable dmx_output
    Duplicate local variable dmx_output
    Duplicate local variable dmx_output
    Duplicate local variable dmx_output
    Duplicate local variable dmx_output
    Duplicate local variable dmx_output
    Duplicate local variable dmx_output
    Duplicate local variable dmx_output
    Duplicate local variable dmx_output
    Duplicate local variable dmx_output
    Duplicate local variable dmx_output
    Duplicate local variable dmx_output
    Duplicate local variable dmx_output
    Duplicate local variable dmx_output
    Duplicate local variable dmx_output
    Duplicate local variable dmx_output
    Duplicate local variable dmx_output
    Duplicate local variable dmx_output
    Duplicate local variable dmx_output
    Duplicate local variable dmx_output
    Duplicate local variable dmx_output
    Duplicate local variable dmx_output
    Duplicate local variable dmx_output
    Duplicate local variable dmx_output
    Duplicate local variable dmx_output
    dmx_output cannot be resolved
    dmx_output cannot be resolved

    at test.main(test.java:59)

【问题讨论】:

  • 确切的错误信息是什么?
  • 线程“main”java.lang.Error 中的异常:未解决的编译问题:类型不匹配:无法在 test.main(test.java:44) 处从 String 转换为 Pin

标签: java raspberry-pi3 dmx512 pi4j


【解决方案1】:

您正在尝试将字符串分配给 Pin 接口。

https://pi4j.com/1.2/apidocs/com/pi4j/io/gpio/Pin.html

要获得它的实现,您可能需要调用PinImpl 的构造函数,如下例所示:

https://github.com/Pi4J/pi4j/blob/master/pi4j-gpio-extension/src/main/java/com/pi4j/gpio/extension/mcp/MCP3204Pin.java

【讨论】:

    猜你喜欢
    • 2023-02-15
    • 2011-04-26
    • 1970-01-01
    • 2014-08-01
    • 2022-07-03
    • 1970-01-01
    • 1970-01-01
    • 2019-11-28
    • 1970-01-01
    相关资源
    最近更新 更多