Masder Posted April 25, 2012 Share Posted April 25, 2012 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 Quote Link to comment Share on other sites More sharing options...
Nifty Posted April 25, 2012 Share Posted April 25, 2012 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"); Quote Link to comment Share on other sites More sharing options...
Masder Posted April 25, 2012 Author Share Posted April 25, 2012 herzlichen dank Heute ist mal wider einer der tage wo mann mit beiden Füssen auf auf dem schlauch steht Gruß masder Quote Link to comment Share on other sites More sharing options...
Masder Posted April 25, 2012 Author Share Posted April 25, 2012 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 Quote Link to comment Share on other sites More sharing options...
Nifty Posted April 25, 2012 Share Posted April 25, 2012 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. Quote Link to comment Share on other sites More sharing options...
Masder Posted April 25, 2012 Author Share Posted April 25, 2012 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 Quote Link to comment 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.