Facebook
From mateczek, 4 Years ago, written in SCL.
Embed
Download Paste or View Raw
Hits: 120
  1. FUNCTION_BLOCK FB44
  2. VAR_INPUT
  3.     ipstring:STRING[16]; //adress ip string
  4.     ipStnigDecode AT ipstring: STRUCT //zdekodowany
  5.         sizemax:BYTE;
  6.         sizeact:BYTE;   //rozmiar stringa
  7.         str:ARRAY[1..15]OF CHAR; //tablica znaków
  8.     END_STRUCT;
  9. END_VAR
  10. VAR_OUTPUT
  11.      ip_tab:ARRAY[0..3]OF INT; //tablica - zdekodowany ip
  12. END_VAR
  13. VAR
  14.     IP_String_Index:INT;// index po literach
  15.     IP_Octet_Index:INT;//  index po kolejnych człony IP
  16.     IP_octet_calculate:INT; //obliczany bait adresu ip
  17. END_VAR
  18. BEGIN
  19.     IP_Octet_Index:=0; IP_octet_calculate:=0;
  20.     FOR IP_String_Index:=1 TO BYTE_TO_INT(ipStnigDecode.sizeact) BY 1 DO //przeglądamy string po znakach pętla for
  21.         IF ipStnigDecode.str[ IP_String_Index]='.'  THEN
  22.             ip_Tab[ IP_Octet_Index]:=IP_octet_calculate;
  23.             IP_octet_calculate:=0;
  24.              IP_Octet_Index:= IP_Octet_Index+1;  
  25.         ELSE
  26.             IP_octet_calculate:=IP_octet_calculate*10+CHAR_TO_INT(ipStnigDecode.str[IP_String_Index])-48; // 48 to kod znaku 0 w asci
  27.         END_IF;
  28.     END_FOR;
  29.     ip_Tab[ IP_Octet_Index]:=IP_octet_calculate; //ostatni bajt
  30. END_FUNCTION_BLOCK