Hello Everyone,
I am a beginner with the URCap Swing Programming and require a help with this. I have to create Jbuttons and Radio Buttons on the Program node display and integrate it to Tool digital IO’s using swing programming method.
I have created the JButtons and Radio buttons included the actionListeners too. Now i am unable to link the DigitalIO using actionListener. I am not able to get the right way to declare the digitalIO or use it inside the ActionListener just to turn ON or OFF. I did refer to [com.ur.urcap.sample.manipulateIO.tar.gz] and used similar comand lines still not able to get it right. Can anybody help me with it or Refer me to a sample program which would help me?
Thanks for the time
program node view:
button.addActionListener(new ActionListener(){
@Ovveride
public void actionPerformed(ActionEvent e){
provider.get().yourMethod();}});
Program Node Contrribution:
public void yourMethod(){
DigitalIO output=getDigitalIO(tool_out[0]):
if(output.getValue()==false){
output.setValue(true);
}else{
output.setValue(false);
}
this is a little example of how it works generally
}
Firstly thanks a lot for the quick reply. I tried your solution and got these errors
tool_out[0] - cannot be resolved to a variable, so i changed to the way i declared the DigitalIO
private DigitalIO tool_in1;
then there is error with getDigitalIO - “The method getDigitalIO(DigitalIO) is undefined for the type JButtonProgramNodeContribution”. So should i create a method DigitalIO? Very sorry if it was a basic question.
Thank you
To get your IO in your contribution:
private final String TOOL_IO_KEY = "tool_in[0]";
DigitalIO toolIO0;
Collection<IO> ios = apiProvider.getProgramAPI().getIOModel().getIOs(IOFilterFactory.toolFilter());
Iterator<IO> it = ios.iterator();
while (it.hasNext()) {
IO nextIO = it.next();
if (nextIO.getName().contains(TOOL_IO_KEY)) {
toolIO0 = nextIO;
break;
}
}
having toolIO0 you can fire a setter and getter to actually fire the IO with your button e.g.
public void setToolIO(boolean signal){
toolIO0.setValue(signal);
}
In your view:
ioBtn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent actionEvent) {
provider.get().setToolIO(true);
}
});
DigitalIO getDigitalIO(String defaultName){
Collection<DigitalIO> IOcollection = apiProvider.getInstallationAPI().getIOModel().getIOs(DigitalIO.class);
int IO_count = IOcollection.size();
if(IO_count > 0){
Iterator<DigitalIO> IO_itr = IOcollection.iterator();
while(IO_itr.hasNext()){
DigitalIO thisIO = IO_itr.next();
String thisDefaultName = thisIO.getDefaultName();
if(thisDefaultName.equals(defaultName)){
return thisIO;
}
}
}
return null;
}
You can use this one
Thanks a lot for taking the time to help me
Thanks a lot, the code worked. Had a little things to change. Thanks again for the effort