5W2H
What
- 1. Qual o nome do seu projeto?
- Dog care system.
- 2. Qual o objetivo deste projeto?
- Implementar um sistema de software e hardware para auxiliar no cuidado de animais (cães ).
- 3. Quais os maiores desafios, na sua opinião, para se realizar este trabalho?
- Comunicação entre software e hardware.
- 4. Quais os conhecimentos básicos que devemos ter para se implementar este projeto?
- Programação ( em android ), eletrônica ( arduíno ), e conhecimentos específicos sobre veterninária.
- 5. Quais soluções similares existem no mercado?
- Pet pal: https://play.google.com/store/apps/details?id=com.appsontoast.petpal
- uPet : https://play.google.com/store/apps/details?id=co.droidforum.upet
- Tractive Pet Manager: https://play.google.com/store/apps/details?id=com.tractive.android.pet
- Pet Feed: https://play.google.com/store/apps/details?id=com.kristofercastro.petfeed&hl=pt_BR
- Obs: com exceção do Tractive Pet, nenhum oferece um sistema com hardware integrado, ou suporte para hardware.
Why
- 1. Porque é interessante desenvolver este projeto?
- Porque o projeto garante ao dono comodidade para cuidar do cão, ao mesmo tempo que garante ao animal mais qualidade de vida, visto que no mundo moderno é comum se passar longos períodos longe do animal.
- Porque o mercado “pet” vive uma expansão nacional, e global, com crescimento no Brasil de cerca de 7% no ano de 2013 ( frente a 2012 ), incluindo um crescimento de espantosos 26% no setor de serviços, de acordo com os dados da abnipet. (http://abinpet.org.br/imprensa/noticias/abinpet-divulgadados-mercado-pet-2013/).
- 2. Porque deve usar a tecnologia escolhida?
- Porque aplicativos android têm grande abrangência, uma vez que o número de smartphones é muito grande, o que facilitaria o acesso e a divulgação do sistema.
- 3. Porque usar o hardware específico?
- Usaremos o arduíno porque é relativamente barato, de fácil acesso e fácil programação.
- 4. Porque usar o sistema específico?
- Escolhemos esse sistema, pensando na comodidade do dono do animal, pois, ele terá em seu dispositivo celular o controle dos cuidados do seu animal, sem ter a necessidade de carregar mais algum dispositivo consigo e tendo a segurança de que o seu animal estará sendo bem cuidado mesmo que não esteja sempre perto do seu dono. Escolhemos esse sistema, pensando na comodidade do dono do animal, pois, ele terá em seu dispositivo celular o controle dos cuidados do seu animal, sem ter a necessidade de carregar mais algum dispositivo consigo e tendo a segurança de que o seu animal estará sendo bem cuidado mesmo que não esteja sempre perto do seu dono.
Who
- 1. Quem pode se beneficiar deste projeto?
- A utilização deste projeto visa beneficiar tanto o dono do animal, como o próprio cão, com o intuito de garantir maior conforto, comodidade e despreocupação ao dono e melhor qualidade de vida ao cãozinho.
- 2. Quem poderá operar o sistema?
- O sistema para Android será operado pelo próprio dono do cachorro, que estará introduzindo os dados necessários (nome, raça, peso, comprimento, datas prováveis de vacinação) para que o sistema execute o seu trabalho. O hardware de disponibilização de alimento e água deverá ser operado tanto por um administrador/operador, como pelo dono do cão. O operador será necessário para certas manutenções no sistema, ao qual terá uma chave de acesso ao código para executar tal ação, e o dono do animal deverá contribuir com a reposição de ração e água nos tubos, além de fazer a higienização dos mesmos.
- 3. Quem deverá participar do desenvolvimento do sistema?
- Os idealizadores do projeto, um engenheiro de software, um programador, um técnico em mecatrônica e um administrador.
Where
- 1. Onde os dados serão inseridos?
- No aplicativo Android, que fará comunicação com o arduíno.
- 2. Onde os dados serão externalizados, publicados?
- No aplicativo Android.
- 3. Onde esta aplicação poderá ser usada?
- Em um smarthphone com o aplicativo.
- 4. Onde os dados serão armazenadas?
- No próprio smartphone (memória), e, no arduíno.
- 5. Onde o software deverá ser hospedado?
- Na Play Store.
When
- 1. Em quanto tempo pretende desenvolver o sistema?
- Em três meses (protótipo).
- 2. Quais serão as fases e em quanto tempo cada uma?
- 1º - criação do projeto que envolve a analise de ideia, de mercado, de necessidades. ( 2 semanas);
- 2º- Desenvolvimento do software (3 semanas);
- 3º- Desenvolvimento do hardware (3 semanas);
- 4º- Integração do software com o hardware (2 semanas);
- 5º- Revisão do projeto e correção de erros (2 semanas);
- 3. Qual o tempo de resposta do dispositivo ou do sistema?
- O mínimo possível, de preferência da ordem de ms.
- 4. Quanto tempo para responder a uma entrada?
- O mínimo possível, de preferência da ordem de ms.
- 5. Quanto tempo para gerar a saída?
- O mínimo possível, de preferência da ordem de ms.
How
- 1. Como será dividido o desenvolvimento do sistema?
- O desenvolvimento será dividido em três partes principais: a parte de hardware, que inclui o desenvolvimento com arduíno e seus “shields”, para controlar a liberação de ração e água ao animal; uma parte de software, com o desenvolvimento de um aplicativo android para entrada e saída de dados; e, uma parte final para integração de software e hardware, além de ajustes e correção de eventuais problemas.
- 2. Como será feita a entrada de dados?
- Através do aplicativo android.
- 3. Como será feita a saída de dados?
- Também através do aplicativo android.
- 4. Descrição de funcionalidades:
- Software :
- Criação de um perfil do usuário, com seus animais, e respectivas informações.
- Estabelecer parâmetros para o controle do hardware, tais como: quantidade de comida que deverá ser disponibilizada, quantidade de água, etc.
- Criar e mostrar um calendário de vacinas e/ou consultas ao veterinário.
- Disponibilizar informações sobre o funcionamento do software, ou, comportamento do animal: quanto de comida foi consumida, o quanto de água, o quanto falta para ser disponibilizado, etc.
- Futuro (talvez ): Sistema de monitoramento gps, e, sistema de recompensa para adestramento do animal, liberando, por exemplo, um biscoito para o cão cada vez que este faz suas necessidades no local correto.
- Hardware:
- Controle da quantidade de comida/água liberada ao animal com parâmetros recebidos do aplicativo.
- Uso de sensores para verificar informações do animal tais como : a quantidade de comida/água consumida, se ele já fez suas necessidades no local, etc; e então enviar as informações ao aplicativo.
- Software :
How much
- 1. Quanto custa cada parte do sistema?
- A ideia inicial do grupo é desenvolver o sistema compatível ao Android de forma aberta (open source). Deste modo não haverá custos relacionados à criação e distribuição do software para telefone móvel, apenas em relação à aquisição do software/hardware de disponibilização de comida e água. O valor estimado para o mesmo está na faixa de U$ 180.
- 2. Quanto deverá custar todo o sistema?
- Caso o projeto e as soluções atinjam dimensões comerciais, será necessária a contratação de profissionais específicos da área, como programadores, engenheiros de software, técnicos em mecatrônica e administradores. Isso elevará o custo do produto e da execução de todo o sistema. O valor total do trabalho dos contratados será de R$ 25500,00 somado às despesas relacionadas a aquisição de material e requerimentos burocráticos, totaliza um valor de R$33000,00.
- 3. Quantas pessoas deverão ser usadas (Equipe) ?
- Atingindo dimensões comerciais, além dos idealizadores do projeto, serão necessários: um programador, responsável pelo desenvolvimento do código, um engenheiro de software para o gerenciamento do sistema, um técnico em mecatrônica para a manutenção do hardware.
- 4. Quanto custa cada profissional?
- Programador – R$ 5000,00
- Engenheiro de Software – R$ 13000,00
- Técnico em mecatrônica – R$ 4500,00
- Administrador – R$ 3000,00
- 5. Qual deverá ser o preço de aquisição do seu software para o usuário final (Valor de mercado)?
- O preço de custo, cerca de US$180,00 ( aproximadamente R$460,00 ) mais uma margem de lucro variável ( depende da pesquisa de mercado ), com 10% de lucro o preço de aquisição deverá ser cerca de R$500,00.
DFD
DER

DD
Usuário = qualquer pessoa que usa o sistema. Não há cadastramento, pois o usuário é único para cada sistema e as informações dele (nome, CPF, etc.) são pouco relevantes para o sistema em si.
Administrador = especialista animal, geralmente veterinário.
Rastreador = Hardware externo que fornece a posição geográfica de cada animal.
Microcontrolador = Hardware externo que gerencia de funções de alimentar o anime, troca d’água, premiação e etc.
CRUD Vacina = Cadastra, pesquisa, deleta e adiciona novas vacinas. Apenas é executado pelo administrador.
CRUD animal = Cadastra, pesquisa, deleta e adiciona novos animais. Apenas é executado pelo administrador.
CRUD microcontroladores = Cadastra, pesquisa, deleta e adiciona microcontroladores com seus respectivos parâmetros de funcionamento.
CadDiaVacinas = Armazena o nome de cada vacina, suas respectivas doses, se ela foi aplicada ou não e a data em que cada dose deve ser aplicada. Recebe dados de “gerar calendário de vacinas” e do “ExibirAlterarCalendario”. Envia dados para “ExibirAlterarCalendario”.
CadAnimal = Armazena informações do CodAnimal, do nome, data de nascimento, raça, peso, comprimento e cor de cada animal. Recebe dados de “Alterar CadAnimal” e “CRUD animal”. Envia dados para “Alterar CadAnimal”, “Rastrear Anima”, “AtualizarDadosEvoulucao” e “Gerar calendario de vacinas”.
CadMicrontrolador = Armazena as informações fornecidas pelo usuário sobre a forma de como deve funcionar cada microcontrolador. Recebe dados de “CRUD microcontrolador” e envia para “Controlar microcontrolador”.
Vacinas = Armazena os dados genéricos das vacinas. Somente é alterado pelo CRUD Vacina. Fornece dados para gerar calendário de vacinas.
DadosEvolucao = Armazena informações do tamanho, do peso para cada animal em um instante de tempo. Recebe dados de “AtualizarDadosEvolucao” e envia dados para “GerarGraficos”.
InfoMicrocontrolador = Armazena as informações de funcionamento de cada microcontrolador, como ligado/desligado, horário de liberação de comida e água, etc. Recebe dados de “Controlar microcontrolador”. Envia dados para “Usuário” e “Controlar microcontrolador”.
Gerar calendario vacinas = Recebe os dados genéricos de “CadVacinas”,cruza com os dados de “CadAnimal” e gera calendário para cada animal, informando a data em que deverão ser aplicadas as vacinas.
ExibirAlterarCalendario = Exibir uma interface em forma de calendário, que contém as datas em que devem ser aplicadas as vacinas de cada cachorra. Deve ser possível mostrar se a vacina já foi aplicada ou não, e oferecer de gerar calendário.
GerarGraficos = Recebe dados da informação de evolução do animal e plota um gráfico.
AtualizarDadosEvolucao = Recebe dados atualizados do animal em diferentes datas para posteriormente gerar gráfico.
Rastrear Animal = Recebe de identificação do animal e do rastreador e envia (via API-Google Earth) ao usuário.
Controlar microcontrolador = De acordo com os parâmetros fornecidos pelo usuário, controla os microcontroladores e fornece informações ao usuário sobre o funcionamento.
ExibeInfoMicrocontrolador = Recebe informações do funcionamento do microcontrolador e mostra para o usuário, para verificação.
Alterar CadAnimal = Adiciona novas raças de animais.
UML
Diagrama de Classes
Diagrama de Casos de Uso
Detalhamento dos Casos de Uso
Mídia:Detalhamento de Casos de Uso - Dog Care System.xlsx
Protótipo
- Ambiente:
- Microsoft Visual Studio 2013 Community Edition, Arduino 1.6.0, Windows 7.
- Vídeo:
- Fontes:
- Arduino
const int sensorPin1 = A0; const int sensorPin2 = A1; const int rele = 4;
char antigo ='0'; char ch = 0; char c[3];
float tensao1; float tensao2;
void setup() {
Serial.begin(9600);
pinMode(rele,OUTPUT);
}
void loop() {
tensao1 = analogRead(sensorPin1) - 1015; tensao2 = analogRead(sensorPin2) - 1015;
for (int i = 0; i < 3; i++ )
{
if (tensao1>0 && tensao2>0)
{
c[i]=86;
digitalWrite(rele,HIGH);
}
else if (tensao1>0)
{
c[i]=77;
}
else if (tensao1<0 && tensao2<0)
{
c[i] = 67;
digitalWrite(rele,LOW);
}
delay(1000);
}
if (c[0] == c[1] && c[1] == c[2] )
ch = c[0];
if(ch != antigo )
{
Serial.write(ch); antigo = ch;
}
}
- Aplicação
- include <windows.h>
- include <stdio.h>
- include <dos.h>
- include <conio.h>
- include <iostream>
- include<string>
- include<vector>
- include<iomanip>
- include<math.h>
- include <stdlib.h>
using namespace std;
char SerialGetc(HANDLE *hCom) { char rxchar; BOOL bReadRC; static DWORD iBytesRead; bReadRC = ReadFile(*hCom, &rxchar, 1, &iBytesRead, NULL); return rxchar; } void SerialPutc(HANDLE hCom, char txchar) { BOOL bWriteRC; static DWORD iBytesWritten; bWriteRC = WriteFile(hCom, &txchar, 1, &iBytesWritten, NULL); return; } char* SerialGets(HANDLE *hCom) { static char rxstring[256]; char c; int pos = 0; while (pos <= 255) { c = SerialGetc(hCom); if (c == 13) break; if (c == '\r') continue; // discard carriage return rxstring[pos++] = c; if (c == '\n') break; } rxstring[pos] = 0; return rxstring; } void SerialPuts(HANDLE *hCom, char *txstring) { BOOL bWriteRC; static DWORD iBytesWritten; bWriteRC = WriteFile(*hCom, txstring, strlen(txstring), &iBytesWritten, NULL); }
class Raca{ public: string raca; int codRaca = 0;
void CadastrarRaca(int cod) { string r;
cout << "\nNome da Raca(sem espaco) : "; cin >> r; raca = r; codRaca = cod; }
void VisualizarRaca() { cout << codRaca << " - " << raca << endl; } }; class Animal { public:
string NomeAnimal; int CodRaca; string raca; int Idade; string Porte; int peso; string DataNascimento;
void CadastrarAnimal(vector <Raca> v) { system("cls"); cout << setw(15) << "CADASTRO DO ANIMAL" << endl;
cout << "\nNome do animal: "; cin >> NomeAnimal; cout << "\nIdade do animal: "; cin >> Idade; cout << "\nPorte do animal: "; cin >> Porte; cout << "\nPeso do animal: "; cin >> peso; cout << "\nData de nascimento do animal (dia/mes/ano): "; cin >> DataNascimento; cout << "/n Selecione a raca do animal: \n";
for (int i = 0; i < v.size(); i++) v[i].VisualizarRaca();
cin >> CodRaca;
for (int i = 0; i < v.size(); i++) if (v[i].codRaca == CodRaca) { raca = v[i].raca; break; } cout << endl;
}
void VisualizarAnimal() { cout << setw(15) << "ANIMAL CADASTRADO" << endl; cout << "\nNome do animal: " << NomeAnimal << endl; cout << "\nIdade do animal: " << Idade << endl; cout << "\nPote do animal: " << Porte << endl; cout << "\nPeso do animal: " << peso << endl; cout << "\nData de nascimento do animal: " << DataNascimento << endl; cout << "\nRaca do animal : " << raca << endl;
} };
class Vacina{ public:
string nomeVacina; int codVacina = 0; int tempoVacina = 0;
void CadastrarVacina(int cod) {
cout << "\nNome da Vacina (sem espaco) :"; cin >> nomeVacina; cout << "\nIdade em que a vacina deve ser aplicada em dias: "; cin >> tempoVacina; codVacina = cod + 1; }
void VisualizarVacina() { cout << codVacina << " - " << nomeVacina << " - " << tempoVacina << " dias " << endl;
} }; class DiaVacina{ public: int Dia; int Mes; int Ano; string NomeVacina;
void CadastrarDiaVacina(int d, int m, int a, string s) { Dia = d; Mes = m; Ano = a; NomeVacina = s; }
};
class Agenda{
public:
int CodAnimal; int CodDataVacina; bool vacinou = 0; vector <DiaVacina> Calendario;
void CriarAgenda(vector <Vacina> v, string d) { Vacina backup; int menor; int ref; int dia; int ano; int mes; int D; int M; int A;
for (int i = 0; i<v.size(); i++)
{
ref = i;
menor = v[i].tempoVacina;
for (int j = i; j<v.size(); j++)
{
if (v[j].tempoVacina<menor) { menor = v[j].tempoVacina; ref = j; } } backup = v[ref]; v[ref] = v[i]; v[i] = backup; }
dia = 10 * (d[0] - 48) + (d[1] - 48);
mes = 10 * (d[3] - 48) + (d[4] - 48);
ano = 1000 * (d[6] - 48) + 100 * (d[7] - 48) + 10 * (d[8] - 48) + d[9] - 48;
for (int i = 0; i<v.size(); i++)
{
DiaVacina dv;
D = dia + v[i].tempoVacina;
M = mes + floor((D - 1) / 30);
if (D % 30 == 0) D = 30; else D = D % 30;
A = ano + floor((M - 1) / 12);
if (M % 12 == 0) M = 12; else M = M % 12;
dv.CadastrarDiaVacina(D, M, A, v[i].nomeVacina);
Calendario.push_back(dv); } }
void VisualizarAgenda() { for (int i = 0; i<Calendario.size(); i++) { cout << "\n\nDia: " << Calendario[i].Dia << " Mes: " << Calendario[i].Mes << " Ano: " << Calendario[i].Ano; cout << " Vacina : " << Calendario[i].NomeVacina << endl;
} } }; class Usuario{ public:
string NomeUsuario; string Cpf; string Email; string Cep; string Numero; string Complemento; string Telefone; vector <Raca> racas; vector <Vacina> vac; void CadastrarUsuario() { cout << setw(15) << "Cadastro" << endl; cout << "\nDigite seu e-mail: " << endl; cin >> Email;
while (Email.find("@") == -1) { cout << "Email nao e valido. Digite novamente:" << endl; cin >> Email; }
cout << "NOME: " << endl; cin >> NomeUsuario; cout << "CPF: " << endl; cin >> Cpf; cout << "CEP: " << endl; cin >> Cep; cout << "NUMERO:" << endl; cin >> Numero; cout << "COMPLEMENTO:" << endl; cin >> Complemento; cout << "TELEFONE:" << endl; cin >> Telefone; }
void AlterarDadosUsuario(){
char OP; system("cls"); cout << setw(15) << "DADOS CADASTRADOS" << endl; cout << "\nNOME: " << NomeUsuario << endl; cout << "\nCPF: " << Cpf << endl; cout << "\nCEP: " << Cep << endl; cout << "\nE-MAIL: " << Email << endl; cout << "\nNUMERO: " << Numero << endl; cout << "\nCOMPLEMENTO" << Complemento << endl; cout << "\nTELEFONE:" << Telefone << endl; cout << "\nDeseja alterar dados? (S/N em minusculo)"; cin >> OP;
if (OP == 's' || OP == 'S') CadastrarUsuario(); } }; class Administrador : public Usuario{
public:
float Salario = 0; long int TempoServico = 0; long int CodigoV = 0; long int CodigoR = 0;
void CadastrarAdministrador(){
system("cls");
CadastrarUsuario(); cout << "SALARIO: " << endl; cin >> Salario; cout << "TEMPO DE SERVICO: " << endl; cin >> TempoServico; }
void AlterarDadosAdmnistrador(){
char OP; system("cls"); cout << setw(15) << "DADOS CADASTRADOS" << endl; cout << "\nNOME: " << NomeUsuario << endl; cout << "\nCPF: " << Cpf << endl; cout << "\nCEP: " << Cep << endl; cout << "\nE-MAIL: " << Email << endl; cout << "\nNUMERO: " << Numero << endl; cout << "\nCOMPLEMENTO" << Complemento << endl; cout << "\nTELEFONE:" << Telefone << endl; cout << "\nSALARIO: " << Salario << endl; cout << "\nTEMPO DE SERVICO: " << TempoServico << endl; cout << "\nDeseja alterar dados? (S/N)"; cin >> OP;
if (OP == 's' || OP == 'S') CadastrarAdministrador(); }
void CadVacina(){
Vacina vc; vc.CadastrarVacina(CodigoV); CodigoV++; vac.push_back(vc); }
void CadRaca(){ Raca r; r.CadastrarRaca(CodigoR); CodigoR++; racas.push_back(r); }
void exibirVacina() { for (int i = 0; i<vac.size(); i++) { vac[i].VisualizarVacina(); } system("pause"); }
void exibirRaca() { for (int i = 0; i<racas.size(); i++) { racas[i].VisualizarRaca(); } system("pause"); } void Menu() { char OP = '0';
while (OP != '6') {
system("cls");
cout << setw(15) << "MENU" << endl;
cout << "\nDigite a opcao desejada: " << endl;
cout << "\n1->Atualizar Dados Administrador" << endl;
cout << "\n2->Cadastrar Vacina" << endl;
cout << "\n3->Cadastrar Raca" << endl;
cout << "\n4->Visualizar Vacina" << endl;
cout << "\n5->Visualizar Raca" << endl;
cout << "\n6->Sair" << endl;
OP = '0';
while (OP<49 || OP>54) cin >> OP;
switch (OP) { case '1': AlterarDadosAdmnistrador(); break;
case '2': CadVacina(); break;
case '3': CadRaca(); break;
case '4': exibirVacina(); break;
case '5': exibirRaca(); break;
default: break;
} } } }; class Cliente : public Usuario { public: vector <Animal> animais; vector <Agenda> agendas; int num = -1; void ReceberVetores(vector <Vacina> v, vector <Raca> r) { vac = v; racas = r; } void CadAnimal() { Animal A; Agenda ag; cout << "\n Cadastro de Novo Animal: " << endl; A.CadastrarAnimal(racas); animais.push_back(A); ag.CriarAgenda(vac, A.DataNascimento); agendas.push_back(ag); } void VisualizarAnimais() { system("cls");
cout << "\n Animais Cadastrados: \n\n"; for (int i = 0; i < animais.size(); i++) { cout << endl << i + 1 << ": " << endl; animais[i].VisualizarAnimal(); } system("PAUSE"); } void DeletarAnimal() { VisualizarAnimais(); cout << "\n Selecione numero do animal para deletar: "; cin >> num;
animais.erase(animais.begin() + num - 1); agendas.erase(agendas.begin() + num - 1); } void VisualizarAgendas() { VisualizarAnimais(); cout << "\n Selecione o numero do animal do qual se quer ver a agenda de vacinas: "; cin >> num; agendas[num - 1].VisualizarAgenda(); system("PAUSE"); } void VisualizarCliente() { system("cls"); cout << "\n Cliente: \n\n"; cout << "Nome: " << NomeUsuario << endl; cout << "Cpf: " << Cpf << endl; cout << "Email: " << Email << endl; cout << "Cep: " << Cep << endl; cout << "Numero: " << Numero << endl; cout << "Complemento: " << Complemento << endl; cout << "Telefone: " << Telefone << endl; system("PAUSE"); }
};
int main(int argc, char *argv[])
{
char ch = '0';
char antigo = '0';
char OP = 0;
char op;
Cliente c;
Administrador a;
int m = 0; int n = 0; int count = 0;
DCB dcb; HANDLE hCom; BOOL fSuccess; LPCWSTR LpcCommPort = L"COM4"; int i = 0; char t = '1'; hCom = CreateFile(LpcCommPort, GENERIC_READ | GENERIC_WRITE, 0, // must be opened with exclusive-access NULL, // no security attributes OPEN_EXISTING, // must use OPEN_EXISTING 0, // not overlapped I/O NULL // hTemplate must be NULL for comm devices ); if (hCom == INVALID_HANDLE_VALUE) { // Handle the error. printf("CreateFile failed with error %d.\n", GetLastError()); return (1); } // Build on the current configuration, and skip setting the size // of the input and output buffers with SetupComm. fSuccess = GetCommState(hCom, &dcb); if (!fSuccess) { // Handle the error. printf("GetCommState failed with error %d.\n", GetLastError()); return (2); } // Fill in DCB: 57,600 bps, 8 data bits, no parity, and 1 stop bit. dcb.BaudRate = CBR_9600; // set the baud rate dcb.ByteSize = 8; // data size, xmit, and rcv dcb.Parity = NOPARITY; // no parity bit dcb.StopBits = ONESTOPBIT; // one stop bit fSuccess = SetCommState(hCom, &dcb); // if (!fSuccess) { // Handle the error. printf("SetCommState failed with error %d.\n", GetLastError()); return (3); } printf("Serial port %s successfully reconfigured.\n", LpcCommPort);
//SerialPuts(&hCom, "This is a text\n\nAnother line!\n");
// comece programa aqui:
while (OP != 'S' && OP != 's') { system("cls");
cout << "Deseja logar como cliente ou administrador? Ou Sair? (C/A/S)\n"; cin >> OP;
if (OP == 'c' || OP == 'C') { if (m == 0) { system("cls"); c.CadastrarUsuario(); m++; }
c.ReceberVetores(a.vac, a.racas);
op = '0';
while (op != '8') { system("cls"); cout << "\n \n Digite a opcao desejada: " << endl; cout << "1 - Cadastrar novo animal: " << endl; cout << "2 - Visualizar animais cadastrados" << endl; cout << "3 - Deletar animal cadastrado" << endl; cout << "4 - Visualizar agenda de vacinas de um animal" << endl; cout << "5 - Visualizar dados do cliente cadastrado" << endl; cout << "6 - Alterar dados do cliente" << endl; cout << "7 - Visualizar microcontrolador" << endl; cout << "8 - Sair" << endl;
cin >> op;
while (op<49 || op> 56) cin >> op;
switch (op)
{
case '1':
c.CadAnimal();
break;
case '2': c.VisualizarAnimais(); break;
case '3': c.DeletarAnimal(); break;
case '4': c.VisualizarAgendas(); break;
case '5': c.VisualizarCliente(); break;
case '6': c.VisualizarCliente(); c.CadastrarUsuario(); break;
case '7': {
ch = SerialGetc(&hCom);
if (ch == 'C') cout << "Cheio" << endl; else if (ch == 'M') cout << "Medio" << endl; else if (ch == 'V') cout << "Vazio" << endl;
Sleep(1000);
system("PAUSE"); break; }
default:
break;
}
}
} if (OP == 'a' || OP == 'A') { if (n == 0) { a.CadastrarAdministrador(); n++; }
a.Menu(); } else if (OP != 'S' && OP != 's') cout << "Voce não digitou uma opcao valida. Digite novamente: "; }
//SerialPuts(&hCom, "Fim!!\n\nMaravilha!!\n");
//SerialPutc(hCom,'1');
//printf ("Read value: %c\n", SerialGetc(&hCom));
CloseHandle(hCom);
system("PAUSE");
return (0);
}


