Vai al contenuto

Semplice echo caratteri da porta seriale

Home Forum Programmazione IEC 61131 (LogicLab) Semplice echo caratteri da porta seriale

Stai visualizzando 2 post - dal 1 a 2 (di 2 totali)
  • Autore
    Post
  • #35019
    Anonimo
    Inattivo

    Sto provando alcune cose con la seriale. Ho preso l’esempio che c’è sul manuale. Ho settato la seriale nel task Boot.

        IF (Fp = NULL) THEN Fp:=Sysfopen (‘COM0’, ‘rw’); END_IF;

        i:=SysGetSerialMode(ADR(Sm), Fp);
        Sm.Baudrate:=19200; (* Valore di baud rate *)
        Sm.Parity:=’E’; (* Tipo di parità *)
        Sm.DataBits:=8; (* Numero di bit frame dato *)
        Sm.StopBits:=1; (* Numero di bit di stop *)
        Sm.EchoFlush:=TRUE; (* Echo flush *)
        Sm.DTRManagement:=DTR_OFF; (* DTR signal off *)
        i:=SysSetSerialMode(ADR(Sm), Fp);

    Nel task Slow eseguo l’echo dalla seriale.

        IF (Fp = NULL) THEN Fp:=Sysfopen (‘COM0’, ‘rw’); END_IF;

        IF (Fp <> NULL) THEN
            IF (TO_BOOL(SysGetIChars(Fp))) AND (TO_BOOL(SysGetOSpace(Fp))) THEN
                Ch:=Sysfgetc(Fp); (* Get input character *)
                Ch:=Sysfputc(Ch, Fp); (* Put input character *)
            END_IF;
        END_IF;

    Uso un Putty come terminale e quando digito un carattere mi ritorna a video della “porcheria”. i parametri sul putty sono corretti. Cosa può essere ?

    #36755
    Sergio Bertana
    Amministratore del forum

    Probabilmente usi due variabili Fp locali definite nei due programmi, quindi nella task di Boot esegui correttamente il set della porta seriale, ma poi nella task in Slow essa viene riaperta con il baud rate di default 115200, e, 8, 1.

    Ti consiglio di usare la variabile Fp definita come globale e non eseguire più la open della porta nel file eseguito in Slow.

    Altro consiglio è di gestire le porte seriali nella task di Back, è inutile caricare di lavoro le task Fast e Slow per gestire la comunicazione.

    Allego un programma di esempio per il download.

Stai visualizzando 2 post - dal 1 a 2 (di 2 totali)
  • Devi essere connesso per rispondere a questo topic.