Есть ли способ определить контакт с входом? - PullRequest
1 голос
/ 30 мая 2019

Я пытаюсь запрограммировать что-то вроде dmx controller, поэтому я получил RaspberryPi, и теперь я хочу написать программу для управления GPIO с pi4j.Идея состоит в том, чтобы запросить 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)

1 Ответ

0 голосов
/ 17 июля 2019

Вы пытаетесь назначить String для интерфейса 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

...