Masder Geschrieben April 25, 2012 at 19:18 Share 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 Link zu diesem Kommentar Share on other sites More sharing options...
Nifty Geschrieben April 25, 2012 at 19:42 Share 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 Link zu diesem Kommentar Share on other sites More sharing options...
Masder Geschrieben April 25, 2012 at 19:47 Autor Share 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 Link zu diesem Kommentar Share on other sites More sharing options...
Masder Geschrieben April 25, 2012 at 20:28 Autor Share 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 Link zu diesem Kommentar Share on other sites More sharing options...
Nifty Geschrieben April 25, 2012 at 20:32 Share 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 Link zu diesem Kommentar Share on other sites More sharing options...
Masder Geschrieben April 25, 2012 at 21:27 Autor Share 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 Link zu diesem Kommentar Share on other sites More sharing options...
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.