Catalog · How the catalog works
fila
Exemplo de uso da impressora POS-58, imprimindo um ticket de fila. Desenvolvido em Lazarus. Windows/Linux/Mac
- ★ 5 on GitHub
Anyone may press Interesting, signed in or not. It helps others find this project.
README
Projeto Fila
Sistema de controle de filas, emissão de tickets, chamada de senhas e exibição em painel, desenvolvido principalmente em Lazarus / Free Pascal.
O projeto foi criado para cenários de atendimento em balcão, recepção, unidades públicas, postos de atendimento, unidades de saúde, repartições, escolas, clínicas ou qualquer ambiente onde seja necessário emitir uma senha, organizar a ordem de chamada e mostrar o atendimento em um painel.
Site do projeto: http://maurinsoft.com.br/index.php/projeto-fila/
Vídeo demonstrativo:
Visão geral
O Projeto Fila é formado por vários módulos independentes que trabalham em conjunto por rede local e arquivos de configuração.
A ideia central é simples:
- o usuário retira uma senha no módulo Fila;
- a senha entra em uma lista de atendimento;
- o atendente usa o módulo Guichê para chamar a próxima senha;
- o módulo Fila devolve a senha chamada;
- o Guichê envia a chamada para o PainelDesk;
- o painel exibe a senha, o guichê e mantém o histórico visual das últimas chamadas;
- o módulo Fila registra emissão, chamada e estado da senha em
fila.db(SQLite), mantendo os arquivos TXT como compatibilidade; - o atendimento pode seguir os estados CHAMADA → EM_ATENDIMENTO → FINALIZADA, ou terminar como AUSENTE/CANCELADA;
- o painel web-admin apresenta indicadores e permite ações administrativas;
- opcionalmente, o módulo Contador pode continuar sendo usado como integração externa.
Documentação dos módulos
Cada módulo possui uma documentação própria:
| Módulo | Documentação | Função principal |
|---|---|---|
| Fila | Fila/README.md | servidor/emissor de senhas e controlador das filas |
| Guichê | Guiche/README.md | terminal do atendente para chamar senhas |
| PainelDesk | PainelDesk/README.md | painel desktop TCP para exibir senhas chamadas |
| Contador | Contador/README.md | executável auxiliar para registrar chamadas em SQLite |
| Web Admin | web-admin/README.md | indicadores, histórico e ações administrativas |
Arquitetura geral
+-------------------+ TCP 8095 +-------------------+
| Guichê | -------------------------> | Fila |
| terminal atendente| solicita próxima senha | servidor/emissor |
+-------------------+ +-------------------+
|
| TCP 8196
| envia senha chamada
v
+-------------------+
| PainelDesk |
| painel de chamada |
+-------------------+
Opcional:
+-------------------+
| Contador |
| registra chamada |
| em SQLite |
+-------------------+Módulos do sistema
Fila
O módulo Fila é o núcleo do sistema.
Ele permite configurar até cinco filas, emitir tickets, controlar a numeração, salvar a lista de senhas pendentes, escutar os guichês pela porta 8095 e fornecer informações de painel pela porta 8096.
A partir da refatoração do núcleo, o Fila também mantém um banco fila.db no diretório de configuração do usuário. O banco registra emissão, chamada, início e fim do atendimento, ausência, cancelamento e histórico de eventos. Os arquivos list01.txt a list05.txt continuam sendo gravados como mecanismo de compatibilidade e recuperação.
O núcleo calcula ainda quantidade aguardando, chamadas pendentes, atendimentos em andamento, finalizadas/ausentes/canceladas no dia, tempo médio de espera e tempo médio de atendimento.
Também concentra configurações como empresa, localização, tipo de impressora, modelo de impressora, tipo de papel, imagem, fala, painel, fonte, reset programado e integração externa por executável.

Guichê
O módulo Guichê é usado pelo atendente.
Ele conecta ao servidor Fila, chama a próxima senha de uma fila, mantém histórico local, permite rechamar senha e envia a senha chamada para até três painéis configurados.

PainelDesk
O PainelDesk é o painel desktop do sistema.
Ele escuta chamadas TCP na porta 8196, interpreta mensagens de chamada, exibe a senha atual, mostra o guichê, guarda um pequeno histórico visual, emite alerta sonoro e pode falar a senha usando o módulo auxiliar de fala.
Também possui área de anúncios, com download de imagens a partir de uma URL configurada.

Contador
O Contador é um utilitário de console.
Ele recebe parâmetros pela linha de comando e grava registros na tabela registro de um banco SQLite. Pode ser usado como integração externa do Fila para persistir eventos de chamada.
Exemplo conceitual:
contador.exe 3 A015 2Nesse exemplo:
3é o número do guichê;A015é a senha;2é o tipo de evento.
Portas de comunicação
| Porta | Origem | Destino | Uso |
|---|---|---|---|
8095 |
Guichê | Fila | solicitar próxima senha |
8096 |
Painel/cliente | Fila | consulta/envio de informações de painel no módulo Fila |
8196 |
Guichê | PainelDesk | enviar senha chamada ao painel |
Em ambiente real, essas portas devem estar liberadas no firewall.
Fluxo funcional
Usuário toca/clica no terminal Fila
↓
Fila gera a próxima senha do tipo selecionado
↓
Fila imprime o ticket
↓
Senha é adicionada à lista da fila correspondente
↓
Atendente pressiona o botão da fila no Guichê
↓
Guichê envia requisição para o Fila pela porta 8095
↓
Fila remove a primeira senha da lista e devolve ao Guichê
↓
status = CHAMADA
↓
Guichê mostra a senha chamada e registra no histórico
↓
opcionalmente: INICIAR → EM_ATENDIMENTO
↓
FINALIZAR → FINALIZADA
ou AUSENTE / CANCELADA
↓
Guichê envia a chamada ao PainelDesk pela porta 8196
↓
PainelDesk exibe senha, guichê, pisca, emite som e pode falar a chamada
↓
Opcionalmente, Contador registra a chamada no SQLiteEstrutura do repositório
fila/
├── database/ # esquema SQLite do núcleo
├── shared/ # protocolo, serviço de filas, tipos e repositório SQLite
├── tests/ # testes automatizados do núcleo
├── web-admin/ # administração PHP, indicadores e ações
├── Contador/ # utilitário console para registro de chamadas em SQLite
│ └── README.md
├── Fila/ # aplicação principal de emissão e controle de fila
│ └── README.md
├── Guiche/ # aplicação usada pelo atendente
│ └── README.md
├── Painel/Painel_Laz/ # módulo antigo/Android LAMW relacionado a painel
├── PainelDesk/ # painel desktop TCP
│ └── README.md
├── bin/ # binários e arquivos de distribuição
├── drivers/ # drivers e dependências externas
├── img/ # imagens usadas na documentação
├── tools/SQLiteStudio/ # ferramenta auxiliar para SQLite
├── README.MD # documentação central
└── readme.txt # instruções antigas de build Android/LAMWTecnologias usadas
- Lazarus / Free Pascal;
- LCL;
- lNet /
lnetvisual; - Indy /
indylaz; - Synapse /
laz_synapse; - UniqueInstance;
- RxLib /
rxnew; - LazSerialPort;
- DataPortLasarus;
- Fortes Report for Lazarus;
- ZeosDB no módulo Contador;
- SQLDB / SQLite3Conn no núcleo do Fila;
- SQLite no módulo Contador;
- LAMW em parte do projeto Android;
- Inno Setup em materiais de empacotamento Windows.
Requisitos gerais para desenvolvimento
- Lazarus instalado;
- Free Pascal compatível;
- pacotes Lazarus exigidos por cada projeto;
- drivers de impressora térmica, quando usados;
sqlite3.dllcompatível com a arquitetura do executável no Windows, para o novo histórico SQLite do Fila e para o Contador;- permissões de firewall para as portas
8095,8096e8196; - permissão de porta serial, quando usar impressora serial;
- ambiente LAMW configurado, caso vá trabalhar com a versão Android.
Compilação rápida
Fila
Abra no Lazarus:
Fila/Fila.lpiCompile o projeto e execute a aplicação Fila.
Guichê
Abra no Lazarus:
Guiche/Guiche.lpiCompile o projeto e execute a aplicação Guiche.
PainelDesk
Abra o projeto do painel desktop na pasta:
PainelDesk/Compile e execute o painel.
Contador
Abra no Lazarus:
Contador/src/contador.lpiCompile o executável de console.
Configuração básica de implantação
Exemplo de rede local:
Computador 1 - Servidor Fila
IP: 192.168.0.10
Portas: 8095 e 8096
Impressora térmica conectada
Computador 2 - Guichê 1
IP Fila: 192.168.0.10
Número do guichê: 1
Painel 1: 192.168.0.20
Computador 3 - PainelDesk
IP: 192.168.0.20
Porta: 8196Ordem recomendada de execução:
- iniciar o Fila;
- configurar e iniciar o PainelDesk;
- configurar e iniciar o Guichê;
- testar emissão de senha;
- testar chamada pelo guichê;
- validar exibição no painel.
Ciclo de atendimento
O ciclo estruturado da senha é:
AGUARDANDO
↓ chamada
CHAMADA
├─→ AUSENTE
├─→ CANCELADA
↓ iniciar
EM_ATENDIMENTO
├─→ AUSENTE
├─→ CANCELADA
↓ finalizar
FINALIZADAO protocolo mantém compatibilidade com as mensagens antigas e acrescenta comandos opcionais:
ATENDIMENTO:INICIAR>A015>3>;
ATENDIMENTO:FINALIZAR>A015>3>;
ATENDIMENTO:AUSENTE>A015>3>;
ATENDIMENTO:CANCELAR>A015>3>motivo;O servidor responde com ATENDIMENTO:OK>... ou ATENDIMENTO:ERRO>....
Administração web
A pasta web-admin/ contém um painel PHP. Ele consulta o fila.db para indicadores e histórico, mas envia alterações de estado ao servidor Fila pela porta 8095, evitando divergência entre o SQLite e a fila mantida em memória.
A configuração usa as variáveis FILA_DB_PATH, FILA_ADMIN_TOKEN, FILA_HOST e FILA_PORT.
Protocolos de mensagem observados
O sistema usa mensagens simples em texto.
Exemplos observados nos fontes:
Fila:<tipo>
><guiche>;
Fila:<senha>
FILA:<senha>><guiche>;
GUICHE><guiche>:<senha>;
GRUPO><grupo>:<descricao>;Essas mensagens são usadas entre Fila, Guichê e PainelDesk.
Observações importantes
- O Fila deve estar ativo antes do Guichê solicitar senhas.
- O PainelDesk precisa estar escutando a porta
8196para receber chamadas. - O firewall pode bloquear a comunicação TCP.
- As configurações são salvas em arquivos locais.
- O módulo Contador depende de SQLite, Zeos e
sqlite3.dllno Windows. - Existem partes antigas do projeto, principalmente relacionadas ao Android/LAMW.
- A estrutura tem histórico de evolução, portanto alguns nomes e pastas ainda refletem decisões legadas.
Status do projeto
O projeto é funcional e possui histórico de uso real.
Órgão citado na documentação original:
- Secretaria da Saúde de Ribeirão Preto
Melhorias recomendadas
Para evolução futura:
- formalizar o protocolo de comunicação em um arquivo próprio;
- criar releases por versão com executáveis separados;
- revisar nomes de pastas e padronizar caixa alta/baixa;
- adicionar licença explícita ao repositório;
- revisar módulos antigos do Android/LAMW;
- criar instalador atualizado para Windows;
- separar documentação de usuário, instalação e desenvolvedor;
- adicionar prints atualizados de todos os módulos;
- adicionar testes de comunicação TCP;
- validar compatibilidade Windows/Linux por módulo.
Autor
Desenvolvido por Marcelo Maurin Martins.
GitHub: https://github.com/marcelomaurin
Site: http://maurinsoft.com.br/
English summary
Fila is a queue management system built mainly with Lazarus / Free Pascal.
It includes:
- a ticket issuing server/application;
- a counter desk application to call the next ticket;
- a desktop display panel;
- a console helper to register calls in SQLite;
- TCP communication over a local network;
- configurable queue types;
- thermal printer support.
Main ports:
8095: Guichê to Fila;8096: Fila panel/query channel;8196: Guichê to PainelDesk.
Resumen en español
Fila es un sistema de control de turnos desarrollado principalmente con Lazarus / Free Pascal.
Incluye:
- aplicación principal para emisión de tickets;
- módulo de guiché para llamar el próximo número;
- panel desktop para mostrar las llamadas;
- utilitario de consola para registrar llamadas en SQLite;
- comunicación TCP en red local;
- soporte para impresoras térmicas.
Puertos principales:
8095: Guiché hacia Fila;8096: canal de panel/consulta de Fila;8196: Guiché hacia PainelDesk.
CI do Guichê
Além dos testes do núcleo, o repositório possui o workflow Guiche full Lazarus build, que compila integralmente o cliente Guichê em Linux/GTK2 e publica o executável como artefato Guiche-linux-x86_64.
O Guichê passou a depender apenas de LCL + lNet para comunicação. Dependências legadas não utilizadas de Indy e DataPort foram removidas desse módulo.


