Partage
  • Partager sur Facebook
  • Partager sur Twitter

Débutant problème if else

    16 mai 2018 à 18:05:05

    Bonjour a tous, je possède un programme envoyant des données dans  un arduino. Il écrit chaque seconde un "rapport" des données envoyées dans l'arduino. On a actuellement une console affichant cela, les données entre parenthèses étant celles qui nous intéressent : 
    17:57:27 - NBA           Visitors (1610612744) : 118 - Home (1610612740) : 92

    Ces données correspondent a un identifiant d'équipe NBA (chaque équipe en ayant un caractéristique).

    Malgré de nombreuses tentatives nous n'arrivons pas a réussir a afficher quelque chose de la forme suivante : 

    17:57:27 - NBA           Visitors (Golden State Warriors) : 118 - Home (New Orleans Pelicans) : 92

    Pour cela on peut trouver sur ce lien https://github.com/bttmly/nba/blob/master/data/teams.json les noms d'équipes liées a chaque teamID. 

    Nous voudrions quelque chose de type 

    If TeamID == xxxxx
    TeamName = blabla

    Pour ensuite afficher le teamName dans la console entre parenthèses. 

    Il y a deux noms d'équipes a afficher : l'equipe home et visitors.

    Quelqu'un pourrait-il nous donner des pistes sur comment intégrer une bibliothèque de données contenant les teamNames s'il-vous-plaît ?

    Merci d'avance pour votre aide.

    Voici notre code actuellement : 

    using Newtonsoft.Json.Linq;
    using System;
    using System.IO.Ports;
    
    namespace Compteur_abonnes
    {
        class Program
        {
            struct MatchScore
            {
                public int vScore;
                public int hScore;
            };
    
            struct MatchTri
            {
                public int vTri;
                public int hTri;
            };
    
    
            static SerialPort comPort = new SerialPort();
    
            static string comPortName = string.Empty;
            static string gameId = string.Empty;
            static string matchDate = string.Empty;
            string vTeamName;
            string hTeamName;
    
            static void Main(string[] args)
            {
                try
                {
                    System.IO.StreamReader file = new System.IO.StreamReader("Settings.txt");
    
                    comPortName = ReadFileLineExcludingComment(file);
                    gameId = ReadFileLineExcludingComment(file);
                    matchDate = ReadFileLineExcludingComment(file);
    
                    file.Close();
                }
                catch(Exception e)
                {
                    Console.WriteLine("Fichier Settings invalide");
                    Console.WriteLine(e.ToString());
                    Console.Read();
                    Environment.Exit(0);
                }
    
                if(comPortName == string.Empty || gameId == string.Empty || matchDate == string.Empty)
                {
                    Console.WriteLine("Paramètre(s) du fichier Settings invalide(s)");
                    Console.Read();
                    Environment.Exit(0);
                }
    
                comPort.BaudRate = 115200;
                comPort.PortName = comPortName;
    
                try
                {
                    comPort.Open();
                }
                catch(Exception e)
                {
                    Console.WriteLine("Port COM invalide (" + comPortName + ")");
                    Console.WriteLine(e.ToString());
                    Console.Read();
                    Environment.Exit(0);
                }
    
                System.Threading.Thread.Sleep(1000);
    
                while(true)
                {
                    MatchScore matchScore = new MatchScore();
                    MatchTri matchTri = new MatchTri();
                    byte media = 1;
    
                    try
                    {
                        matchScore = GetNbaScores(matchDate, gameId);
                        matchTri = GetNbaTri(matchDate, gameId);
    
                    }
                    catch(Exception e)
                    {
                        Console.WriteLine("Erreur de lecture des données NBA");
                        Console.WriteLine(e.ToString());
                        Console.Read();
                        Environment.Exit(0);
                    }
    
                    Console.WriteLine(DateTime.Now.ToString("HH:mm:ss") + " - NBA\t\t Visitors (" + matchTri.vTri + ") : " + matchScore.vScore + " - Home (" + matchTri.hTri + ") : " + matchScore.hScore);
                    
                    try
                    {
                        RefreshCounter(matchScore);
                    }
                    catch(Exception e)
                    {
                        Console.WriteLine("Erreur de traitement ou d'envoi des données sur le port " + comPortName);
                        Console.WriteLine(e.ToString());
                        Console.Read();
                        Environment.Exit(0);
                    }
    
                    System.Threading.Thread.Sleep(2000);
                }
                
                comPort.Close();
            }
    
            static string ReadFileLineExcludingComment(System.IO.StreamReader file)
            {
                bool state = false;
    
                string line = string.Empty;
    
                while(!state)
                {
                    line = file.ReadLine().Trim(' ');
    
                    if(line != string.Empty)
                    {
                        if (line[0] != '#')
                        {
                            state = true;
                        }
                    }
                }
    
                return line;
            }
    
            static void RefreshCounter(MatchScore matchScore)
            {
                byte[] bytesToSend = new byte[6];
                int valueToSend = matchScore.vScore * 1000 + matchScore.hScore;
                byte[] scoresBytes = BitConverter.GetBytes(valueToSend);
    
                for (int i = 0; i < 4; i++)
                {
                    bytesToSend[i] = scoresBytes[i];
                }
    
                comPort.Write(bytesToSend, 0, 4);
            }
    
            static MatchScore GetNbaScores(string matchDate, string gameId)
            {
                System.Net.WebClient wb = new System.Net.WebClient();
    
                string jsonDatas = wb.DownloadString("http://data.nba.net/prod/v1/" + matchDate + "/" + gameId + "_boxscore.json");
    
                dynamic response = JObject.Parse(jsonDatas);
    
                string NbavscoreString = response.basicGameData.vTeam.score;
                string NbahscoreString = response.basicGameData.hTeam.score;
    
                MatchScore matchScore;
                matchScore.vScore = Int32.Parse(NbavscoreString);
                matchScore.hScore = Int32.Parse(NbahscoreString);
    
                return matchScore;
            }
    
            static MatchTri GetNbaTri(string matchDate, string gameId)
            {
                System.Net.WebClient wb = new System.Net.WebClient();
    
                string jsonDatas = wb.DownloadString("http://data.nba.net/prod/v1/" + matchDate + "/" + gameId + "_boxscore.json");
    
                dynamic response = JObject.Parse(jsonDatas);
    
                string NbavTriString = response.basicGameData.vTeam.teamId;
                string NbahTriString = response.basicGameData.hTeam.teamId;
    
                MatchTri matchTri;
                matchTri.vTri = Int32.Parse(NbavTriString);
                matchTri.hTri = Int32.Parse(NbahTriString);
    
                return matchTri;
            }
        }
    }
    

    -
    Edité par PierreAlexandre5 27 mai 2018 à 11:33:15

    • Partager sur Facebook
    • Partager sur Twitter
      16 mai 2018 à 18:52:05

      Bonjour,

      Manque de recherche

      La question que vous posez démontre un manque de recherche évident. Internet et ce forum fourmillent de ressources répondant à votre besoin.

      Je vous invite à effectuer de vraies recherches qui sont à la base d'un bon apprentissage… Par exemple "C# json parse" ...

      Pas d'urgence dans le forum d'OC

      Vous êtes sur un forum d'entraide, pas sur un site de service. Ici les intervenants vous répondent quand ils le veulent, s'ils le veulent, sans aucune obligation. Aussi, ce genre d'indications rendent le forum moins agréable à utiliser et moins équitable. De ce fait, les mentions de quelconque "urgence" ne sont pas admises sur ce forum. La meilleure façon d'avoir de l'aide rapidement ici est de fournir toutes les informations nécessaires et de les présenter correctement. N'hésitez pas à lire les règles épinglés en haut des sections du forum, elles indiquent généralement ce qui est nécessaire.

      • Partager sur Facebook
      • Partager sur Twitter
      Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
        16 mai 2018 à 19:38:49

        Désolé du dérangement. Le c# n'étant pas vraiment a notre niveau nous avons tenté de remplacer le nom des équipes par quelque chose de plus simple étant néanmoins moins esthétique (a notre niveau le c# n'est pas encore enseigné), nous avons décidé de remplacer les données entre parenthèses par le "TriCode" des équipes (exemple : LAK pour Lakers...). Cependant ces valeurs n'étant pas des chiffres, l'erreur suivante est affichée. Un moyen simple de la régler est il possible ? 
        Erreur de lecture des données NBA
        System.FormatException: Le format de la chaîne d'entrée est incorrect.
           à System.Number.StringToNumber(String str, NumberStyles options, NumberBuffer& number, NumberFormatInfo info, Boolean parseDecimal)
           à System.Number.ParseInt32(String s, NumberStyles style, NumberFormatInfo info)
           à System.Int32.Parse(String s)
           à Compteur_abonnes.Program.GetNbaTri(String matchDate, String gameId) dans C:\Users\pa758\Desktop\PC\Compteur_abonnes\Compteur_abonnes\Program.cs:ligne 180
           à Compteur_abonnes.Program.Main(String[] args) dans C:\Users\pa758\Desktop\PC\Compteur_abonnes\Compteur_abonnes\Program.cs:ligne 83
        
        Désolé encore si cela témoigne d'un "manque d'investissement" mais notre projet repose sur un étude du c++ et non du sharp, ce qui explique notre manque de connaissances et notre difficulté à maîtriser ce langage.

        -
        Edité par PierreAlexandre5 27 mai 2018 à 11:34:18

        • Partager sur Facebook
        • Partager sur Twitter
          22 juin 2018 à 15:47:24

          Utilisation d'Expression Régulière pour découper la chaine de caractère en entré pour séparer les différentes parties.

          Avoir un Dictionnaire (https://msdn.microsoft.com/fr-fr/library/xfhwa508(v=vs.110).aspx) de type Dictionary<int,string> si on recherche depuis un nombre ou un Dictionary<string,string> si on recherche depuis un "TriCode".

          Dans ce dictionnaire, il y a la correspondance entre l'information en entré et ce qui doit le remplacer en sortie.

          Pour construire ce dictionnaire, vous pouvez prendre le fichier JSON que vous donnez en référence, vous le désérialisez pour avoir un tableau, vous le parcourez pour remplir le dictionnaire, et pif paf pouf, c'est dans la boite.

          • Partager sur Facebook
          • Partager sur Twitter
          Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.

          Débutant problème if else

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown