// Подключаем библиотеку программного UART
#include <SoftwareSerial.h>
char num=1;

// Определяем вывод RX1
#define RX1 8
// Определяем вывод TX1
#define TX1 9

// Определяем вывод RX2
#define RX2 6
// Определяем вывод TX2
#define TX2 7

// Определяем вывод RX3
#define RX3 3
// Определяем вывод TX3
#define TX3 4


// Создаём объект программного UART
SoftwareSerial mySerial(RX1, TX1);

// Создаём объект программного UART
SoftwareSerial mySerial1(RX2, TX2);

// Создаём объект программного UART
SoftwareSerial mySerial2(RX3, TX3);

void setup(){
  Serial.begin(9600); // открываем последовательный порт 
  //для мониторинга действий в программе
   // ждём, пока не откроется монитор последовательного порта
  // для того, чтобы отследить все события в программе
  while (!Serial) {
  }
   // открываем Serial-соединение cо вторым компьютером
  mySerial.begin(9600); //пользователь 1
  // открываем Serial-соединение cо тертьим компьютером
  mySerial1.begin(9600); //пользователь 2
  // открываем Serial-соединение cо четвертым компьютером
  mySerial2.begin(9600); //пользователь 3
}

void loop(){
  // считываем данные с компьютера и осылаем их всем компьютерам
  serialPC1read();
  // считываем данные с компьютера отправителя и осылаем их компьютеру
  serialPC2read();
  
}

void serialPC2read(){
  if (Serial.available() > 0) {
    // если приходят данные на отправку
    while (Serial.available() > 0) {
      // отправляем данные выбранному компьютеру:
      
      mySerial.write("нормер,",Serial.read());
      mySerial1.write("нормер,",Serial.read());
      mySerial2.write("нормер,",Serial.read());
    }
  }
}

void serialPC1read(){
    if (mySerial.available() > 0) {
      // если приходят данные c компьютера1
      if (mySerial.read()==2){
        //если ардесат пользователь 2
        while (mySerial.available() > 0) {
          // отправляем их серверу
          Serial.write(mySerial.read());
          // отправляем их пользователю 2
          mySerial1.write(mySerial.read());
        }
     }
     if (mySerial.read()==3){
        //если ардесат пользователь 3
        while (mySerial.available() > 0) {
          // отправляем их серверу
          Serial.write(mySerial.read());
          // отправляем их пользователю 3
          mySerial2.write(mySerial.read());
        }
     }
     if (mySerial.read()==4){
        //если ардесат сервер
        while (mySerial.available() > 0) {
          // отправляем их серверу
          Serial.write(mySerial.read());
        }
     }
    }
if (mySerial1.available() > 0) {
      // если приходят данные c компьютера2
      
      if (mySerial1.read()==1){
        //если ардесат пользователь 1
        while (mySerial1.available() > 0) {
          // отправляем их серверу
          Serial.write(mySerial.read());
          // отправляем их пользователю 1
          mySerial.write(mySerial1.read());
        }
     }
     if (mySerial1.read()==3){
        //если ардесат пользователь 3
        while (mySerial1.available() > 0) {
          // отправляем их серверу
          Serial.write(mySerial.read());
          // отправляем их пользователю 3
          mySerial2.write(mySerial.read());
        }
     }
     if (mySerial1.read()==4){
        //если ардесат сервер
        while (mySerial1.available() > 0) {
          // отправляем их серверу
          Serial.write(mySerial.read());
        }
     }
    }
    
}
