Vai al contenuto
PLC Forum


Costruzione stringa in Step7


walterword

Messaggi consigliati

Ciao a tutti.

Su un vecchio impianto con Step7 devo inserire un lettore barcode.

Uso la P_Recv per ricevere da seriale ed appoggio su un array di bytes, La funzione mi dice anche quanti bytes sono arrivati.

La lunghezza può variare da cliente a cliente.

Dopo aver ricevuto l'array di byte li controllo in modo tale che il primo sia = 02 e l'ultimo 0D.

Lo sto facendo il SCL il controllo. Se tutto è a posto devo creare una stringa che deve essere visualizzata nel HMI togliendo il primo carattere e l'ultimo in quanto non rappresentano dati utili all'operatore. Però per copiare in SCL un array di caratteri o bytes su una stringa non mi riesce ...sarò arruginito....

Non ho proprio voglia di fare in awl puntatori etc.....

Come potrei fare sempre in SCL ?

Link al commento
Condividi su altri siti


forse mi conviene usare un array di caratteri per costruire il buffer finale e poi usale awl con sfc per copiarli nella stringa ...non trovo alternative per fare tutto in SCL....

Link al commento
Condividi su altri siti

Ciao, così credo possa funzionare. Adesso non ho modo di verificarlo.

 

FOR i := 1 to TuoIndice-1 DO
    TuaStringa := I_STRNG(BYTE_TO_INT(TuoArray[i]));
END_FOR;

 

Claudio.

Link al commento
Condividi su altri siti

compilare lo compila e  l'ho caricato solo che non riempie i caratteri della stringa 

Manca qualcosa per incrementare il carattere da scrivere nella stringa....

Attualmente faccio cosi 

 IF (DB_Barcode.buffer_in[1]=B#16#02) AND (DB_Barcode.buffer_in[DB_Barcode.lenght]=B#16#0D) THEN 
                                    
                                   DB_Barcode.Messaggio_OK:=True;
                                   
                                   FOR i:=1 TO DB_Barcode.lenght-2 DO
                                    
                                      DB_Barcode.Barcode := Int_to_STRING(BYTE_TO_INT(DB_Barcode.buffer_in[i+1]));
                                      //DB_Barcode.C_Barcode[i]:=BYTE_TO_CHAR(DB_Barcode.buffer_in[i+1]);
                                    
                                   END_FOR;
                                                                      
                                    
                                END_IF;    

Ho commentato quello che ho fatto prima, utilizzando un array di char di appoggio e poi in awl riempio la stringa dal array di appoggio con SFC20 e funziona

Certo se potessi fare tutto in SCL sarebbe meglio.....

Modificato: da walterword
Link al commento
Condividi su altri siti

Crea un account o accedi per commentare

Devi essere un utente per poter lasciare un commento

Crea un account

Registrati per un nuovo account nella nostra comunità. è facile!

Registra un nuovo account

Accedi

Hai già un account? Accedi qui.

Accedi ora
×
×
  • Crea nuovo/a...