Jump to content

IO4 abfrage (gelöst)


Masder

Recommended Posts

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

 

 

 

Link to comment
Share on other sites

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");

 

Link to comment
Share on other sites

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

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...