コード例 #1
0
        /// <summary>
        /// Общая инициализация класса
        /// </summary>
        public void Init(string port)
        {
            _port = new SerialPort(port, 115200, Parity.None, 8, StopBits.One);

            _RetryReadCount        = 10;                //Количество повторов при ошибках чтения
            _RetryWriteCount       = 10;                //Количество повторов при ошибках записи
            _RetryHiddenWriteCount = 10;                //Количество повторов при ошибках скрытой записи
            _RetryGetStatusCount   = 100;               //Количество повторов запросов в ожидании статуса 'Ready'

            _port.Handshake = Handshake.None;
            _port.Parity    = Parity.None;
            _port.StopBits  = StopBits.Two;
            _port.DataBits  = 8;

            _port.DtrEnable       = true;
            _port.RtsEnable       = true;
            _port.ReadBufferSize  = 0x4000;
            _port.WriteBufferSize = 0x4000;


            _port.ReadTimeout  = 500;                           //Таймаут чтения данных из порта
            _port.WriteTimeout = 5000;

            _port.Encoding = Encoding.ASCII;
            //количество принятых байт, для срабатывания события DataReceived
            //_port.ReceivedBytesThreshold = 1;

            //_port.ParityReplace = 0xfe;
            try
            {
                _port.Open();
                _port.BreakState = false;
                Thread.Sleep(_cTimeReadPortInit);
            }
            catch (UnauthorizedAccessException ex)
            {
                throw new RomulatorException("Ошибка при открытии порта", ex);
            }


            RomulatorVersion ver = GetVersion();

            if (ver >= _SWver)                          //версия протокола эмулятора больше или равна версии ПО
            {
                _HWver = ver;
            }
            else
            {
                throw new RomulatorException("Версия протокола эмулятора выше чем версия протокола ПО, пожалуйста обновитесь.");
            }
            _log.WriteEntry(this, "Инициализация Romulator прошла успешно. Версия аппаратной части: " + _HWver);
        }
コード例 #2
0
ファイル: RomulatorTest.cs プロジェクト: vc/from-editor
        public void GetVersionTest()
        {
            RomulatorVersion expected = new RomulatorVersion(new byte[] { 1, 0, 0 });
            RomulatorVersion actual = null;

            try
            {
                actual = _target.GetVersion();
            }
            catch (RomulatorException ex)
            {
                _log.WriteEntry(this, ex);
            }

            _log.WriteEntry(this, "Версия Romulator: " + actual.ToString());

            Assert.AreEqual(actual >= expected, true);
        }
コード例 #3
0
        private RomulatorVersion _HWver;                                                      //версия протокола эмулятор

        /// <summary>
        /// Общая инициализация класса
        /// </summary>
        private void Init()
        {
            _RetryReadCount        = 10;                //Количество повторов при ошибках чтения
            _RetryWriteCount       = 10;                //Количество повторов при ошибках записи
            _RetryHiddenWriteCount = 10;                //Количество повторов при ошибках скрытой записи
            _RetryGetStatusCount   = 1000;              //Количество повторов запросов в ожидании статуса 'Ready'

            _Port.ReadTimeout = 5000;                   //Таймаут чтения данных из порта
            _Port.Open();
            if (GetVersion() >= _SWver)                 //версия протокола эмулятора больше или равна версии ПО
            {
                _HWver = GetVersion();
            }
            else
            {
                throw new Exception("Версия протокола эмулятора выше чем версия протокола ПО, пожалуйста обновитесь.");
            }
        }
コード例 #4
0
        /// <summary>
        /// Получить версию ПО эмулятора
        /// </summary>
        /// <returns>Версия в формате #(XXh).(XXh),ID(XXh)</returns>
        public RomulatorVersion GetVersion()
        {
            RomulatorVersion v = null;

            GetStatus(true);

            byte[] vArr;
            int    i = 0;

            do
            {
                vArr = Request(new byte[] { _cRomVersion, _cRomVersion });
            } while (vArr.Length != 3 && i-- < _RetryGetStatusCount);

            //инициализации класса данными прочитанными из порта, размером 3 байта
            v = new RomulatorVersion(vArr);
            return(v);
        }
コード例 #5
0
        /// <summary>
        /// Получить версию ПО эмулятора
        /// </summary>
        /// <returns>Версия в формате #(XXh).(XXh),ID(XXh)</returns>
        public RomulatorVersion GetVersion()
        {
            RomulatorVersion v = null;

            //жду статуса Ready
            if (!this.GetStatus(true))
            {
                throw new TimeoutException("Время ожидания статуса 'Ready' истекло");
            }

            //формаирование массива запроса и отсылка в порт
            byte[] arr = new byte[] { _cVersion, _cVersion };
            //*** ЗАПРОС ***
            this.Write(arr);

            //попытка инициализации класса данными прочитанными из порта, размером 3 байта
            v = new RomulatorVersion(Read(3));
            return(v);
        }
コード例 #6
0
ファイル: RomulatorBase.cs プロジェクト: vc/from-editor
        /// <summary>
        /// Общая инициализация класса
        /// </summary>
        public void Init(string port)
        {
            _port = new SerialPort(port, 115200, Parity.None, 8, StopBits.One);

            _RetryReadCount = 10;			//Количество повторов при ошибках чтения
            _RetryWriteCount = 10;			//Количество повторов при ошибках записи
            _RetryHiddenWriteCount = 10;	//Количество повторов при ошибках скрытой записи
            _RetryGetStatusCount = 100;		//Количество повторов запросов в ожидании статуса 'Ready'

            _port.Handshake = Handshake.None;
            _port.Parity = Parity.None;
            _port.StopBits = StopBits.Two;
            _port.DataBits = 8;

            _port.DtrEnable = true;
            _port.RtsEnable = true;
            _port.ReadBufferSize = 0x4000;
            _port.WriteBufferSize = 0x4000;

            _port.ReadTimeout = 500;		//Таймаут чтения данных из порта
            _port.WriteTimeout = 5000;

            _port.Encoding = Encoding.ASCII;
            //количество принятых байт, для срабатывания события DataReceived
            //_port.ReceivedBytesThreshold = 1;

            //_port.ParityReplace = 0xfe;
            try
            {
                _port.Open();
                _port.BreakState = false;
                Thread.Sleep(_cTimeReadPortInit);
            }
            catch (UnauthorizedAccessException ex)
            {
                throw new RomulatorException("Ошибка при открытии порта", ex);
            }

            RomulatorVersion ver = GetVersion();
            if (ver >= _SWver)		//версия протокола эмулятора больше или равна версии ПО
                _HWver = ver;
            else
                throw new RomulatorException("Версия протокола эмулятора выше чем версия протокола ПО, пожалуйста обновитесь.");
            _log.WriteEntry(this, "Инициализация Romulator прошла успешно. Версия аппаратной части: " + _HWver);
        }
コード例 #7
0
ファイル: RomulatorBase.cs プロジェクト: vc/from-editor
        /// <summary>
        /// Получить версию ПО эмулятора
        /// </summary>
        /// <returns>Версия в формате #(XXh).(XXh),ID(XXh)</returns>
        public RomulatorVersion GetVersion()
        {
            RomulatorVersion v = null;

            GetStatus(true);

            byte[] vArr;
            int i = 0;
            do
            {
                vArr = Request(new byte[] { _cRomVersion, _cRomVersion });
            } while (vArr.Length != 3 && i-- < _RetryGetStatusCount);

            //инициализации класса данными прочитанными из порта, размером 3 байта
            v = new RomulatorVersion(vArr);
            return v;
        }
コード例 #8
0
ファイル: FormOptions.cs プロジェクト: vc/from-editor
 /// <summary>
 /// Попытка инициализации эмулятора
 /// </summary>
 /// <param name="port"></param>
 void ConnectEmulator(string port)
 {
     _emulatorVer = null;
     //Класса эмулятор не существует и выбран COM порт
     if (_emulator == null && port != "")
         try
         {
             _emulator = new Romulator(port);
             //initEmulatorFlag = true;
             _emulatorVer = _emulator.GetVersion();
             StatusLabel(StatusCommunications.Found, lblStatusEmulator);
         }
         catch (Exception ex)
         {
             StatusLabel(ex.Message, Color.Red, lblStatusEmulator);
         }
     //эмулятор уже был создан но порт не выбран. Переоткрываем
     else if (_emulator != null && port == "")
         try
         {
             _emulatorVer = _emulator.GetVersion();
             StatusLabel(StatusCommunications.Found, lblStatusEmulator);
             string emuPort = _emulator.Port.ToUpper();
             foreach (var i in cbEmulatorPort.Items)
             {
                 if (i.ToString().CompareTo(emuPort) == 0)
                 {
                     cbEmulatorPort.SelectedItem = i;
                     break;
                 }
             }
         }
         catch (Exception ex)
         {
             StatusLabel(ex.Message, Color.Red, lblStatusEmulator);
         }
     else
         StatusLabel(StatusCommunications.Default, lblStatusEmulator);
 }
コード例 #9
0
ファイル: FRomulator.cs プロジェクト: vc/from-editor
        /// <summary>
        /// Общая инициализация класса
        /// </summary>
        private void Init()
        {
            _RetryReadCount = 10;			//Количество повторов при ошибках чтения
            _RetryWriteCount = 10;			//Количество повторов при ошибках записи
            _RetryHiddenWriteCount = 10;	//Количество повторов при ошибках скрытой записи
            _RetryGetStatusCount = 1000;	//Количество повторов запросов в ожидании статуса 'Ready'

            _Port.ReadTimeout = 5000;		//Таймаут чтения данных из порта
            _Port.Open();
            if (GetVersion() >= _SWver)		//версия протокола эмулятора больше или равна версии ПО
                _HWver = GetVersion();
            else
                throw new Exception("Версия протокола эмулятора выше чем версия протокола ПО, пожалуйста обновитесь.");
        }
コード例 #10
0
ファイル: FRomulator.cs プロジェクト: vc/from-editor
        /// <summary>
        /// Получить версию ПО эмулятора
        /// </summary>
        /// <returns>Версия в формате #(XXh).(XXh),ID(XXh)</returns>
        public RomulatorVersion GetVersion()
        {
            RomulatorVersion v = null;

            //жду статуса Ready
            if (!this.GetStatus(true))
                throw new TimeoutException("Время ожидания статуса 'Ready' истекло");

            //формаирование массива запроса и отсылка в порт
            byte[] arr = new byte[] { _cVersion, _cVersion };
            //*** ЗАПРОС ***
            this.Write(arr);

            //попытка инициализации класса данными прочитанными из порта, размером 3 байта
            v = new RomulatorVersion(Read(3));
            return v;
        }