1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

  2. Anuncie Aqui ! Entre em contato fdantas@4each.com.br

[RESOLVIDO] Ler porta serial - Capturar peso Balança Toledo

Discussão em 'EMS , HCM e Totvs 11' iniciado por rodolfo.rcs, Junho 26, 2019.

Status do Tópico:
Não esta aberto para novas mensagens.
  1. rodolfo.rcs

    rodolfo.rcs Membro Participativo

    Boa tarde prezados(as),

    Estou com o seguinte problema:

    Estou lendo uma porta serial "Com1" que conecta a balança da Toledo ao Desktop. Consigo realizar a leitura da porta, inclusive as numerações LASTKEY.

    Meu problema é que essas LASTKEY estão retornando caracteres especiais. Gostaria de saber se existe alguma forma de transformar em valores do peso, ou se falta alguma OCX ou algum comando?

    Desde já agradeço.

    Segue abaixo o codigo da rotina:

    ASSIGN xxx = ''
    xpeso-bru = 0.

    INPUT STREAM StreamName FROM value("Com1").

    REPEAT ON STOP UNDO, LEAVE : /* Faz uma leitura de String Completa */
    READKEY STREAM StreamName PAUSE 0.

    IF LASTKEY = 0 THEN DO: /* chr = + */
    ASSIGN xxx = ''
    xpeso-bru = 0.
    END.

    // MESSAGE LASTKEY VIEW-AS ALERT-BOX.

    IF LASTKEY >= 24 AND
    LASTKEY <= 215 THEN DO:

    IF LASTKEY = 309 THEN ASSIGN xxx = xxx + ','.
    ELSE ASSIGN xxx = xxx + CHR(LASTKEY).
    END.

    DISPLAY UNLESS-HIDDEN xxx WITH FRAME F0.

    IF LASTKEY = 309 THEN LEAVE. /* chr = enter */
    END.

    INPUT STREAM StreamName CLOSE.

    INPUT FRAME F0 xestok:BGCOLOR = 10.

    IF DECIMAL(xxx) > 0 THEN ASSIGN xpeso-bru = DECIMAL(xxx) .
    ELSE ASSIGN xpeso-bru = 0.

    DISP UNLESS-HIDDEN xxx xestok xpeso-bru WITH FRAME F0.
  2. fco_sobrinho

    fco_sobrinho Membro Participativo

    eu utilizo uma função:

    ver se ajuda.

    Function sonumero Return Char (input entrada As Char ,
    INPUT v-tam AS INT ,
    INPUT l-zero AS LOG
    ).
    DEFINE VARIABLE c-var AS Character Format "x(100)" NO-UNDO.
    DEFINE VARIABLE c-var01 AS Character Format "x(100)" NO-UNDO.
    DEFINE VARIABLE i-cont AS INTEGER NO-UNDO.
    DEFINE VARIABLE c-zero AS CHARACTER NO-UNDO.
    DEFINE VARIABLE stlist AS Character Format "x(100)" Initial "0,1,2,3,4,5,6,7,8,9" NO-UNDO.
    Do i-cont = 1 To v-tam:
    Assign c-var01 = Substring(entrada,i-cont,1).

    If lookup(c-var01,stlist) <> 0 Then Do:
    Assign c-var = c-var + c-var01.
    End.
    End.

    IF l-zero THEN DO:
    DO i-cont = 1 TO ( v-tam - LENGTH(c-var) ):
    ASSIGN c-zero = c-zero + "0".
    END.

    END.


    ASSIGN c-var = c-zero + c-var .

    Return (c-var) .

    End Function.

    DEFINE VARIABLE c-peso-balanca AS CHARACTER NO-UNDO.
    DEFINE VARIABLE c-leitura AS CHARACTER NO-UNDO.


    ASSIGN c-leitura = 'fn1cisco1'.

    /*variavel,numerodedigitos,zerosaesqueda*/
    assign c-peso-balanca = (sonumero(c-leitura,10,YES)).

    MESSAGE c-peso-balanca
    VIEW-AS ALERT-BOX INFO BUTTONS OK.
  3. rodolfo.rcs

    rodolfo.rcs Membro Participativo

    Opa

    Obrigado pelo retorno amigão. Na verdade tivemos que adquirir uma HardKey para poder efetuar a leitura. Pois, a Toledo informou que sem ela não seria possível.
Status do Tópico:
Não esta aberto para novas mensagens.

Compartilhe esta Página