Masder Posted April 25, 2012 at 07:18 PM Share Posted April 25, 2012 at 07:18 PM 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 at 07:42 PM Share Posted April 25, 2012 at 07:42 PM 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 at 07:47 PM Author Share Posted April 25, 2012 at 07:47 PM 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 at 08:28 PM Author Share Posted April 25, 2012 at 08:28 PM 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 at 08:32 PM Share Posted April 25, 2012 at 08:32 PM 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 at 09:27 PM Author Share Posted April 25, 2012 at 09:27 PM 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.