Jump to content
PLC Forum


Lettura Codici Tramite Rs232 - Lettura di codici a barre


Recommended Posts

Posted

Ragazzi, ho un grosso problema:

ho uno scanner per codici a barre che legge il codice e lo trasferisce al pc tramite RS232. Per che diavolo ogni tanto il codice arriva alla seriale intero e viene letto parzialmete? Sto letteralmente impazzendo per trovare una soluzione.

In pratica, accade talvolta, che facendo scorrere il programma passo-passo e posizionando il cursore su commID.Input ho il codice x intero; se poi lo posiziono sulla variabile di assegnazione, il codice è ridotto di un certo numero di caratteri mai fisso.

. PER FAVORE

Questa è la seq

....................................................................

Case comEvReceive ' Ricevuto il numero di caratteri RThreshold.

If CommID.InBufferCount >= 39 Then

IDStringMemo = IDStringMemo & CommID().Input

If InStr(1, IDStringMemo, "cr") Then

Call AnalizzaID(IDStringMemo)

CommID.PortOpen = False

Else

CommID.PortOpen = False

End If

End if


Posted

Non sono sicuro, ma non è che se chiudi la porta prima di aver ricevuto i 39 caratteri perdi il contenuto del buffer?

Secondo me la tua routine funziona se casualmente ricevi tutti i 32 caratteri in un colpo solo, ma questo avviene raramente. E' più probabile che ti arrivino spezzettati in 2 o più tronconi. :)

Ciao

  • 4 months later...
Posted

E' successo anche a me l'altro giorno!

Io ricevevo stringhe di caratteri da un dispositivo esterno (sistema di pesatura digitale).

Ho risolto mettendo prima della lettura del buffer una istruzione che fa cosi:

Dim Counter as Long

Counter = 0

for 1 to 4000000

Counter=Counter + 1

next

DatidaSeriale= MsComm1.input

E' un semplice ritardo sulla lettura del buffer.Probabilmente lo vai a leggere ancora prima che finisca di riempirsi.Ciao!

Posted

Per sfinge:

Non è proprio una soluzione elegante, tu hai inserito un ritardo ma non è costante a seconda della CPU, piuttosto usa l'istruzione sleep(msec) dove msec è un numero di millisecondi.

Per tutti:

Io vi consiglio di tenere sempre aperta la porta seriale e mettere i caratteri ricevuti in un buffer che ciclicamente andate a controllare/analizzare/svuotare.

In questo modo le vostre procedure possono essere asincrone rispetto al dispositivo collegato in seriale.

Ciao

BR1

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...