/* 0 16 29 34 41 46 5254 57 62 6769 80 83 88 9395 106108 113 118120 131134 139 144146 157 160 165 170172 183186 191 196198 * 356889014766212+180125111539+0021+052048+0004+00180+3+01+0001+0002+0+0000000000+01+0004+0005+0+0000000003+01+0007+0008+0+0000000006+01+0010+0011+0+0000000009+01+9999+9999+9+0000000012+00+9999+9999+9+9999999999 * Canal2 C3 Canal1 Alarmes Canal4 SPAC2 SPBC2 SPBC1 SPBC3 SPAC4 SPAC3 SPBC4 * SPAC1 * 356889014766212 IMEI * +180125111539 DataHora da Rede * +0021 Código Interno de Software * +052048 Porta TCP/IP * +0004 Numero de Frames no Pacote (no ZeeGbee será i numero totalizadores das 4 entradas analogicas) * +00180 Tempo em Segundos entre transmissões 180 = 3 Minutos * +3 Flag de Alarme (sem uso) * +01 Foi feita a leitura com Sucesso no Itallux na hora de trasmitir * +0001 Canal2 Itallux * +0002 Canal3 Itallux * +0 Sem Uso (no ZeeGbee pode ser uma fraude) * +0000000000 Canal1 Itallux * +01 Leu com sucesso * +0004 Alarmes Itallux * +0005 SetPointALtoCanal1 Itallux * +0 Sem uso * +0000000003 Canal4 Itallux * +01 * +0007 SetPointAltoCanal2 * +0008 SetPointBaixoCanal2 * +0 * +0000000006 SetPointBaixoCanal1 * +01 * +0010 SetPointBaixoCanal3 * +0011 SetPointAltoCanal4 * +0 * +0000000009 SetPointAltoCanal3 * +01 * +9999 * +9999 * +9 * +0000000012 SetPointBaixoCanal4 * +00 * +9999 * +9999 * +9 * +9999999999 * * */ public static RemotaItallux MontaRemota(String content) { RemotaItallux ri = new RemotaItallux(); ri.IMEI = content.Substring(0, 15); ri.DataHoraUltimoAlteração = content.Substring(16, 12); ri.Canal1 = content.Substring(75, 4); ri.Canal2 = content.Substring(57, 4); ri.Canal3 = content.Substring(62, 4); ri.Canal4 = content.Substring(101, 4); ri.Alarmes = content.Substring(83, 4); ri.SetPointAltoCanal1 = content.Substring(88, 4); ri.SetPointBaixoCanal1 = content.Substring(127, 4); ri.SetPointAltoCanal2 = content.Substring(109, 4); ri.SetPointBaixoCanal2 = content.Substring(114, 4); ri.SetPointAltoCanal3 = content.Substring(153, 4); ri.SetPointBaixoCanal3 = content.Substring(135, 4); ri.SetPointAltoCanal4 = content.Substring(140, 4); ri.SetPointBaixoCanal4 = content.Substring(173, 4); return(ri); }
public static RemotaItallux SalvaStatusRemota(RemotaItallux ri) { SqlConnection conn = new SqlConnection(ConectionString); DateTime date1 = DateTime.Now; String datahora = date1.ToString(System.Globalization.CultureInfo.CreateSpecificCulture("pt-BR")); //String datahora = date1.ToString(); String sql = @"INSERT INTO [catodica].[dbo].[Remota] ( Imei ,DataHora ,FlagConf ,Canal1 ,Canal2 ,Canal3 ,Canal4 ,Alarmes ,SetPointAltoCanal1 ,SetPointBaixoCanal1 ,SetPointAltoCanal2 ,SetPointBaixoCanal2 ,SetPointAltoCanal3 ,SetPointBaixoCanal3 ,SetPointAltoCanal4 ,SetPointBaixoCanal4 )VALUES ( @Imei, @DataHora, @FlagConf, @Canal1, @Canal2, @Canal3, @Canal4, @Alarmes, @SetPointAltoCanal1, @SetPointBaixoCanal1, @SetPointAltoCanal2, @SetPointBaixoCanal2, @SetPointAltoCanal3, @SetPointBaixoCanal3, @SetPointAltoCanal4, @SetPointBaixoCanal4)"; try { //abre a conexao conn.Open(); //Cria uma objeto do tipo comando passando como parametro a string sql e a string de conexão SqlCommand cmd = new SqlCommand(sql, conn); cmd.Parameters.AddWithValue("@Imei", ri.IMEI); cmd.Parameters.AddWithValue("@DataHora", ri.DataHoraUltimoAlteração); cmd.Parameters.AddWithValue("@FlagConf", 0); cmd.Parameters.AddWithValue("@Canal1", ri.Canal1); cmd.Parameters.AddWithValue("@Canal2", ri.Canal2); cmd.Parameters.AddWithValue("@Canal3", ri.Canal3); cmd.Parameters.AddWithValue("@Canal4", ri.Canal4); cmd.Parameters.AddWithValue("@Alarmes", ri.Alarmes); cmd.Parameters.AddWithValue("@SetPointAltoCanal1", ri.SetPointAltoCanal1); cmd.Parameters.AddWithValue("@SetPointBaixoCanal1", ri.SetPointBaixoCanal1); cmd.Parameters.AddWithValue("@SetPointAltoCanal2", ri.SetPointAltoCanal2); cmd.Parameters.AddWithValue("@SetPointBaixoCanal2", ri.SetPointBaixoCanal2); cmd.Parameters.AddWithValue("@SetPointAltoCanal3", ri.SetPointAltoCanal3); cmd.Parameters.AddWithValue("@SetPointBaixoCanal3", ri.SetPointBaixoCanal3); cmd.Parameters.AddWithValue("@SetPointAltoCanal4", ri.SetPointAltoCanal4); cmd.Parameters.AddWithValue("@SetPointBaixoCanal4", ri.SetPointBaixoCanal4); cmd.ExecuteNonQuery(); } catch (SqlException ex) { StringBuilder errorMessages = new StringBuilder(); for (int i = 0; i < ex.Errors.Count; i++) { errorMessages.Append("Index #" + i + "\n" + "Message: " + ex.Errors[i].Message + "\n" + "LineNumber: " + ex.Errors[i].LineNumber + "\n" + "Source: " + ex.Errors[i].Source + "\n" + "Procedure: " + ex.Errors[i].Procedure + "\n"); } SocketServer.LogaMsg(errorMessages.ToString(), 1); return(null); } finally { conn.Close(); } return(ri); }
public static RemotaItallux ObterRemmotaPorImei(String IMEI) { RemotaItallux remota = new RemotaItallux(); SqlConnection conn = new SqlConnection(ConectionString); DateTime date1 = DateTime.Now; String datahora = date1.ToString(System.Globalization.CultureInfo.CreateSpecificCulture("pt-BR")); //string sql = "INSERT INTO leituraSIS(DataHora, FrameTotal) VALUES ('" + datahora + "','" + buffer + "')"; string sql = "SELECT * from [catodica].[dbo].[Remota] WHERE imei = '" + IMEI + "'"; try { //Cria uma objeto do tipo comando passando como parametro a string sql e a string de conexão SqlCommand cmd = new SqlCommand(sql, conn); //abre a conexao conn.Open(); //executa o comando com os parametros que foram adicionados acima //SqlDataReader rdr = comando.ExecuteNonQuery(); SqlDataReader rdr = cmd.ExecuteReader(); if (rdr.HasRows) { while (rdr.Read()) { remota.IMEI = rdr["IMEI"].ToString(); remota.FlagConf = Convert.ToInt32(rdr["FlagConf"].ToString()); remota.Canal1 = rdr["Canal1"].ToString(); remota.Canal2 = rdr["Canal2"].ToString(); remota.Canal3 = rdr["Canal3"].ToString(); remota.Canal4 = rdr["Canal4"].ToString(); remota.Alarmes = rdr["Alarmes"].ToString(); remota.SetPointAltoCanal1 = rdr["SetPointAltoCanal1"].ToString(); remota.SetPointBaixoCanal1 = rdr["SetPointBaixoCanal1"].ToString(); remota.SetPointAltoCanal2 = rdr["SetPointAltoCanal2"].ToString(); remota.SetPointBaixoCanal2 = rdr["SetPointBaixoCanal2"].ToString(); remota.SetPointAltoCanal3 = rdr["SetPointAltoCanal3"].ToString(); remota.SetPointBaixoCanal3 = rdr["SetPointBaixoCanal3"].ToString(); remota.SetPointAltoCanal4 = rdr["SetPointAltoCanal4"].ToString(); remota.SetPointBaixoCanal4 = rdr["SetPointBaixoCanal4"].ToString(); } } else { LogaMsg("Remota não encontrada na base!"); remota.FlagConf = 99; // remota nao existe } //fecha a conexao conn.Close(); } catch (SqlException ex) { StringBuilder errorMessages = new StringBuilder(); for (int i = 0; i < ex.Errors.Count; i++) { errorMessages.Append("Index #" + i + "\n" + "Message: " + ex.Errors[i].Message + "\n" + "LineNumber: " + ex.Errors[i].LineNumber + "\n" + "Source: " + ex.Errors[i].Source + "\n" + "Procedure: " + ex.Errors[i].Procedure + "\n"); } SocketServer.LogaMsg(errorMessages.ToString(), 1); return(null); } finally { conn.Close(); } return(remota); }
public static RemotaItallux AlteraStatusRemota(RemotaItallux ri) { SqlConnection conn = new SqlConnection(ConectionString); DateTime date1 = DateTime.Now; String datahora = date1.ToString(System.Globalization.CultureInfo.CreateSpecificCulture("pt-BR")); //String datahora = date1.ToString(); /* * String sql = @"UPDATE dbo.Remota SET DataHora = '@DataHora', * FlagConf = @FlagConf, * Canal1 = '@Canal1', * Canal2 = '@Canal2', * Canal3 = '@Canal3', * Canal4 = '@Canal4', * Alarmes = '@Alarmes', * SetPointAltoCanal1 = '@SetPointAltoCanal1', * SetPointBaixoCanal1 = '@SetPointBaixoCanal1', * SetPointAltoCanal2 = '@SetPointAltoCanal2', * SetPointBaixoCanal2 = '@SetPointBaixoCanal2', * SetPointAltoCanal3 = '@SetPointAltoCanal3', * SetPointBaixoCanal3 = '@SetPointBaixoCanal3', * SetPointAltoCanal4 = '@SetPointAltoCanal4', * SetPointBaixoCanal4 = '@SetPointBaixoCanal4' * WHERE Imei = '@Imei2'"; */ String sql = @"UPDATE [catodica].[dbo].[Remota] SET FlagConf = " + ri.FlagConf + "," + "Canal1 = '" + ri.Canal1 + "', " + "Canal2 = '" + ri.Canal2 + "', " + "Canal3 = '" + ri.Canal3 + "', " + "Canal4 = '" + ri.Canal4 + "', " + "Alarmes = '" + ri.Alarmes + "', " + "SetPointAltoCanal1 = '" + ri.SetPointAltoCanal1 + "', " + "SetPointBaixoCanal1 = '" + ri.SetPointBaixoCanal1 + "', " + "SetPointAltoCanal2 = '" + ri.SetPointAltoCanal2 + "', " + "SetPointBaixoCanal2 = '" + ri.SetPointBaixoCanal2 + "', " + "SetPointAltoCanal3 = '" + ri.SetPointAltoCanal3 + "', " + "SetPointBaixoCanal3 = '" + ri.SetPointBaixoCanal3 + "', " + "SetPointAltoCanal4 = '" + ri.SetPointAltoCanal4 + "', " + "SetPointBaixoCanal4 = '" + ri.SetPointBaixoCanal4 + "' " + " where Imei = '" + ri.IMEI + "'"; //sql = "UPDATE dbo.Remota SET FlagConf = 2 Where Imei = '356889014766213'"; try { //abre a conexao conn.Open(); //Cria uma objeto do tipo comando passando como parametro a string sql e a string de conexão SqlCommand cmd = new SqlCommand(sql, conn); cmd.ExecuteNonQuery(); } catch (SqlException ex) { StringBuilder errorMessages = new StringBuilder(); for (int i = 0; i < ex.Errors.Count; i++) { errorMessages.Append("Index #" + i + "\n" + "Message: " + ex.Errors[i].Message + "\n" + "LineNumber: " + ex.Errors[i].LineNumber + "\n" + "Source: " + ex.Errors[i].Source + "\n" + "Procedure: " + ex.Errors[i].Procedure + "\n"); } SocketServer.LogaMsg(errorMessages.ToString(), 1); return(null); } finally { conn.Close(); } return(ri); }
/* * public static int Main(String[] args) * { * StartListening(); * return 0; * } */ public static void TrataLeitura(Socket handler, String content) { try { IPEndPoint remoteIpEndPoint = handler.RemoteEndPoint as IPEndPoint; System.Net.IPAddress lip = System.Net.IPAddress.Parse(remoteIpEndPoint.Address.ToString()); LogaMsg("IPAddres da Remota:(" + remoteIpEndPoint.Address + ")"); //LogaMsg(" MAC Address:(" + MacAddress.GetMacFromIP(lip).ToString() + ")"); LogaMsg("Tamanho Pacote:(" + content.Length + ")"); LogaMsg("FrameTotal: --[" + content + "]--"); LogaMsg("Chamando GravaLeitura."); GravaLeitura(content); // Grava leitura no BD // verifica se é para retransmitir para a nuvem SIS if (RetransmitePorUDP == "sim") { LogaMsg("Retransmitindo para servidor UDP Buffer:" + content); ServerUDP.sendUDP(content); } LogaMsg("Chamando MontaRemota."); RemotaItallux LeituraRecebida = MontaRemota(content); LogaMsg("Chamando ObterRemmotaPorImei."); RemotaItallux rmi = ObterRemmotaPorImei(LeituraRecebida.IMEI); if (rmi.FlagConf == 99) { LogaMsg("Remota não existe na base, salvar a recebida."); LeituraRecebida.FlagConf = 0; rmi = SalvaStatusRemota(LeituraRecebida); } switch (rmi.FlagConf) { case 0: LogaMsg("Enviando Resposta Ok:1"); // respodne "1" = OK LeituraRecebida.FlagConf = 0; RemotaItallux rriC = AlteraStatusRemota(LeituraRecebida); Send(handler, "1"); break; case 1: // envia configuração // restposta para configurar String cIu; //cIu = "2+0220+0110+1023+0100+1022+0080+1020+0070\r\n"; cIu = "2"; cIu = cIu + "+" + rmi.SetPointAltoCanal1; // VCA Tensão de Entrada de 0 a 1023 cIu = cIu + "+" + rmi.SetPointBaixoCanal1; cIu = cIu + "+" + rmi.SetPointAltoCanal2; // VCC Semi célula de 0 a -1023 cIu = cIu + "+" + rmi.SetPointBaixoCanal2; cIu = cIu + "+" + rmi.SetPointAltoCanal3; // VCC Tensão de Saída de 0 a 1023 cIu = cIu + "+" + rmi.SetPointBaixoCanal3; cIu = cIu + "+" + rmi.SetPointAltoCanal4; // ICC Corrente de Saída de 0 a 102,3 cIu = cIu + "+" + rmi.SetPointBaixoCanal4 + "\r\n"; LogaMsg("Enviando Configuração: --[" + cIu + "]--"); // respodne "2" = OK e envia nova configuração Send(handler, cIu); rmi.FlagConf = 2; // configuração enviada para Remota rriC = AlteraStatusRemota(rmi); break; case 2: // compara o que chegou com o que está no Status da BAse if (LeituraRecebida.SetPointAltoCanal1 == rmi.SetPointAltoCanal1 && LeituraRecebida.SetPointBaixoCanal1 == rmi.SetPointBaixoCanal1 && LeituraRecebida.SetPointAltoCanal2 == rmi.SetPointAltoCanal2 && LeituraRecebida.SetPointBaixoCanal2 == rmi.SetPointBaixoCanal2 && LeituraRecebida.SetPointAltoCanal3 == rmi.SetPointAltoCanal3 && LeituraRecebida.SetPointBaixoCanal3 == rmi.SetPointBaixoCanal3 && LeituraRecebida.SetPointAltoCanal4 == rmi.SetPointAltoCanal4 && LeituraRecebida.SetPointBaixoCanal4 == rmi.SetPointBaixoCanal4) { LogaMsg("Configuração recebida igual a enviada anteriormente, OK!"); Send(handler, "1"); } else { LogaMsg("ERRO!!! Configuração recebida diferente da enviada anteriormente!"); Send(handler, "0"); // recebi errado } LeituraRecebida.FlagConf = 0; // configuração enviada para Remota rriC = AlteraStatusRemota(LeituraRecebida); break; } } catch { LogaMsg("ERRO no TrataLeitura..."); } }