Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

djthyrax

Mais um tópico sobre o mesmo... (?)

Mensagens Recomendadas

djthyrax

Boas pessoal,

No âmbito do projecto final de curso (eng. electrotécnica e computadores) vou precisar de implementar um sistema de gestão de uma casa composto por um daemon que vai receber informação de sensores para monitorizar o utilizador e um GUI de fácil utilização para gestão da casa e outras funções, como p.e. chamar aplicações externas, fazer chamadas no Skype, etc, isto para além de ter de implementar uma aplicação para gerir todos os sensores e actuadores da casa propriamente dita.

A minha grande dúvida é que linguagens utilizar.

Quem me tem acompanhado aqui pelo fórum sabe que desenrasco-me razoavelmente em C, Python e PHP (embora este esteja bem enferrujado), mas nunca fiz projectos de grande dimensão mais a sério como pretendo que este trabalho seja. Pretendo que o daemon e GUI sejam independentes, comuniquem entre si (como? ideias?) e corram, pelo menos, em Windows, consigam utilizar a porta serial e o uso de sockets seja bastante straight-forward. Já a parte da gestão da casa propriamente dita, não pretendo usar autómatos, e apesar de poder correr na mesma máquina em que o utilizador está, o objectivo é poder estar fisicamente separado do utilizador (i.e., noutra máquina) e controlado pelo GUI, possivelmente num Raspberry Pi ou algo do género.

Algumas ideias?


Não peças ajuda por PM! A tua dúvida vai ter menos atenção do que se for postada na secção correcta do fórum!

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pmg

... A minha grande dúvida é que linguagens utilizar ... em C, Python e PHP ...

Dentro destas 3 linguagens, sem ter em conta as particularidades dos interfaces com os sensores (que não faço ideia quais possam ser), escolhe Python.

Razões: desenvolvimento mais rápido; menor probabilidade de teres problemas com buffer overflow, ...

Para necessidades mais especificas de coisitas que não possas fazer em Python, a integração de Python com C é muito fácil.


What have you tried?

Não respondo a dúvidas por PM

A minha bola de cristal está para compor; deve ficar pronta para a semana.

Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

adicionando ao que o @pmg disse :

crias a aplicação de gestão em python/c, e fazes o GUI em php num servidor local a ligar por sockets

não só consegues ter uma aplicação independente do GUI (a de gestão) como te deixa possibilidades de (quem sabe mais tarde) criar uma aplicação para telemóvel.

 +-------------------+
 |        php        |
 |  GUI application  |<-+
 +-------------------+  |
                        |
 +-------------------+  |               +----------------+
 |     android       |<-+-- sockets ----|    python/c    |
 |  GUI application  |  |               |  app de gestão |
 +-------------------+  |               +----------------+
                        |
 +-------------------+  |
 |        ios        |  |
 |  GUI application  |<-+
 +-------------------+


IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
djthyrax

Eu queria evitar fazer o GUI em PHP, pois apesar de ter um deamon para receber informação sensorial e tudo o mais e outro noutra máquina para interagir com a casa, queria lançar aplicações na máquina do utilizador e interagir com diversas aplicações sem ter que instalar um HTTP server e andar a passar tudo por mais um sítio. Ponderei usar C# ou VB.NET para o GUI, pois o objectivo principal por enquanto é mesmo isto funcionar em Windows, só que não tenho experiência em desenvolvimento usando .NET.

Embora goste muito de Python, não pretendo fazer o GUI em Python, principalmente por causa da criação da interface em si (demasiado trabalho..., apesar de estar aberto a sugestões de como o fazer em Python).

Dentro destas 3 linguagens, sem ter em conta as particularidades dos interfaces com os sensores (que não faço ideia quais possam ser), escolhe Python.

Razões: desenvolvimento mais rápido; menor probabilidade de teres problemas com buffer overflow, ...

Para necessidades mais especificas de coisitas que não possas fazer em Python, a integração de Python com C é muito fácil.

Já tenho algum código de teste em Python para leitura de informação sensorial, mas tenho receio de fazer o daemon que trata dessa parte em Python por causa da performance com multi-threading... Da última vez que li sobre isso, fiquei com a ideia que a implementação oficial teria de ser muito mudada para resolver o problema do GIL.

Não peças ajuda por PM! A tua dúvida vai ter menos atenção do que se for postada na secção correcta do fórum!

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pmg

... multi-threading ...

Eh! ?!?!?!? multi-threading para gestão duma casa? (abrir persianas, fechar janelas, ligar aquecimentos, desligar luzes, ...)

Conselho #1: Keep it simple, stupid!

Se aparecer a necessidade de desligar uma luz no periodo de tempo que uma janela demora a abrir, e perdes o sinal de desligar a luz porque não usas multi-threading (mas recebes o sinal assim que a janela esteja aberta) ... a casa não explode, pois não? :)


What have you tried?

Não respondo a dúvidas por PM

A minha bola de cristal está para compor; deve ficar pronta para a semana.

Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
djthyrax

O multi-threading não é para a gestão da casa :) É para a parte que recebe informação sensorial do utilizador de bastantes sítios diferentes e processa-os em real-time.


Não peças ajuda por PM! A tua dúvida vai ter menos atenção do que se for postada na secção correcta do fórum!

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Warrior

Se nunca trabalhaste, atira-te para C#. Não acabes o curso sem mexer nisso pelo menos uma vez.

O resto faz na linguagem em que estiveres mais confortável a mexer nos sensores, assumindo que não queres fazer tudo em C#. C seria uma boa hipótese.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
djthyrax

Não estou em EI, pelo que o meu contacto com a programação não é nada de especial neste campo: dei C em Introdução à Programação (projecto final: Mastermind), seguido por Java (em NetBeans) em Programação Orientada a Objectos, Assembly x86 pouco aprofundado em Arquitectura de Computadores e Sistemas Operacionais, LADDER em Automação Industrial, MatLab/Simulink em várias cadeiras e resume-se a isso.

Em relação aos sensores, vai ser quase tudo comunicação via USB ou serial (tenho código já a funcionar para ler uns sensores de EEG usando USB em Python e os restantes vão ser ainda criados e vai-se utilizar quase de certeza comunicação serial), pelo que haver bibliotecas para mexer com USB HID devices em Windows e portas COM é algo muito positivo para o daemon.

Estou a precisar de dar uma limpeza no portátil para a semana, pelo que depois vou instalar o Visual C# Express e dar uma olhada, pelo menos para o GUI...

Obrigado pelas opiniões ;) Mas podem sempre dar mais! Quantas mais melhor. :)

Editado por djthyrax

Não peças ajuda por PM! A tua dúvida vai ter menos atenção do que se for postada na secção correcta do fórum!

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Nazgulled

A experiência que tens em Java inclui Swing ou alguma componente gráfica? Essa poderia ser uma alternativa ao C#, mas eu também sou mais apologista do C#. Pergunto isso ainda por outra razão, o C# não é assim muuuuuito diferente do Java, mudam os nomes das coisas, mudam alguns conceitos e teorias, mas no fundo vai dar ao mesmo. Na minha opinião, se sabes uma, facilmente te adaptas à outra.

Mas se a ideia do GUI é ser mesmo para Windows, então o C# é sem qualquer dúvida a escolha correcta para essa componente do projecto. Quanto ao resto, já há muito que não acompanho o fórum e tal como eu, acho que também tens andado um pouco away pelo que não sei qual tem sido a tua evolução na programação... Mas do que me lembro, tinhas bons conhecimentos de Python pelo que acho que devias apostar nisso, numa linguagem que te sentes mais à vontade.

Se a ideia é fazer um excelente-mega projecto como presumo que seja, acho que devias tentar minimizar estar a aprender coisas novas só porque sim pois isso pode vir-te a fazer perder tempo necessário para outras coisas. Se sabes Python, faz em Python. Se estiveres às turras com o C#/Java e estiveres a perder muito tempo, muda para PHP.

My 2cents.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Warrior

Concordo com o Nazgulled, arranja um equilíbrio entre o utilizar aquilo que dominas e a introdução de algo novo.

Eu não sei quais são as saídas profissionais do teu curso, mas mesmo não sendo EI, acho importante teres um primeiro contacto com C# para o mercado de trabalho. Podes acabar por nunca mais mexer naquilo, mas sendo uma tecnologia feita a pensar no Windows acabas por perceber como é que aplicações para Windows funcionam a níveis que noutras linguagens não consegues e isso é algo que convém guardares para o futuro.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
djthyrax

Java usei Swing, mas nada de especial, apenas coisas muito simples. Vou ver se encontro alguma coisa sobre C# e experimento. :)


Não peças ajuda por PM! A tua dúvida vai ter menos atenção do que se for postada na secção correcta do fórum!

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
thoga31

Eu apostava em .NET....

...porque estás habituado a utilizar .NET, suponho. Se eu me sentir mais à vontade em Brainf**k, venho aqui e digo que o recomendo :D

Porque recomendas uma LP baseada no .NET? Quais as vantagens em relação a outras que te levam a dar esse conselho?

Editado por thoga31

Knowledge is free! | Occasional Fortnite player

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pt_V1p3r

...porque estás habituado a utilizar .NET, suponho. Se eu me sentir mais à vontade em Brainf**k, venho aqui e digo que o recomendo :D

Porque recomendas uma LP baseada no .NET? Quais as vantagens em relação a outras que te levam a dar esse conselho?

Nem por isso, tanto trabalho em .NET como outras linguagens, basicamente analiso e projecto e escolho a linguagem ou linguagens mais apropriadas.

Apenas recomendei o .NET devido ao que foi dito como necessidade do projecto :

(...)Pretendo que o daemon e GUI sejam independentes, comuniquem entre si (como? ideias?) e corram, pelo menos, em Windows, consigam utilizar a porta serial e o uso de sockets seja bastante straight-forward(...)

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
thoga31

(...)Pretendo que o daemon e GUI sejam independentes, comuniquem entre si (como? ideias?) e corram, pelo menos, em Windows, consigam utilizar a porta serial e o uso de sockets seja bastante straight-forward(...)

Esta é uma dúvida a sério, não é retórica: consegue-se separar devidamente o daemon do GUI em .NET?

E agora um pormenor: "deve funcionar pelo menos em Windows". Passas para Mac OS ou para Linux e é o "já foste". E o Mono não me parece ser a solução para (parte) deste problema.

Editado por thoga31

Knowledge is free! | Occasional Fortnite player

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pt_V1p3r

Esta é uma dúvida a sério, não é retórica: consegue-se separar devidamente o daemon do GUI em .NET?

E agora um pormenor: "deve funcionar pelo menos em Windows". Passas para Mac OS ou para Linux e é o "já foste". E o Mono não me parece ser a solução para (parte) deste problema.

Em relação à tua primeira questão, sim perfeitamente, fazes um serviço para o deamon e um gui para interagir com ele sem problema.

Em relação a multiplataforma, o unico problema será MAC OS, pois para linux e perfeitamente pacifico, simplesmente usas o mono que irá funcionar na perfeicao, desde que nao uses recursos da framework 4, ate à framework 3.5 não existe problema nenhum, mas penso que a 4 ainda nao foi totalmente 'incorporada' no mono.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
KTachyon

Com um GUI web suportas (quase) tudo. Adicionas um API para permitir criar software nativo para cada uma das plataformas que vais querendo suportar nativamente. O que quer que esteja a correr no servidor é completamente independente do que quer que estejas a utilizar para desenvolver as GUIs dos terminais.


“There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.”

-- Tony Hoare

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.