Masder Geschrieben April 25, 2012 at 19:18 Geschrieben April 25, 2012 at 19:18 Hallo ich würde gerne jeden Eingang meines IO4 Briklets unabhängig von einander auslesen ob er high oder low ist. Hier bei suche ich eine Möglichkeit nicht alle 16 zahlen einzeln ab zu prüfen. meine Idee war es den erhalten wert(int) den ich bei der abfrage erhalte. in eine binäre zahl um zuwandeln, und dann in ein char array zu schreiben um so an jede stelle einzel zu kommen. doch da gibt es ein broblemm den wen die ersten stelen nicht mehr 1 sonder 0 in binär schreib weise sind werde sie einfach abgeschnittten hier der code den ich geschrieben habe in Java char[] btest = Integer.toBinaryString(io4.getValue()).toCharArray (); if(btest[0]==0){ System.out.println("test"); } if(btest[1]==0){ System.out.println("test2"); } if(btest[2]==0){ System.out.println("test3"); } if(btest[3]==0){ System.out.println("test4"); } hat jemand eine gute Idee wie ich das am besten anstellen kann Gruß masder Zitieren
Nifty Geschrieben April 25, 2012 at 19:42 Geschrieben April 25, 2012 at 19:42 int i=io4.getValue(); if( i & 1) System.out.println("test1"); if( i & 2) System.out.println("test2"); if( i & 4) System.out.println("test3"); if( i & 8 ) System.out.println("test4"); Zum nachlesen http://www.leepoint.net/notes-java/data/expressions/bitops.html Häufig wird auch mit bit shift operatoren gearbeitet dann sieht das so aus (technisch das selbe aber einfacher zu lesen): int i=io4.getValue(); if( i & 1<<0) System.out.println("test1"); if( i & 1<<1) System.out.println("test2"); if( i & 1<<2) System.out.println("test3"); if( i & 1<<3 ) System.out.println("test4"); Zitieren
Masder Geschrieben April 25, 2012 at 19:47 Autor Geschrieben April 25, 2012 at 19:47 herzlichen dank Heute ist mal wider einer der tage wo mann mit beiden Füssen auf auf dem schlauch steht Gruß masder Zitieren
Masder Geschrieben April 25, 2012 at 20:28 Autor Geschrieben April 25, 2012 at 20:28 so habe es noch anpassen müssen aber jetzt passt es so wie ich es haben will jetzt wirt immer wen man zb den schalter umlegt eine aksion ausgefürt int i=io2.getValue(); if(!((i&1)==1)){ System.out.println("test1"); } if( !((i&2)==2)){ System.out.println("test2"); } if( !((i&4)==4)){ System.out.println("test3"); } if( !((i&==8 )){ System.out.println("test4"); } Gruß masder Zitieren
Nifty Geschrieben April 25, 2012 at 20:32 Geschrieben April 25, 2012 at 20:32 das: if(!((i&1)==1)){ System.out.println("test1"); solltest Du in if(!((i&1)!=0)){ System.out.println("test1"); oder ( besser ) if(((i&1)==0)){ System.out.println("test1"); ändern. Zitieren
Masder Geschrieben April 25, 2012 at 21:27 Autor Geschrieben April 25, 2012 at 21:27 ja du hast recht man kann dann sogar noch eine klammer weg lassen int i=io2.getValue(); if((i&1)==0){ //true wen der schalt kreis geschlossen } if((i&1)==1){ //true wen der schalt kreis unterbrochen } Gruß masder Zitieren
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.