Produzione  Terminali Biometrici  Rilevazione Presenze  Controllo Accessi  Impronte Digitali Raccolta Dati Gestione delle Commesse

 

Home Back

 

Programmazione in TDBasic

I terminali sono dotati di compilatore BASIC integrato che permette la realizzazione di procedure custom in linguaggio TDBasic. Questa funzione e’ particolarmente utile per personalizzare le funzioni standard dei terminali.

La realizzazione di procedure per la gestione delle commesse e avanzamento della produzione costituiscono an'applicazione tipica di TDBasic.

Il compilatore supporta solo numeri interi (long a 32 bit) e stringhe alfanumeriche. I salti sono gestiti con l’uso di label ed i numeri di riga non sono necessari. Alcuni nomi di variabili sono dedicate ad un uso specifico (vedi elenco seguente).

  

TIMER1

Se diverso da zero si decrementa ogni 0.001 secondi

TIMER2

Se diverso da zero si decrementa ogni 0.001 secondi

TIMER3

Se diverso da zero si decrementa ogni 0.1 secondi

TIMER4

Se diverso da zero si decrementa ogni 0.1 secondi

MEMOR1

Ritiene il valore anche in mancanza di alimentazione

MEMOR2

Ritiene il valore anche in mancanza di alimentazione

MEMOR3

Ritiene il valore anche in mancanza di alimentazione

MEMOR4

Ritiene il valore anche in mancanza di alimentazione

MEMOR5

Ritiene il valore anche in mancanza di alimentazione

COUNTER1

Si incrementa sul cambio di stato positivo di Input1

COUNTER2

Si incrementa sul cambio di stato positivo di Input2

BACKLIGHT

Determina lo stato della lampada del LCD. 1=ON  0=OFF

TIME$

Contiene l’ora di sistema hh:mm:ss

DATE$

Contiene la data di sistema giorno dd-mm-yy

COM2$

Ritorna una stringa da COM2 o una stringa vuota

COM3$

Ritorna una stringa da COM3 o una stringa vuota

BADGE1$

Ritorna una stringa da BADGE1 o una stringa vuota

BADGE2$

Ritorna una stringa da BADGE2 o una stringa vuota

ERRORLINE

Contiene il numero di riga dell’ultimo errore verificato

ERRORCODE

Contiene il codice dell’ultimo errore verificato

 

 

Le funzioni di TDBasic

Funzione

Descrizione

ABS(exp)

absolute value               

SGN(exp)

expression sign

ASC(exp$)

ASCII code of exp$

CHR$(exp)

string char

VAL(exp$)

string value

LEN(exp$)

string length

INSTR([start],str$,sub$)

sub$ position

TRIM$(exp$)

delete Left & Right spaces

LTRIM$(exp$)

delete left spaces

RTRIM$(exp$)

delete right spaces

UCASE$(exp$)

upper case

LCASE$(exp$)

lower case

LEFT$(exp$,len)

create left substring

RIGHT$(exp$,len)

create right substring\r\

MID$(exp$,pos,len)

create mid substring

HEX$(num)

hexadecimal string

SPACE$(len)

create a space string

STRING$(len,char)

create a chr string\

STR$(num)

string convert

MKI$(num)

convert a long in a 4 bytes string

FOR...TO...STEP / NEXT

Loop control

GOSUB label/ RETURN

Subroutine menagement

GOTO label

go to label

ONERRORGOTO label

In caso di errore salta a label

END

stop program

REM \"comment\"-

Remark

LCDCLEAR

Clear LCD display

GETCH

Ritorna il codice del tasto premuto. Zero se nessun tasto premuto

SCAN

Attende la pressione di un tasto e ne ritorna il codice

GOTOXY x,y

Posiziona il cursore del display alle coordionate x,y

SLEEP time

Pausa per il tempo time in millisecondi

BEEP nbeep

Emette  nbeep dal buzzer

RELE numrele,time

Scatta il rele per time in decimi di secondo

Se time=0 il rele si spegne

Se time=0 il rele si attiva permanentemente

IF exp THEN ….

Conditional jumps

IF #TIMERn THEN …

Jump if TIMERn is 0

IF #INPUTn THEN …

Jump if INPUTn is active

PRINT exp

Print exp to LCD display

PRINT #TRANSIT ,var$

Memorizza un transito standard in ltcom.trn .  Var$ copre il campo codice badge(9 digit)  e causali (4 digit).

PRINT #TERMINAL, exp

Print exp to serial terminal (debug only)

PRINT #PTRANSIT, esp

Memorizza e verifica OnLine un transito di produzione (esteso). I primi 9 caratteri sono memorizzati come numero badge mentre I uccessivi come estensione nel campo di produzione (40 caratt.).

PRINT #COM2, var$

Copia var$ sulla porta seriale COM2

PRINT #COM3, var$

Copia var$ sulla porta seriale COM3 (solo WebClock)

PRINT #COM4, var$,ID

Copia var$ sulla porta seriale COM4 (RS485) con id ID

PRINT #FILE, num, var$

Scrive la stringa var$ nel file ltcom.prnum.

 Se var$ = “CLEAR_FILE” il  file viene cancellato.

PRINT #FILE, num ,numrec, var$

Sovrascrive la stringa var$ nel file ltcom.prnum nel record numrec

FILE$(num, record)

Ritorna il record record del file ltcom.prnum

FILESRC(num,var$)

Cerca la stringa var$ nel file ltcom.prnum. Ritorna il numero di record che contiene la stringa o zero.

INPUT var$,mode,x,y,len,MenuT

Richiesta dati da piu’ sorgenti

var$=stringa dove i dati vengono  memorizzati

x,y=cursore o posizione per menu a tendina

len=numero massimo caratteri  stringa .

mode=sources (tastiera, badge, COM, menu a tendina) 

MenuT=numero del menu a tendina se utilizzato

SYSTEM

Richiama il sistema operativo. Deve essere inserita in ogni loop

MESSAGE$(exp)

Ritorna il record exp del file ltcom.msg

MBOX var$

Visualizza una MessageBox con var$

FONT exp

Seleziona un font di caratteri (1, 2 o 3 )

ASKFORBDG$

Richiesta badge in accordo con parametri di configurazione

READLTRN$(numbadge)

Ritorna l’ultima transazione del badge numbadge

BLACKLIST(numbadge)

Ritorna zero se il badge numbadge e’ listato nel file ltcom.blk

MENUT$(NumMenu,select)

Ritorna la descrizione select del menu a tendina NumMenu

MENUTVP (x1y1,x2,y2)

Definisce le coordinate della finestra di un menu tendina

COM485 var$, ID

Permette la comunicazione con un terminale RS485 connesso alla COM4 con protocollo TVTD. Viene inviata la stringa var$ al terminale ID. La funzione attende la risposta per 100 mS. La risposta del terminale viene riportata nella variabile var$. In caso di timeout o errore di checksum var$ viene ritornata nulla.

LASTFTP$

Ritorna data e ora ultimo accesso ftp

 

 

 

bit

Peso esa.

Peso dec.

Descrizione

0

0x01

1

Richiesta singolo tasto

1

0x02

2

Richiesta stringa

2

0x04

4

Richiesta badge #1

3

0x08

8

Richiesta badge #2

4

0x10

16

Richiesta scanner RS232 #1

5

0x20

32

Richiesta scanner RS232 #2

6

0x40

64

Richiesta menu a tendina

7

0x80

128

Conferma con input #1

 

 

Esempio di un breve programma scritto in TDBasic

 

REM INIZIO CICLO INPUT DATI

LCDCLEAR

BDG$=ASKFORBDG$

IF LEN(BDG$)=0 THEN GOTO ERROR

IN_SENSO:

LCDCLEAR

GOTOXY 1,1

IF SENSO=0 THEN PRINT "INGRESSO" ELSE PRINT "USCITA"

X=SCAN

IF X=1 THEN GOTO IN_COD_CAR

IF X=2 THEN GOTO ERROR

IF SENSO=0 THEN SENSO=1 ELSE SENSO=0

GOTO IN_SENSO

SENSO$=STR$(SENSO)

REM

IN_COD_CAR:

LCDCLEAR

GOTOXY 1,1

PRINT "INSERIRE CARRELLO"

INPUT STATUS,CAR$,18,1,2,6

IF STATUS <> 1 THEN GOTO ERROR

REM

LCDCLEAR

GOTOXY 1,1

PRINT "INSERIRE PESO"

INPUT STATUS,PESO$,18,1,2,6

IF STATUS <> 1 THEN GOTO ERROR

REM

LCDCLEAR

GOTOXY 1,1

PRINT "INSERIRE QUANTITA"

INPUT STATUS,QUAN$,18,1,2,6

IF STATUS <> 1 THEN GOTO ERROR

REM

LCDCLEAR

GOTOXY 1,1

PRINT "INSERIRE PRODOTTO"

INPUT STATUS,PROD$,18,1,2,6

IF STATUS <> 1 THEN GOTO ERROR

LCDCLEAR

GOTOXY 1,1

PRINT "INSERIRE LOTTO"

INPUT STATUS,LOTTO$,18,1,2,6

IF STATUS <> 1 THEN GOTO ERROR

ALL$=SENSO$+CAR$+PESO$+QUAN$+PROD$+LOTTO$

DIFF$=STRING$(9-LEN(BDG$) , 48)

BDG$=DIFF$ + BDG$

PRINT #PTRANSIT, BDG$ + ALL$

PRINT #TERMINAL, BDG$ + ALL$

MBOX "FINE INSERIMENTO"

END

ERROR:

MBOX "ERRORE DI INPUT"

BEEP 5

SLEEP 3000

END


 

 


 

Technodrive SRL    Via Enzo Ferrari n.7 20010 Arluno  Milano Italy    Tel. +39 0290377753    Fax. +39 0290379148  

Copyright © 2006 Technodrive srl  pi 13384950153  Ultimo aggiornamento: 13-12-11