
jxfdasilva
Membros-
Total de itens
95 -
Registro em
-
Última visita
Tudo que jxfdasilva postou
-
Esta Questão já esta resolvida (Comparação de 2 strings).... Em contrapartida sobram outras... Abraço
-
Boa Tarde companheiros, Estou tentando comparar duas strings usando o seguinte código: if AnsiContainsText((Copy(ReceivedCmd, 10, Length(ReceivedCmd))),LBox1.Items.Text) then begin ListBox1.Items.Add(Copy(ReceivedCmd, 10, Length(ReceivedCmd))); ListBox1.ItemIndex := ListBox1.Count -0; Acontece que não esta surtindo efeito.... não compara coisa alguma! Alguma ideia? Aquele abraço José
-
Boa Noite companheiros, Estou com uma pequena dificuldade onde qualquer ajuda seria bem vinda: Estou a enviar um comando Hexa AA5503071F para um ListBox e acontece que ela converte em Char ªU. Este comando é depois reenviado e aí ele volta a converter em Hexa. O que eu queria é que ele continuasse a ser lido quer no ListBox , ou no Memo em Hexa e fosse reenviado em Hexa. Da para dar uma ajuda? Abraço José Africa
-
Tenho um pequeno bug: A função AnsiContainsText verifica se existe letras no texto e não o texto inteiro.Assim, se tiver AAAA22 e digitar novamente AAAA22 ele diz que já existe; Se retiramos uma das letras AAAA2 ex. ele continua a dizer que é repetido...?! e assim sucessivamente.... Inté....
-
Ola Micheus e Boa noite companheiros do Forum, Consegui resolver a questão: if AnsiContainsText( Memo2.Lines.Text,ReceivedCmd) then Eu tinha trocado , if AnsiContainsText( ReceivedCmd, Memo2.Lines.Text,) then Vou verificar o resto a procura de bugs... Aquele abraço José
-
Ola Micheus, Veja por favor este código: var Idx :Integer; begin // se há comandos a processar... if ListBox1.Count > 0 then begin Envia para todos os clientes for Idx := 1 to ComboBox1.Items.Count -1 do (ComboBox1.Items.Objects[Idx] as TCustomWinSocket).SendText(Listbox1.Items[0]); Só que aqui eu queria comparar com o que existe no Memo2 e só enviaria se de facto não houvesse repetição... ComboBox1 selecciona o cliente; Listbox1 recebe os comandos e depois são enviadas para todos eles de acordo com a posição do ComboBx1; ListBox1.Items.Delete(0); // elimina comando da lista end end; end. Na Pratica o código que me enviastes faz com que não haja repetição no Memo2 - o que já é uma grande ajuda evitando linhas enormes... Aquele abraço José
-
Boa Madrugada Micheus, Acontece que o texto a procurar esta no ReceivedCmd := Socket.ReceiveText;. Eu explico: Imagina que um cliente manda para o server um comando. Este comando é recebido pelo Socket.ReceiveText e guardado na variável ReceiveCmd. Acontece porem que eu quero comparar este comando (que será em Hex), com os comandos já recebidos e armazenados no Memo2. Se forem iguais ele recusa, senão ele manda para a Matriz... Espero ter sido mais claro. Abraço José
-
Ola companheiros, Tenho uma dúvida que em princípio pode parecer simples mas não consigo implementar eficazmente. Preciso comparar a string do ReceivedCmd := Socket.ReceiveText; com as strings depositadas no Memo2 - Memo2.Lines.Add(Copy(ReceivedCmd, 5, Length(ReceivedCmd)));. Sei que existe a função AnsiSameText mas não estou a ver uma saida eficaz. Isto porque quero fazer com que os clientes que enviem os comandos (Hex para a Matriz), seja primeiros comparados com os que se encontram no Memo2 e só depois serão aceites...para evitar deste modo que se seleccione o mesmo Source e Destination Espero ter sido claro... Aquele Abraço José
-
Ola Companheiros, O código já está quase 80% concluído. Logo, ogo, postarei, ou algumas dúvidas ou resultado final. Aquele abraço José
-
Olá Micheus, Exactamente. Esta resolvido e, como sempre com a sua valiosíssima colaboração. MC José Da Silva
-
Boa Noite companheiros, Venho, para já desejar um Ano Novo próspero e, anunciar que o meu servidor já da indicações de vida após este interregno próprio da quadra festiva. Espero postar dentro de dias o código. Uma vez mais um grande abraço a todos e, em especial, ao Micheus. MC José
-
Boa Tarde companheiros, Gostaria de partilhar convosco algumas soluções para a minha aplicação. Infelizmente ainda estou batalhando numa solução para funcionar em Rede. Não deixo porem de fazer referencia a preciosa colaboração do Micheus que permitiu que avanços preciosos. Um bem-haja por isso. Assim, LB1.StateOn:=false; LB2.StateOn:=false; LB3.StateOn:=false; LB4.StateOn:=false; {permite apenas um switch ligado de cada vez} LB5.StateOn:=false; LB6.StateOn:=false; LB7.StateOn:=false; ... if not LB0.StateOn and LBV.StateOn or LBA.StateOn then //apanes permite que seja enviado o string se o Led estiver off Setup.ComPort1.WriteStr(Header+#$03#$00#$1F); end; procedure TMS8.LB00Click(Sender: TObject); begin {com ajuda do Micheus...} // manipula flag de audio/video if LBV.StateOn then VA := Vid; // se ligado inicializa com Vídeo if LBA.StateOn then VA := Aud; // se ligado adiciona o bit ref. Audio ao valor anterior if LBA.StateOn and LBV.StateOn then VA:= ViAu; //se ligado audio e video // inicializa o botão Source pressionado, o penúltimo caracter enviado é o nº do source. if LB0.StateOn then // Configura o LButtom para um determinado valor Hex em StateOn (ligado) LBSource := #00 else if LB1.StateOn then LBSource := #01 else if LB2.StateOn then LBSource := #02 else if LB3.StateOn then LBSource:=#03 else if LB4.StateOn then LBSource:=#04 else if LB5.StateOn then LBSource:=#05 else if LB6.StateOn then LBSource:=#06 else if LB7.StateOn then LBSource:=#07; If not LB00.StateOn then Setup.ComPort1.WriteStr(Header+VA+LBSource+#$00); {soluciona o problema do botão acionar com o LED off} if not LB00.StateOn and LBA.StateOn then LCD02.Indicatorstring := CharsToHexa(LBSource); //activa o valor numérico do LCD CrossPoint //... (continua abaixo) // continuação de cima if not LB00.StateOn and LBV.StateOn then LCD2.Indicatorstring := CharsToHexa(LBSource); if not LB00.StateOn and LBV.StateOn and LBA.StateOn then LCD02.Indicatorstring := CharsToHexa(LBSource); if not LB00.StateOn and LBV.StateOn and LBA.StateOn then LCD2.Indicatorstring := CharsToHexa(LBSource); end; A função... function CharsToHexa(StrSource :String) :String; var I :Byte; begin Result := ''; for I := 1 to Length(StrSource) do Result := Result +Format('%x', [Ord(StrSource[I])]); end; //*********************Quanto as Portas********************* var Reg : TRegistry; Lista : TStrings; i : integer; {Verifica se as existe portas } begin ListBox1.Items.Clear;//apaga a repetição das lista de portas no listbox Reg := TRegistry.Create; try Reg.RootKey := HKEY_LOCAL_MACHINE; Reg.OpenKey('Hardware\DeviceMap\SerialComm', false); Lista := TStringList.Create; try Reg.GetValueNames(Lista); for i := 0 to Lista.Count -1 do Listbox1.Items.Add(Reg.ReadString(Lista[i])); finally Lista.Free; end; Reg.CloseKey; finally Reg.Free; end; end; //Usei Componente ComPort que facilita enormemente o trabalho begin if ComPort1.Connected then ComPort1.Close else //Abre ou fecha dependendo se esta ou não conectado (ex. retirado do próprio componente) ComPort1.Open; end; procedure TSetup.Button3Click(Sender: TObject); begin ComPort1.ShowSetupDialog;// Abre o dialogo para ajuste da Porta end; procedure TSetup.ComPortOpen(Sender: TObject); begin Btn1.Caption := 'Fechar'; end; procedure TSetup.ComPortClose(Sender: TObject); begin if Btn1 <> nil then Btn1.Caption := 'Abrir'; end; Para já é tudo, Espero ter contribuido, quanto mais não seja para algumas duvidas ou futuras discussões saudáveis. Aquele Abraço José África
-
Valeu Micheus... Obrigadão José
-
Ola Micheus, A ideia é ler os strings em Hexa no Label.Caption. Por exemplo: Label1.Caption := 'String enviada: ' +Header +Command +Source +Destination; Quero ler em Hexa ao invés de Char. Aquele abraço José
-
Bom Dia Companheiros, Micheus, existe alguma forma de eu Ler no Label.Caption os valores em Hexa? Aquel abraço José
-
Boa Tarde a todos, Obrigado pelas dicas Micheus. Valeu mesmo. Vou analisar e logo, logo digo algo. Aquele Abraço José
-
Ola Micheus, já tinha antes tentado este comando (ComPort1.send(Header +Command +Source +Destination); //Envia a string de comandos), mas infelizmente da o seguinte erro: [Error] Unit1.pas(70): Undeclared identifier: 'send' [Fatal Error] Project1.dpr(5): Could not compile used unit 'Unit1.pas' Pode ser do stress mas não consigo resolver este dilema. Um Abraço --------------------------------------------- Ola Micheus, Acho que a solução passa por aqui: ComPort1.WriteStr(Header +Command +Source +Destination); //Envia a string de comandos ...enfim.... vou verificar o resto e já te digo mais alguma coisa... Abraço amigão José --------------------------------------------- Alo Micheus, De facto com este componente CPort, fica udo muito facil. Neste momento o problema esta quase resolvido. Optei por esta forma: Header := Char($AA) +Char($55); ComPort1.WriteStr(#$AA#$55#$03#$02#$1f); //Envia a string de comandos directamente, A tua ajuda, uma vez mais, foi incomensurável. Amanha farei os restantes testes e logo te digo algo. Vou dormir que já se faz tarde e a carcaça reclama. Próxima etapa e por isto tudo em Rede como Servidor.... Aquele abraço
-
Trata-se de uma Matriz de vídeo e áudio. Com ela é possível seleccionar ate 8 fontes de vídeo/áudio e direcciona-las para outras 8 saidas. Assim, posso seleccionar que o input 1 tem o output em 7, ou seja, source 1 tera a imagem no destination 7, por exemplo... e assim por diante. Vou analisar a tua dica e, desde já agradeço a tua colaboração... valeu! Abraço Ah, ainda sobre o "L". Com esta instrução, se o nível L corresponder ao nível do modulo onde se pretende que haja a comutação, obtém-se o "point crossing on", <source> sobre <destination>. Abraço
-
Boa noite companheiros, Tenho aqui alguns exemplos: EXAMPLE Command example : 5 byte Header + command + source + destination Header : AAH 55H Command : 01 ( video) / 02 ( audio) / 03 (audio/ video) / FFH ( Blank) Source : 01-08 Input selection Destination : 01-08 Output selection Exemplo de instrução: 51(Video) 52(Audio) - Retorno de numero de source para o canal de destino Com este comando é possível interrogar a matriz para obter o numero do "source" que no momento esta no canal destino. O pacote é o seguinte: <AAh> <55h> <5L> <00> <destination> A matriz respondera com: <AAh> <55h> <5L> <source> <destination> Se depois do comando a matriz responde atribuindo um numero de "source" FFh significa que o seu destino é presentemente uma situação de "blank". Espero que com este exemplo tenha aclarado a situação. Em todo o caso eu continuo a querer saber como enviar. Neste momento - graças a alguns componentes como o ComPort - já consigo estabelecer comunicação com a Matriz. O que esta ainda dando luta é exactamente como enviar este comando... Uma abraço a todos e. em especial ao Micheus... José
-
Boa noite a todos, Micheus, acho que aqui falta alguma coisa.... Qualquer coisa deste género faria mais sentido: procedure TForm1.SpeedEnviaClick(Sender: TObject); begin ComPort1.send( MemoTX.Text + #13#10 ); //Envia a string de comandos mais CR/LF. Form1.MemoTX.Clear(); end; end. Mas ainda estou a toa...tenho de enviar em Hexa, porque senão o interface não reconhece.. Abraço a tocdos e fico aguardando ideias frescas... Africa
-
Boa noite companheiros, Agora surge me uma dúvida: imaginemos que eu quero enviar um comando para a Matrix que seria: <Aah><55h><D0h> Como o faria em Delphi? Um exemplo seria bem vindo.... Aquele abraço José da Silva
-
Boa noite para todos, Agora surge-me uma duvida (+++outra....enfim!): Será que se eu criar um Servidor usando sockets, poderei fazer com que todos os 8 Pc´s que estão em rede comuniquem com a minha Matriz? Que aconteceria se hipoteticamente houvesse um pedido simultâneo de um ou mais clientes? Em todo o caso como definir os clientes e como endereça-los para a Matriz? Aquele abraço José
-
Boa Noite a todos os participantes do Fórum, A minha aplicação já consegue comunicar com a Matriz 8x8. A questão agora é mais bicuda: Como fazer com que os clientes (8 na totalidade), consigam comutar e de forma a não escolherem os mesmos pontos? Uma vez que a Matriz tem apenas uma entrada RS232, que ira estar ligado ao suposto Server, como fazer com que os outros clientes consigam aceder a Matriz? Imaginei que criando uma aplicação do lado do servidor, pudesse através de instruções dos clientes, seleccionar os pedidos. Desta forma, para além de conseguir que os pedidos não se repitam, funcionaria como um "midleware" entre os clientes e a matriz.... mas como fazer isso???!! Será uma ideia viável ou exequível? Ideias precisam-se! Uma abraço a todos e um em especial ao amigão Micheus... José África Ah, apenas informar que a Matriz responde com uma comando ack. Isto significa que sempre posso verificar que selecção existe ante de tornar possível a escolha... Aquele Abraço José
-
Companheiros, É só para dizer que estou de volta e aproveitar para dar uma abraço a malta e ao Micheus em particular. Fiquei sem Internet durante este período todo - África !! Abraço José Da Silva Moçambique
-
Ola Companheiros, Brigado Churc pelo help. Já alguém usou ou ouviu falar do MySQLDAC? Sera que pode ser uma solução ? Aquele Abraço José