Vai al contenuto
PLC Forum


Costruzione stringa in Step7


Messaggi consigliati

Inserito:

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 ?


Inserita:

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....

Inserita:

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.

Inserita: (modificato)

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
Inserita:

Così a naso... Non è che devi prima scrivere nel descrittore della stringa la lunghezza e poi metterci i caratteri?

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...