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