walterword Inserito: 29 ottobre 2021 Segnala Share Inserito: 29 ottobre 2021 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 More sharing options...
walterword Inserita: 29 ottobre 2021 Autore Segnala Share Inserita: 29 ottobre 2021 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 More sharing options...
Cip77 Inserita: 29 ottobre 2021 Segnala Share Inserita: 29 ottobre 2021 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 More sharing options...
walterword Inserita: 29 ottobre 2021 Autore Segnala Share Inserita: 29 ottobre 2021 (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: 29 ottobre 2021 da walterword Link al commento Condividi su altri siti More sharing options...
drn5 Inserita: 30 ottobre 2021 Segnala Share Inserita: 30 ottobre 2021 Così a naso... Non è che devi prima scrivere nel descrittore della stringa la lunghezza e poi metterci i caratteri? Link al commento Condividi su altri siti More sharing options...
Messaggi consigliati
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 accountAccedi
Hai già un account? Accedi qui.
Accedi ora