有没有一种方法可以用输入定义引脚?

时间:2019-05-29 21:26:24

标签: java raspberry-pi3 dmx512 pi4j

我正在尝试编写一种static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) ,因此我得到了dmx controller,现在我想编写一个程序来使用RaspberryPi控制GPIO。想法是要求提供应该作为输出的GPIO,将其保存为int并重用它来告诉pi4j我希望将哪个GPIO作为输出。

很抱歉输入错误代码:)

我是德语母语人士,所以pi4j是德语。

println

通常您会编码:

  

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

Java说:

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);

我也尝试过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

Java的错误:

GpioController gpio = GpioFactory.getInstance();

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

1 个答案:

答案 0 :(得分:0)

您正在尝试为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