private void returnData(Paquet paquetRetour) { string paquetString = ""; foreach (byte b in paquetRetour.getPaquet()) { paquetString += (Convert.ToString(b) + ","); } Transport.ERs_TO_ET_File.WaitOne(); File.AppendAllText("R_ecr.txt", paquetString + "\n"); Transport.ERs_TO_ET_File.Release(); }
private byte?receiveData(Paquet paquetRecu) { Random rnd = new Random(); //Ne retourne rien si l'adresse source est un multiple de 15 if ((paquetRecu.getSrc() % 15) == 0) { writeLog(".....simulation de non reponse....."); Thread.Sleep(1500); //simulation de non-reponse return(null); } //Acquitement négatif else if ((int)((paquetRecu.getType() >> 1) & 0x07) == rnd.Next(0, 7)) { writeLog("paquet de données invalide reçu de " + paquetRecu.getSrc() + "\t\t" + DateTime.Now); return((byte?)((paquetRecu.getType() & 0xE0) | 0x09)); } //Acquitement Positif else { //S'il n'y a qu'une seule trame / dernier paquet if ((paquetRecu.getType() & 0x10) == 0) { trameComplete += (Encoding.ASCII.GetString(paquetRecu.getPaquet(), 2, 128)); //Fin de la trame writeData(trameComplete); trameComplete = ""; writeLog("Paquet de données reçu #" + (paquetRecu.getType() >> 5) + ". Prochain: #" + ((paquetRecu.getType() & 0x0E) >> 1) + ". source: " + paquetRecu.getSrc() + "\t\t" + DateTime.Now); return((byte?)((paquetRecu.getType() & 0xE0) | 0x01)); } //Sinon paquet d'une suite trameComplete += (Encoding.ASCII.GetString(paquetRecu.getPaquet(), 2, 128)); writeLog("Paquet de données reçu #" + (paquetRecu.getType() >> 5) + ". Prochain: #" + ((paquetRecu.getType() & 0x0E) >> 1) + ". source: " + paquetRecu.getSrc() + "\t\t" + DateTime.Now); return((byte?)((paquetRecu.getType() & (0x0E << 4)) | 0x01)); } }