threads?????
>From: "alineri" <[EMAIL PROTECTED]> >Reply-To: delphi-br@yahoogrupos.com.br >To: delphi-br@yahoogrupos.com.br >Subject: [delphi-br] METODO MAQUINA DE ESTADO - DUVIDAS - ALGUEM CONHECE ? >Date: Fri, 31 Aug 2007 00:26:55 -0000 > >Boa noite pessoal > >Estou desenvolvendo uma aplicacao que utiliza o metodo de MAQUINA DE >ESTADO que e uma rotina que fica em loop testando uma variável >que chamamos de Estado. Dependendo do estado atual, executamos alguns >procedimentos e em seguida alteramos o estado que será verificado >pela máquina de estados novamente no próximo passo do loop. > >Utilizo esse conceito para trabalhar com terminais onde o programa >fica rodando em loop aguardo informacoes do terminal. > >queria saber dos amigos se conhecem esse conceito de programacao que >nao conhecia ate entao, se ja utilizaram em terminais ou em qualquer >outra aplicacao. > >mas ai vai a minha questao. Essa aplicao a para atender 11 terminais >de acesso ( catracas ). > >quardo as informacoes desses terminais em um vetor e um dos campos >desse vetor chamo de "estado" que sera a variavel que ira armazenar o >estado atual de cada terminais, se foi acessado ou nao por exemplo. > >um pseudocodigo ficaria assim mais ou mesnos > >//Váriável para armazenar o estado atual de cada terminals > >Inteiro VetorTerminal[32]; > >//Variável que diz qual é o terminal que estamos tratando >Inteiro TerminalAtual = 1 > >while(TRUE){ > >//Verifica qual é o estado do terminal atual > >Case VetorTerminal[TerminalAtual] >1: // Procedimentos Primeiro passo inner > //Seta o Terminal atual para o próximo estado > VetorTerminal[TerminalAtual] = 2; > >2: //Executa o estado 2 para o Terminal atual > //Seta o Terminal atual para o próximo estado > VetorTerminal[TerminalAtual] = 3; > >. >. >. // Ate quantos passos achar necessario > >//Pula para o próximo Terminal >TerminalAtual = TerminalAtual + 1; >If(TerminalAtual > TOTALDETERMINAIS){ >TerminalAtual = 1; >} > >Basicamente se eu nao estiver errado essa e a ideia de maquina de >estado, e foi o unico metodo que concegui para trabalhar com >terminais, e ai esta o problema. > >Pelo pseudocodigoa cada passo do CASE a variavel que controla a >posicao do vetorterminal e incrementada, fazendo um loop assim em >todos os terminais. Nesses passos que estao dentro desse loop sao >testados as conexoes com cada terminal, verifica se as informcoes >foram passadas por esses terminais ( informacoes vindas de cartoes, >teclado, digitais etc ) > >O problems que ja observei em pratica foi: > >1 - Quando um terminal sai do passo 1, para entrar no passo dois tem >que esperar o loop percorrer todos os outros terminais, oq as vezes >gera um pouco de lentidao. > >2 - Problemas no momento da validacao de dados, se dois ou mais >usuarios fizerem uma validacao ( passaram um cartao ) ao mesmo tempo >as variaveis que utilizo para armazenar por exemplo o codigo do >cartao que foi passado ou informacoes do teclado perdem as >referencias. > >3 - um meio de tratar dentro desse loop terminais a parte, por >exemplo, um terminais perdeu a conexao, ter um meio dentro dese loop >de ficar testando a conexao com esse termianal isoladamente, sem que >o teste de conexao do mesmo tenha o mesmo problema que relatei na >questao 1. > >Bem pessoal queria ver se alguem pode me dar uma ideia para melhorar >esse pseudo codigo, se alguem conehce esse metodo de maquina de >estado e possa dar uma ideia de como melhorar o desempenho, e ainda >se alguem trabalha com terminais utilizando esse conceito para >trocarmos experiencia. > >Vou ficando por aqui, o texto ja esta grande. > > >Um forte abraco a todos >eduardo > _________________________________________________________________ Inscreva-se no novo Windows Live Mail beta e seja um dos primeiros a testar as novidades-grátis. Saiba mais: http://www.ideas.live.com/programpage.aspx?versionId=5d21c51a-b161-4314-9b0e-4911fb2b2e6d