frente

Terminais Sem Fios X64




Ligação Restaurantes





Configuração do Comando
Configuração com DLL
Configuração com DLL ( Funções antigas )
Configuração sem DLL ( MsDos )



Configuração do Comando

No Menu ...

Versão 6.14

Primir: 96195
1 6 7 1 4 5 Altera Numero Comando
2 2 6 4 2 6 4 Altera Numero Licenciamento

3
+1 Luz (bit 0)
+2 Receptor (bit 1)
+4 Pede Lugar (bit 2)
+8 Nao faz Reset ( Nao actualiza os blocos reservados )
+16 Pede Dinheiro Visa Multibanco
+32 Imprimir (S/N)
+64 Pede desperdicios (S/N)
+128 0-Anulação parcial; 1-Anulação completa
4 Numero de Retransmissores 0 Defeito
+8 Nao protege teclado
+16 Nao permite editar directamente os plus
+32 Quantidade por defeito a 0
+64 Envia mensagem sempre que acorda

5 Receber PLUs


Versão 6.24

Primir: 96195
1 6 7 1 4 5 Altera Numero Comando
2 2 6 4 2 6 4 Altera Numero Licenciamento

3
+1 Luz (bit 0)
+2 Receptor (bit 1)
+4 Pede Pessoas (bit 2)
+8 Nao faz Reset ( Nao actualiza os blocos reservados )
+16 Pede Dinheiro Visa Multibanco
+32 Imprimir (S/N)
+64 Pede desperdicios (S/N)
+128 0-Anulação parcial; 1-Anulação completa
4 Numero de Retransmissores 0 Defeito
+8 Nao protege teclado
+16 Nao permite editar directamente os plus
+32 Quantidade por defeito a 0
+64 Envia mensagem sempre que acorda
+128 Pede Lugar

5 Receber PLUs

Versão x.9123
Primir: 96195
1 6 7 1 4 5 Altera Numero Comando
2 2 6 4 2 6 4 Altera Numero Licenciamento

3 Alterar Configuração A (Enter para visualizar opções)
+1- Iluminação do LCD ligada?
+2- Recebe mensagens do PC?
+4- Pede nº de pessoas na mesa?
+8- Não repõe menus (pôr a 0 para repor menus originais)
+16- Pergunta tipo de pagamento?
  Exemplo: 1-Dinheiro 2-Visa
+32- Pergunta tipo conta: ?
  Exemplo: 1-Imprime 2-Não imprime
+64- Pergunta tipo anulacao: ?
  Exemplo: 1-c/desperdicio 2-s/ desperdicio
+128- A anulação é total ou pergunta quais os artigos a anular?


4
Alterar Configuração B (Enter para visualizar opções)
+n- Nº de antenas repetidoras
+8- Não bloquear teclado
+16- A lista de pedidos vem sempre do PC em vez de começar vazia
+32- A quantidade quando não preenchida é 0 e não 1
+64- O PC recebe uma notificação sempre que um terminal é ligado
+128- Pergunta o lugar da pessoa na mesa

5  Alterar Configuração C (Enter para visualizar opções)
+1- Ao pedir a conta pergunta o lugar?
+2- Fonte de letra tamanho grande
+4- 8 digitos na mesa com leitura por código de barras
+8- 8 digitos no lugar com leitura por código de barras
+16- Permite, para antenas com software recente (Setembro de 2002) não haver limite do número artigos de um pedido
+32- Verifica automáticamente se o valor escrito em tipo de pagamento e tipo de conta corresponde aos valores do texto descritivo Ex: 1-dinheiro 2-visa --> só aceita 0, 1 ou 2




Ligação directa sem DLL c/ Antenas Vers. 6
Na Antena versão 6 , a comunicação entre o PC e a antena é feita nos 2 sentidos. O protocolo utilizado é o mesmo mas por pacotes.

A comunicação entre o PC e a antena passa a ser por pacotes e não por bytes.
Depois de inicializada a Antena está sempre em recepção. Para
configurar a antena para trabalhar com pacotes deve-se enviar:

Estando a antena em 'Menu'

chr('-') + chr('<') +chr('P')+chr(2)
Para desactivar deve-se enviar
chr('-') + chr('<') +chr('P')+chr(0)
De notar que esta string deve ser enviada como um pacote.
A partir deste momento a antena não volta a 'Menu'

Os pacotes são constituidos da seguinte forma:

chr('-')+chr('>')+chr(tamanho)(byte)+DADOS(byte)+chr(Numero da mensagem)(byte) +chr(checksum)(byte)

tamanho : Tamanho dos DADOS
checksum : Inclui tamanho , dados e o numero da mensagem.

A resposta a cada pacote é sempre '->OK'+chr(Numero da mensagem)

Os pacotes são numerados ,a antena fica sempre á espera da resposta do PC, não recebendo novas mensagens enquanto o PC não responder. Este efeito é desejado para o caso de o cabo série sair os comandos pararem de funcionar.

Os dados são os mesmos que são usados nas versões anteriores.

Exemplo: Para enviar uma mensagem para o comando devo enviar:

chr('-')
chr('>')
chr(36) Tamanho da mensagem
chr ( Num. Comando a enviar mensagem Low Byte )
chr ( Num. Comando a enviar mensagem High Byte )
chr ( Num. Licenciamento Low byte)
chr ( Num. Licenciamento High byte)
32 Bytes ( Texto da mensagem )
chr(Numero da mensagem) por exempo 1
chr( checksum ) 1 Byte com a soma de todos os bytes da mensagem incluido o tamanho e o numero da mensagem.

A Antena vai responder com :
chr('-')
chr('>')
chr('O')
chr('K')
chr(Numero da mensagem)

Em seguida vai enviar a mensagem por radio.

No Sentido inverso passa-se o mesmo.
A unica situação a ter em conta é que se a antena enviar um pedido para o PC e o PC estiver á espera de uma resposta a uma mensagem, o pedido deve ser interpretado como um pedido.

O Exemplo em VB mostra bem esta situação.


Receber por RS232:
Chr('-')+Chr('>')+Chr(Size)+
·Chr(®)+Chr(®)

·Chr ( Função)
P Pedir Num. Pessoas
A anular
S subtotal Tipo Pagamento
C conta Tipo Pagamento+ Factura (S/n)
T transf Mesa2
G pag_parc
D desconto % Desconto
R Resposta de Confirmação da mensagem.
·Chr ( Num. Comando Low Byte )
·Chr ( Num. Comando High Byte )
·Chr ( Num. Licença Low Byte )
·Chr ( Num. Licença High Byte )
·Chr ( Num. Mensagem Low Byte)
·Chr ( Num. Mensagem High Byte)
·Chr ( Num. Pratos Low Byte)
·Chr ( Num. Pratos High Byte)
·Chr ( Num. Mesa Low Byte)
·Chr ( Num. Mesa High Byte)
·Chr ( Auxiliar Low Byte )
·Chr ( Auxiliar High Byte)

.Chr (Lugar 1 Low Byte) SÓ NO PROTOCOLO_DADOS 2
.Chr (Lugar 1
High Byte) SÓ NO PROTOCOLO_DADOS 2
.Chr (Lugar 2 Low Byte) SÓ NO PROTOCOLO_DADOS 2
.Chr (Lugar 2
High Byte) SÓ NO PROTOCOLO_DADOS 2

For n=1 to Num.Pratos
·Chr ( Prato Low Byte)
·Chr ( Prato High Byte )
·Chr ( Quantidade Low Byte )
·Chr ( Quantidade High Byte )
next
+Chr(Numero Mensagem)
+Chr(Checksum)

PC DEVE RESPONDER COM '->OK'+chr(Numero da mensagem)

Codigo de C Equivalente
		*Funcao=msg[0];
*terminal=msg[1]+msg[2]*256;
*licenca=msg[3]+msg[4]*256;
*msg_number=msg[5]+msg[6]*256;
*pratos=msg[7]+msg[8]*256;
*mesa1=msg[9]+msg[10]*256;
*AuxData=msg[11]+msg[12]*256;
ct=13;
if(ActiveProtocolo==2)
{
*lugar1=msg[13]+msg[14]*256;
*lugar2=msg[15]+msg[16]*256;
ct+=4;
}
if(ActiveProtocolo>=3)
{
*mesa1=*((int *)&(msg[13]));
*mesa2=*((int *)&(msg[17]));
*lugar1=*((int *)&(msg[21]));
*lugar2=*((int *)&(msg[25]));
ct+=16;
}

if(ActiveProtocolo>=4)
{
memcpy(st_mesa1,&(msg[ct]),13);
memcpy(st_mesa2,&(msg[ct+13]),13);
ct+=26;
}

Comandos Antena Versão 6
"-<S"+chr(1) Protocolo_dados 1
"-<S"+chr(2) Protocolo_dados 2

"-<P"+chr(0) Sem Pacotes de dados, Sem Header

"-<P"+chr(1) Sem Pacotes de dados, Com Header "-->"

"-<P"+chr(2) Pacotes de dados, activo


"-<?" Pergunta Versão da antena. A reposta é um byte. Nas versões antigas a Resposta é "Menu.."

Enviar plu para o comando
chr(1)
chr ( Num. Bloco a programar Low byte)
chr ( Num. Bloco a programar High byte)
chr ( Num. Licenciamento Low byte)
chr ( Num. Licenciamento High byte)
16 Bytes ( texto) (Se os ultimos 4 bytes forem digitos simbiliza uma familia exp. "CARNE 0100")
Em modo de pacotes de dados para enviar um segundo plu deve-se repetir o comando.
Enviar uma mensagem
chr (3)
chr ( Num. Comando a enviar mensagem Low Byte )
chr ( Num. Comando a enviar mensagem High Byte )
chr ( Num. Licenciamento Low byte)
chr ( Num. Licenciamento High byte)
32 Bytes ( Texto da mensagem )

Enviar uma mensagem especial para por em modo upload plus
(Dentro da mensagem)
chr(1)
chr(6)

Enviar uma mensagem especial para por em modo upload plus e limpar todos os PLUS

( versão > 6.918 )
(Dentro da mensagem)

chr(1)
chr(8)

Enviar uma mensagem especial para configurar byte hardware A
(Dentro da mensagem)
chr(1)
chr(3)
chr(byte de hardware)
Descrição dos bits do byte de hardware
+1 Ligar a luz
+2 Receptor (bit 1)
+4 Pede Lugar (bit 2)
+8 Nao faz Reset ( Nao actualiza os blocos reservados )
+16 Pede Dinheiro Visa Multibanco
+32 Imprimir (S/N)
+64 Pede desperdicios (S/N)
+128 0-Anulação parcial; 1-Anulação completa

Enviar uma mensagem especial para configurar byte hardware B
(Dentro da mensagem)
chr(1)
chr(7)
chr(byte de hardware)
Descrição dos bits do byte de hardware
+ Numero de Retransmissores 0 Defeito
+8 Nao protege teclado
+16 Nao permite editar directamente os plus
+32 Quantidade por defeito a 0
+64 Envia mensagem sempre que acorda
+128 Pede Lugar


Enviar os limites da base, Nº Licenciamento e Comando
chr(8)
chr(Low Byte ( Limite inferior Licenca ))
chr(High Byte ( Limite inferior Licenca ))
chr(Low Byte ( Limite superior Licenca )
chr(High Byte ( Limite superior Licenca ))
chr(Low Byte ( Limite inferior N. Comando ))
chr(High Byte ( Limite inferior N. Comando ))
chr(Low Byte ( Limite superior N. Comando ))
chr(High Byte ( Limite superior N. Comando ))

Enviar dados de uma mesa para um comando
chr(10)
chr ( Num. Comando a configurar Low Byte )
chr ( Num. Comando a configurar High Byte )
chr ( Num. Licenciamento Low byte)
chr ( Num. Licenciamento High byte)

chr( Num.Pratos)
chr( Mesa Low byte)
chr( Mesa High Byte)


if(ActiveProtocolo<2)
{
memcpy(BackMessage[BackMessageWrite & 0xff].message+8,&AuxData,1);
memcpy(BackMessage[BackMessageWrite & 0xff].message+9,&MsgCt,1);
}
if(ActiveProtocolo==2)
{
memcpy(BackMessage[BackMessageWrite & 0xff].message+8,&AuxData,2);
memcpy(BackMessage[BackMessageWrite & 0xff].message+10,&Lugar1,2);
memcpy(BackMessage[BackMessageWrite & 0xff].message+12,&Lugar2,2);
memcpy(BackMessage[BackMessageWrite & 0xff].message+14,&MsgCt,1);
}

if(ActiveProtocolo==3)
{
memcpy(BackMessage[BackMessageWrite & 0xff].message+8,&AuxData,2);
memcpy(BackMessage[BackMessageWrite & 0xff].message+10,&mesa,4);
memcpy(BackMessage[BackMessageWrite & 0xff].message+14,&mesa,4);
memcpy(BackMessage[BackMessageWrite & 0xff].message+18,&Lugar1,4);
memcpy(BackMessage[BackMessageWrite & 0xff].message+22,&Lugar2,4);
memcpy(BackMessage[BackMessageWrite & 0xff].message+26,&MsgCt,1);
}

if(ActiveProtocolo==4)
{
memcpy(BackMessage[BackMessageWrite & 0xff].message+8,&AuxData,2);
memcpy(BackMessage[BackMessageWrite & 0xff].message+10,&mesa,4);
memcpy(BackMessage[BackMessageWrite & 0xff].message+14,&mesa,4);
memcpy(BackMessage[BackMessageWrite & 0xff].message+18,&Lugar1,4);
memcpy(BackMessage[BackMessageWrite & 0xff].message+22,&Lugar2,4);
memcpy(BackMessage[BackMessageWrite & 0xff].message+26,&MsgCt,1);

memcpy(BackMessage[BackMessageWrite & 0xff].message+27,st_mesa1,13);
memcpy(BackMessage[BackMessageWrite & 0xff].message+40,st_mesa2,13);

}

for N = 1 to Num. Pratos
chr( Prato Low Byte)
chr( Prato High Byte)
chr( Qt Low Byte)
chr( Qt High Byte)
next



Ligação directa sem DLL Antenas Vers. <6

Instalação:

Ligar a base ao PC utilizando a porta série.

Comunicar com a base a “19200,N,8,2


Base:

Depois de Ligada arranca em modo de recepcao.
Para sair do modo de recepcao basta enviar um caracter pelo RS232.

Entra em modo "Menu"
Sempre que a base entra em modo Menu envia "Menu" para o PC

Configuracao da base:

Enviar por RS232:

Chr(‘-‘)+Chr(‘-‘)+Chr(‘>’) (Bytes de sincronismo)


·Chr (1)
Entra em mode de Upload
LOOP1
chr ( Num. Bloco a programar Low byte)
chr ( Num. Bloco a programar High byte)
chr ( Num. Licenciamento Low byte)
chr ( Num. Licenciamento High byte)
16 Bytes ( texto) (So sao visiveis os primeiros 13)
PAUSA
Para sair do modo de Upload deve-se enviar Chr(2)
em qualquer posicao do texto.
GOTO LOOP1

·Chr (2)
Entra em mode de Recepcao
·Chr (3)
Enviar uma Mensagem
chr ( Num. Comando a enviar mensagem Low Byte )
chr ( Num. Comando a enviar mensagem High Byte )
chr ( Num. Licenciamento Low byte)
chr ( Num. Licenciamento High byte)
32 Bytes ( Texto da mensagem )

A base automaticamente entra em Recepcao, recebendo
a confirmacao da mensagem.

·Chr ( 1 ) MENSAGEM ESPECIAL (1ª caracter do texto da mensagem)

·Chr ( 3 )
Conf. Hardware à Chr (

+1 Luz (bit 0)
+2 Receptor (bit 1)
+4 Pede N. Pessoas (bit 2)
+8 Nao faz Reset ( Nao actualiza os blocos reservados )
+16 Pede Dinheiro Visa Multibanco
+32 Imprimir (S/N)
+64 Pede desperdicios (S/N)
+128 0-Anulação parcial; 1-Anulação completa
)
·Chr ( 6 )
Entra em Download
+ Lixo para completar os 32 bytes
---
A base automaticamente entra em Recepcao, recebendo
a confirmacao da configuracao.
·Chr (4)
Enviar dados de uma mesa
chr ( Num. Comando a configurar Low Byte )
chr ( Num. Comando a configurar High Byte )
chr ( Num. Licenciamento Low byte)
chr ( Num. Licenciamento High byte)

chr( Num.Pratos)
chr( Mesa Low byte)
chr( Mesa High Byte)
chr( Num. Pessoas)

for N = 1 to Num. Pratos
chr( Prato Low Byte)
chr( Prato High Byte)
chr( Qt Low Byte)
chr( Qt High Byte)
next

·Chr (8)
Enviar Limites
Formato 8 bytes:

Low Byte ( Limite inferior Licenca )
High Byte ( Limite inferior Licenca )
Low Byte ( Limite superior Licenca )
High Byte ( Limite superior Licenca )

Low Byte ( Limite inferior N. Comando )
High Byte ( Limite inferior N. Comando )
Low Byte ( Limite superior N. Comando )
High Byte ( Limite superior N. Comando )

A base automaticamente entra em Recepcao

Receber por RS232:

·Chr(®)+Chr(®)

·Chr ( Função)
P Pedir Num. Pessoas
A anular
S subtotal Tipo Pagamento
C conta Tipo Pagamento+ Factura (S/n)
T transf Mesa2
G pag_parc
D desconto % Desconto
R Resposta de Confirmação da mensagem.
·Chr ( Num. Comando Low Byte )
·Chr ( Num. Comando High Byte )
·Chr ( Num. Licença Low Byte )
·Chr ( Num. Licença High Byte )
·Chr ( Num. Mensagem Low Byte)
·Chr ( Num. Mensagem High Byte)
·Chr ( Num. Pratos Low Byte)
·Chr ( Num. Pratos High Byte)
·Chr ( Num. Mesa Low Byte)
·Chr ( Num. Mesa High Byte)
·Chr ( Auxiliar Low Byte )
·Chr ( Auxiliar High Byte )

For n=1 to Num.Pratos
·Chr ( Prato Low Byte)
·Chr ( Prato High Byte )
·Chr ( Quantidade Low Byte )
·Chr ( Quantidade High Byte )
next


Importante

Quando um comando envia uma mensagem para uma base, se o comando não receber uma confirmação da base , automaticamente o comando volta a enviar o pedido.

Em relação ao contrário é um pouco mais complicado.

1.O comando só aceita mensagens nos segundos a seguir a ter enviado um pedido
2.Se o comando receber uma mensagem envia para a base uma confirmação (Função ‘R’)
3.Se o comando não receber a mensagem nada acontece. Esto implica que o programa do PC se não receber mensagens de confirmação para cada mensagem enviada deve repetir o envio com intervalos razoaveis.
4.Ter em conta que não se deve saturar o ambiente ficando sempre a enviar.


Ligação c/ DLL - RIOCOM.DLL



A DLL foi programada usando uma linguagem de 32 bits. Logo todos os argumentos do tipo int devem ser considerados inteiros de 32 bits. Linguagens que usem inteiros de 16 bits devem prototipar as funções como usando long int em vez de int.

Todas as funções descritas retornam sempre um código de erro inteiro.

0 --> OK, operação bem sucedida
1 --> NO_MESSAGE, não existem mensagens para ler do buffer)
2 --> INVALID_COM_PORT, porta série inexistente ou já utilizada por outro programa
3 --> GENERIC_ERROR, erro genérico
4 --> NO_RESPONSE, a DLL não obteve resposta da antena



int __stdcall radio_set_entry( int entry_no, char *name)

Descrição :

Esta função actualiza a imagem que a DLL tem da memória do terminal rádio apenas para uma posição. Esta actualização deve ser feita para todas as posições que serão enviadas usando a função radio_upload_entries. (ver abaixo)

Função:



int radio_set_entry(
int entry_no,
char far *name);

Parametros:



entry_no: Posição a ser actualizada
name: Texto a gravar nessa posição. Este poderá ter até 16 caracteres.
Mapa das posições:



0

OK

operação bem sucedida


1

NO_MESSAGE

não existem mensagens para ler do buffer


2

INVALID_COM_PORT

porta série inexistente ou já utilizada por outro programa


3

GENERIC_ERROR

erro genérico


4

NO_RESPONSE

a DLL não obteve resposta da antena









int __stdcall radio_set_entry( int entry_no, char *name)

Descrição :

Esta função actualiza a imagem que a DLL tem da memória do terminal rádio apenas para uma posição. Esta actualização deve ser feita para todas as posições que serão enviadas usando a função radio_upload_entries. (ver abaixo)

Função:



int radio_set_entry(
int entry_no,
char far *name);

Parametros:



entry_no: Posição a ser actualizada
name: Texto a gravar nessa posição. Este poderá ter até 16 caracteres.

Mapa das posições:


0 a 9

Reservadas


11 a 13

NAO USADO


14

"Mesa"


15

"Prato Qtd"


16

"Enviando"


17

NAO USADO


18

NAO USADO


19

"Nº Pessoas" ou "LUGAR"


20

"Outras"


21 a 27

Nome das Funções "Outras"


28 a 29

"Reservados"


30

Metodos de Pagamento


31

"Imprime s/n"


32

Prompt "?" ( Por defeito )


33 a 3071

Descritivos de artigos de 1 a 3039


3072

1 - Pedido


3073

2 - Anulação


3074

3 - Subtotal


3075

4 - Conta


3076

5 - Transferencias


3077

6 - Pagamento Parcial


3078

7 - Outros


3079

8 - Desconto


9
9 - Configuracao


3080

1 - Comando


3081

2 - Licenca


3082

3 - Config.A


3083

4 - Config.B


3084

5 – Config.C


3085

6 - Receber PLUs


3086

7 - Apagar PLUs


10
8 - Envia PLUs+C


3087

Desistir [Enter]




3088
Array de páginas
(tipo de)
bytes 0 a 15

(...)
(...)

3103
bytes 240 a 255




3104
Array de páginas
(apontador para)
inteiros de 32 bits 0 a 3

(...)
(...)

3167
inteiros de 32 bits 252 a 255




3168
Indice no array de páginas para cada artigo
bytes 0 a 15

(...)
(..)

3358
bytes 1024 a 1039




3999
4 bytes c/ o nº de descritivos a receber





int __stdcall radio_upload_entry(int first_entry,int last_entry)


Descrição :



Esta função envia todas as entradas (previamente introduzidas com radio_set_entry) para os terminais rádio. Para que os terminais recebam é preciso previamente fazer 96195 6 quando o terminal se encontra no menu principal, para colocar o terminal em modo de download. Como alternativa pode-se por o terminal em modo de download enviando uma mensagem .



Esta função não tem correção de erros. Pode acontecer que um terminal não receba todas as entradas. Para evitar que isso aconteça pode-se enviar 2 vezes.

Função:

int radio_upload_entries(
int first_entry,
int last_entry);

Parametros:

      • first_entry: Primeira entrada a ser enviada
        last_entry: Última entrada a ser enviada. Para enviar todas as entradas alteradas fazer first_entry = 10 e last_entry = 3079.




int __stdcall radio_init(int com_no,int first_terminal,int last_terminal,int license_no,int protocolo_dados)

Descrição :

Esta função inicializa a antena, fazendo a detecção automática da versão e colocando-a em modo de recepção de pedidos. Esta inicialização demora cerca de 1 segundo.

Função:

int radio_init(
int com_no,
int first_terminal,
int last_terminal,
int license_no,
int protocolo_dados);

Parametros:

com_no: Número da porta COM à qual se encontra ligada a antena

(Ex. 1 para COM1)



first_terminal:1º terminal rádio que esta antena deve aceitar como válido. Os terminais só desistem de enviar uma mensagem quando recebem uma confirmação da antena. A antena só confirma mensagens que tenham o mesmo número de licença de hardware (ver license_nomais abaixo), e tenham um numero de terminal entre first_terminalelast_terminal inclusive.



last_terminal: Último terminal rádio que esta antena deve aceitar como válido (ver first_terminal)



license_no: Número de licença de hardware (programado nos terminais) que a antena deve aceitar como válido. Este valor serve para que estabelecimentos vizinhos que usem o mesmo sistema de terminais rádio possam usar um n.º de licença diferente, evitando assim conflitos entre as mensagens.


protocolo_dados: Antena Versao 1 a 5 deve usar valor 1, Antena versão 6 ou superior podem usar 2 neste parametro. Permite receber + alguns campos.
Antenas versão 7 ( apitam 4 vezes no inicio ) , podem usar o protocolo 3. Com este protocolo o nº mesa e o nºlugar passa a vir em 32 bits.

int __stdcall radio_close()

Descrição :


Esta função liberta a porta série e devolve a antena ao modo por defeito de modo a que esta não receba mais transmissões a partir dos terminais rádio.

Função:

int radio_close( void );





PROTOCOLO_DADOS 1

int __stdcall radio_send_list(int terminal,int pratos, int mesa,int NumPessoas,char *lista)

Esta função envia uma mensagem para um terminal de rádio. O terminal depois de receber a mensagem entra em modo de edição. Depois de editar é enviada uma mensagem do terminal para o PC com Tipo='E'.

A Lista é uma sequencia de 4 bytes * Nº de pratos. É equivalente á lista que se recebe quando se recebe um pedido.



PROTOCOLO_DADOS 2
int __stdcall radio_send_list2(int terminal,int pratos, int mesa,int AuxData,int Lugar1,int Lugar2,char *lista)
Esta função envia uma mensagem para um terminal de rádio. O terminal depois de receber a mensagem entra em modo de edição. Depois de editar é enviada uma mensagem do terminal para o PC com Tipo='E'.

A Lista é uma sequencia de 4 bytes * Nº de pratos. É equivalente á lista que se recebe quando se recebe um pedido


PROTOCOLO_DADOS 3
int __stdcall radio_send_list3(int terminal,int pratos, int mesa,int AuxData,int Lugar1,int Lugar2,int *plus,int *qtds)
Esta função envia uma mensagem para um terminal de rádio. O terminal depois de receber a mensagem entra em modo de edição. Depois de editar é enviada uma mensagem do terminal para o PC com Tipo='E'.

Plus e Qtds apontam para um array de inteiros de 32 bits.


PROTOCOLO_DADOS 4
int __stdcall radio_send_list4(int terminal,int pratos, int mesa,int AuxData,int Lugar1,int Lugar2,int *plus,int *qtds,unsigned char *mesa1,unsigned char *mesa2)		
Esta função só deve ser usada se se quiser ter o campo mesa com mais de 8 digitos.

Esta função envia uma mensagem para um terminal de rádio. O terminal depois de receber a mensagem entra em modo de edição. Depois de editar é enviada uma mensagem do terminal para o PC com Tipo='E'.

Plus e Qtds apontam para um array de inteiros de 32 bits.

mesa1 aponta para uma string de 13 bytes.
mesa2 aponta para uma string de 13 bytes.

int __stdcall radio_send_message(int terminal,char *msg)

Descrição :

Esta função envia uma mensagem de texto para um terminal rádio. A mensagem não deverá ocupar mais de 32 caracteres e deverá ser inteiramente composta por caracteres internacionais. Note-se que o terminal rádio só receberá a mensagem se estiver no menu principal, pelo que o envio de mensagens só deverá ser efectuado como resposta a uma acção do utilizador do terminal.

A DLL encarrega-se de tentar retransmitir mensagens não confirmadas pelo terminal. Esta retransmissão é feita a cada 5 segundos (aproximadamente). Se o terminal não receber uma mensagem em 30 segundos, a DLL ignora-a. As mensagens são tratadas por ordem de chegada (FIFO). Pode-se saber se uma mensagem foi enviada ou não usando a função radio_send_message_get_status.

Parametros:

terminal: Número do terminal para o qual a mensagem deve ser enviada.
msg
: Apontador para o endereço onde está a mensagem a enviar. (Muitas linguagens fazem a conversão automática de string para este apontador)


int __stdcall radio_send_big_message_auto_run_menu(int terminal,char *msg , int menuoption)

Descrição :

Esta função envia uma mensagem de texto para um terminal rádio. A mensagem não deverá ocupar mais de 64 caracteres e deverá ser inteiramente composta por caracteres internacionais. Note-se que o terminal rádio só receberá a mensagem se estiver no menu principal, pelo que o envio de mensagens só deverá ser efectuado como resposta a uma acção do utilizador do terminal.
Depois de o terminal receber esta mensagem vai automaticamente para o menu 'menuoption'

A DLL encarrega-se de tentar retransmitir mensagens não confirmadas pelo terminal. Esta retransmissão é feita a cada 5 segundos (aproximadamente). Se o terminal não receber uma mensagem em 30 segundos, a DLL ignora-a. As mensagens são tratadas por ordem de chegada (FIFO). Pode-se saber se uma mensagem foi enviada ou não usando a função radio_send_message_get_status.

Parametros:

terminal: Número do terminal para o qual a mensagem deve ser enviada.
msg
: Apontador para o endereço onde está a mensagem a enviar. (Muitas linguagens fazem a conversão automática de string para este apontador)
menuoption: Menu para o qual o terminal vai depois de receber uma mensagem.



int __stdcall radio_send_big_message(int terminal,char *msg )

Descrição :

Esta função envia uma mensagem de texto para um terminal rádio. A mensagem não deverá ocupar mais de 64 caracteres e deverá ser inteiramente composta por caracteres internacionais. Note-se que o terminal rádio só receberá a mensagem se estiver no menu principal, pelo que o envio de mensagens só deverá ser efectuado como resposta a uma acção do utilizador do terminal.

A DLL encarrega-se de tentar retransmitir mensagens não confirmadas pelo terminal. Esta retransmissão é feita a cada 5 segundos (aproximadamente). Se o terminal não receber uma mensagem em 30 segundos, a DLL ignora-a. As mensagens são tratadas por ordem de chegada (FIFO). Pode-se saber se uma mensagem foi enviada ou não usando a função radio_send_message_get_status.

Parametros:

terminal: Número do terminal para o qual a mensagem deve ser enviada.
msg
: Apontador para o endereço onde está a mensagem a enviar. (Muitas linguagens fazem a conversão automática de string para este apontador)


int __stdcall radio_send_message_auto_run_menu(int terminal,char *msg , int menuoption)

Descrição :

Esta função envia uma mensagem de texto para um terminal rádio. A mensagem não deverá ocupar mais de 32 caracteres e deverá ser inteiramente composta por caracteres internacionais. Note-se que o terminal rádio só receberá a mensagem se estiver no menu principal, pelo que o envio de mensagens só deverá ser efectuado como resposta a uma acção do utilizador do terminal.
Depois de o terminal receber esta mensagem vai automaticamente para o menu 'menuoption'

A DLL encarrega-se de tentar retransmitir mensagens não confirmadas pelo terminal. Esta retransmissão é feita a cada 5 segundos (aproximadamente). Se o terminal não receber uma mensagem em 30 segundos, a DLL ignora-a. As mensagens são tratadas por ordem de chegada (FIFO). Pode-se saber se uma mensagem foi enviada ou não usando a função radio_send_message_get_status.

Parametros:

terminal: Número do terminal para o qual a mensagem deve ser enviada.
msg
: Apontador para o endereço onde está a mensagem a enviar. (Muitas linguagens fazem a conversão automática de string para este apontador)
menuoption: Menu para o qual o terminal vai depois de receber uma mensagem.



int __stdcall radio_message_upload_plus(int terminal)


Esta função envia uma mensagem para o terminal e este fica á espera de receber PLUS.


int __stdcall radio_message_clear_upload_plus(int terminal)

Equivalente á função anterior mas também limpa todos os PLUS.


int __stdcall radio_message_hardware_A(int terminal,int valor)

Esta função envia uma mensagem e configura a opção A do terminal com o valor.


+1 Luz (bit 0)
+2 Receptor (bit 1)
+4 Pede Pessoas (bit 2)
+8 Nao faz Reset ( Nao actualiza os blocos reservados )
+16 Pede Dinheiro Visa Multibanco
+32 Imprimir (S/N)
+64 Pede desperdicios (S/N)
+128 0-Anulação parcial; 1-Anulação completa





int __stdcall radio_message_hardware_B(int terminal,int valor)

Esta função envia uma mensagem e configura a opção B do terminal com o valor.

+ Numero de Retransmissores 0 Defeito
+8 Nao protege teclado
+16 Nao permite editar directamente os plus
+32 Quantidade por defeito a 0
+64 Envia mensagem sempre que acorda
+128 Pede Lugar



int __stdcall radio_message_hardware_C(int terminal,int valor)

Esta função envia uma mensagem e configura a opção C do terminal com o valor.

+1- Ao pedir a conta pergunta o lugar?
+2- Fonte de letra tamanho grande
+4- 8 digitos na mesa com leitura por código de barras
+8- 8 digitos no lugar com leitura por código de barras
+16- Permite, para antenas com software recente (Setembro de 2002) não haver limite do número artigos de um pedido
+32- Verifica automáticamente se o valor escrito em tipo de pagamento e tipo de conta corresponde aos valores do texto descritivo Ex: 1-dinheiro 2-visa --> só aceita 0, 1 ou 2
 



int __stdcall radio_message_hardware_ABC(int terminal,int valorA,int valorB,int ValorC)

Esta função envia uma mensagem e configura a opção A,B e C do terminal com o valor.


int __stdcall radio_message_hardware_ABCDEF(int terminal,int valor1,int valor2,int valor3,int valor4,int valor5,int valor6)

Esta função envia uma mensagem e configura a opção A,B,C,D,E e F do terminal com o valor respectivo.



int __stdcall radio_get_send_status(int msg_number)

Esta função permite verificar se uma mensagem já chegou a um terminal (a DLL continua a tentar durante cerca de uma hora no caso de o terminal estar desligado ou sem cobertura)

Retorna:
0 se a mensagem chegou
1 se a DLL ainda está a tentar enviar a mensagem
2 se o envio falhou (após cerca de 1 hora de tentativas)

Parametros:

msg_number: Valor retornado pela função radio_send_message, radio_send_lista, radio_message_upload_plus ou radio_message_clear_upload_plus

int __stdcall radio_recv3(int *Funcao,int *Terminal, int *Licenca,int *MsgNumber,int *Pratos,int *Mesa1,int *Mesa2, int *AuxData,int *lugar1,int *lugar2,int *plus,int *qtds)

Descrição :

ATENÇÂO , Só pode ser usada com o protocolo_dados 3 activo

Esta função verifica se existe alguma mensagem enviada por um terminal no buffer de entrada para ser lida pelo programa. Se existir alguma mensagem a função faz uma cópia desta para as variaveis passadas como parametros.

Esta função é equivalente a radio_recv , mas é mais facil de utilizar.
int *plus é um apontador para um array de inteiros de 32 bits.
int *qtds é um apontador para um array de inteiros de 32 bits.


int __stdcall radio_recv4(int *Funcao,int *terminal,int *licenca,int *msg_number,int *pratos,int *mesa1,int *mesa2,int *AuxData,int *lugar1,int *lugar2,int *plus,int *qtds,unsigned char *st_mesa1,unsigned char *st_mesa2)

Descrição :

ATENÇÂO , Só pode ser usada com o protocolo_dados 4 activo

Função identica ao radio_recv3, mas permite receber 13 bytes do campo mesa1 e mesa2.

Deve ser utilisada quando é preciso usar o campo mesa para ler codigos de barras com 13 digitos.


int __stdcall radio_recv5(int *Funcao,int *terminal,int *licenca,int *msg_number,int *pratos,int *mesa1,int *mesa2,int *AuxData,int *lugar1,int *lugar2,int *plus,int *qtds,unsigned char *st_mesa1,unsigned char *st_mesa2)

Descrição :

ATENÇÂO , Só pode ser usada com o protocolo_dados 4 activo

Função identica ao radio_recv4, mas ao receber numeros decimais retorna a quantidade em negativo multiplicada por 1000. Exemplo 0.1, retorna na quantidade -100.



int __stdcall radio_recv(char *msg)

Descrição :

Esta função verifica se existe alguma mensagem enviada por um terminal no buffer de entrada para ser lida pelo programa. Se existir alguma mensagem a função faz uma cópia desta para msg e retorna OK.

Função:

int radio_recv(
char *msg);

Parametros:

msg: Apontador para o endereço onde deve ser colocada a mensagem recebida.







PROTOCOLO_DADOS 1

0

1

2

3

4

5

6

7

8

9

10

11

12


Tipo

Terminal

Liçença

Nº Ordem

Pratos

Mesa

Aux

1º Artigo

1º Qtd

2ª Artigo

2º Qtd

3º...

3º...


1B

2B

2B

2B

2B

2B

2B

2B

2B

2B

2B

2B

2B















PROTOCOLO_DADOS 2

0

1

2

3

4

5

6

7

8

9

10

11

12


Tipo

Terminal

Liçença

Nº Ordem

Pratos

Mesa

Aux

Lugar 1

Lugar 2

1ª Artigo

1º Qtd

2º...

2º...


1B

2B

2B

2B

2B

2B

2B

2B

2B

2B

2B

2B

2B















PROTOCOLO_DADOS 3

0

1

2

3

4

5

6

7

8

9

10

11

12


Tipo

Terminal

Liçença

Nº Ordem

Pratos

Mesa

Aux

Lugar 1

Lugar 2

Mesa 1

Mesa 2

1º Artigo

1º Qtd


1B

2B

2B

2B

2B

2B

2B

4B

4B

4B

4B

2B

2B




Funções de Complementos



As funções que se seguem criam no mapa de posições uma associação entre os plus e seus complementos. Esta informação só é enviada para o terminal quando se chama a função radio_upload_entry.

int __stdcall radio_set_modifier_start( int first_modifier_number)

Descrição :

Indica a primeira posição do 'mapa das posições ' para onde a Dll automaticamente vai colocar os complementos.

int __stdcall radio_set_modifier_name( char *modifier_name)

Descrição :

Nome da lista de componentes que se vai introduzir de seguida. Exemplo "Tipo de café ", seguido de "curto" e "cheio".

int __stdcall radio_set_modifier_entry( char *name)

Descrição :

Deve-se usar esta função para introduzir todas as entradas desta  lista de componentes.

int __stdcall radio_set_modifier_end()

Descrição :

Utiliza-se para terminar a introdução dos componentes.

int __stdcall radio_set_entry_with_modifier( int entry_no, char *name,char *modifier_name,int modifier_type)

Descrição :

A associação entre os plus e os seus respectivos complementos faz-se com esta função. Para um mesmo plu que se queira associar a varias listas de complementos, deve-se chamar esta função varias vezes.
Esta função também introduz o plu no mapa das posições, evitando assim a chamada á função :radio_set_entry.

exemplo:
    radio_set_entry_with_modifier 850 + 32, "CAFE", "Temperatura da Chavena", 1
    radio_set_entry_with_modifier 850 + 32, "CAFE", "Tipo de café", 1

Parametros:

entry_no:Posição a ser actualizada
name:Texto a gravar nessa posição. Este poderá ter até 16 caracteres.
modifier_name: Nome de uma das paginas de complementos que podem ser usadas com este plu.
modifier_type:
                            1 - Só se pode escolher um complemento desta pagina
                            5 - Podem-se escolher varios complemntos desta pagina
                            129 - Só se pode escolher um complemento desta pagina (automática)
                            133 - Podem-se escolher varios complemntos desta pagina (automática)








Exemplo em VB:

    radio_set_modifier_start 2000
   
    radio_set_modifier_name "Tipo de café"
    radio_set_modifier_entry "Cheio"
    radio_set_modifier_entry "Curto"
   
    radio_set_modifier_name "Temperatura da Chavena"
    radio_set_modifier_entry "Chevena Fria"
    radio_set_modifier_entry "Chavena Quente"
    radio_set_modifier_entry "Chavena Morna"
   
    radio_set_modifier_end
   
    radio_set_entry_with_modifier 850 + 32, "CAFE", "Temperatura da Chavena", 1
    radio_set_entry_with_modifier 850 + 32, "CAFE", "Tipo de café", 1
   
    radio_set_entry_with_modifier 800 + 32, "CEVADA", "Temperatura da Chavena", 5
   
    radio_set_entry_with_modifier 801 + 32, "LEITE", "Temperatura da Chavena", 5
   
    radio_set_entry_with_modifier 860 + 32, "COLA", "Temperatura da Chavena", 5
    radio_set_entry_with_modifier 860 + 32, "COLA", "Tipo de café", 5
   
   



Funções de introdução em Arvore.

Com estas funções é possivel criar uma estrutura de familias, subfamilias, complementos etc... com muita simplicidade.
Este sistema tem a vantagem de não ser preciso o funcionário memorizar codigos.

No terminal opção G, 'Arvore PLUS' ( Valor 1 ) tem que estar activo. Valido nas versões >= 7.9370.

As funções são as seguintes:

VB
'Tree
Public Declare Function radio_make_tree_mkdir Lib "RioCom" (ByVal directory_name As String) As Long ' Optional
Public Declare Function radio_make_tree_cd_back Lib "RioCom" () As Long
Public Declare Function radio_make_tree_entry Lib "RioCom" (ByVal entry_number As Long, ByVal entry_name As String) As Long
entry_number: Valor do plu que a dll deve retornar se este plu for escolhido.
entry_name: Nome do plu.
Retorna: Valor indicativo do codigo com que este plu vai ficar no terminal.


Public Declare Function radio_make_tree_cd Lib "RioCom" (ByVal directory_name As String) As Long
Public Declare Function radio_upload_tree Lib "RioCom" () As Long
Envia todos os plus para o terminal.

Public Declare Function radio_upload_tree2 Lib "RioCom" (Byval Configurações As String,ByVal NumParametros As Long,ByVal RearrangeTree as Long) As Long
Envia todos os plus para o terminal.
As configurações são uma string que permite configurar directamente o terminal.
Configuração 1 = Opção A
Configuração 2 = Opção B
Configuração 3 = Opção C
etc...

NumParametros: Tamanho das configurações em bytes.
RearrangeTree: 1(Activa) ou 0(Desactiva), permite defenir o comportamento da arvore em situações que um ramo têm mais que 8 elementos.
Se 1, a dll automaticamente cria um novo subramo de maneira a que nunca haja um ramo com mais de 8 elementos.



' Tree modifiers
Public Declare Function radio_make_tree_modifier_entry Lib "RioCom" (ByVal entry_number As Long, ByVal name As String) As Long
entry_number: Valor do plu que a dll deve retornar se este plu for escolhido.
entry_name: Nome do plu.
Retorna: Valor indicativo do codigo com que este plu vai ficar no terminal.

Public Declare Function radio_make_tree_modifier Lib "RioCom" (ByVal group_name As String, ByVal automatic As Boolean, ByVal multiple_choice As Boolean) As Long
Metodo para criar tipos de complementos.
group_name: Grupo de complementos a usar.
automatic: True, Pergunta obrigatória.
multiple_choice:True, Permite escolher varios items.
Public Declare Function radio_make_tree_modifier2 Lib "RioCom" (ByVal group_name As String, ByVal automatic As int, ByVal multiple_choice As int) As Long
Equivalente á função anterior.


C Language


int __stdcall radio_make_tree_mkdir(char *name); // Optional
int __stdcall radio_make_tree_cd_back();
int __stdcall radio_make_tree_entry( int entry_no, char *name);
int __stdcall radio_make_tree_cd(char *name);
void radio_make_tree_modifier_name( char *group_name,int first_complement_number);
int __stdcall radio_make_tree_modifier( char *group_name,bool automatic,bool multiple_choice);
int __stdcall radio_make_tree_modifier_entry(int entry_no, char *name);


Exemplo:






Para criar os plus do exemplo acima deveria-se usar o seguinte codigo.

radio_make_tree_mkdir "Cafetaria" ' Optional
radio_make_tree_cd "Cafetaria"

radio_make_tree_entry 1, "Cafe"
radio_make_tree_modifier "Temperatura da Chavena", False, False
radio_make_tree_modifier "Tipo de café", False, False
radio_make_tree_entry 2, "Cha"
radio_make_tree_modifier "Temperatura da Chavena", True, True
radio_make_tree_entry 8, "Aguas"
radio_make_tree_entry 9, "Torradas"
radio_make_tree_entry 10, "Tosta mista"
radio_make_tree_entry 11, "Sande de queijo"
radio_make_tree_entry 12, "Sande mista"
radio_make_tree_entry 13, "Pão c/ queijo"
' If number of elements > 8 Tree will be auto rebuild
' radio_make_tree_entry 14, "Pão c/ manteiga"
' radio_make_tree_entry 15, "Pão simples"

radio_make_tree_cd_back
radio_make_tree_cd "Gelataria"
radio_make_tree_mkdir "Copo" ' Optional
radio_make_tree_mkdir "Taca" ' Optional
radio_make_tree_cd "Copo"
radio_make_tree_entry 3, "2 Bolas"
radio_make_tree_entry 4, "3 Bolas"
radio_make_tree_cd_back
radio_make_tree_cd "Taca"
radio_make_tree_entry 5, "Chocolate"
radio_make_tree_entry 6, "Baunilha"
radio_make_tree_cd_back
radio_make_tree_cd_back

radio_make_tree_mkdir "Outros"
radio_make_tree_cd "Outros"
radio_make_tree_entry 7, "Tabaco"
radio_make_tree_cd_back

radio_make_tree_mkdir "Compl."
radio_make_tree_cd "Compl."
radio_make_tree_mkdir "Tipo de café"
radio_make_tree_cd "Tipo de café"
radio_make_tree_modifier_entry 500, "Cheio"
radio_make_tree_modifier_entry 501, "Curto"
radio_make_tree_cd_back

radio_make_tree_mkdir "Temperatura da Chavena"
radio_make_tree_cd "Temperatura da Chavena"
radio_make_tree_modifier_entry 600, "Chevena Fria"
radio_make_tree_modifier_entry 601, "Chavena Quente"
radio_make_tree_modifier_entry 602, "Chavena Morna"
radio_make_tree_cd_back

    
Página principal

Contactos

Download

Manual de interligação






Restaurantes