Exemplo n.º 1
0
        //Принимает данные с камеры и запускает обработку
        public void AcceptData(object socket)
        {
            lock (_inhurtLocker) {
                _inhurtHandled++;
            }
            try {
                var acceptSocket = (Socket)socket;
                //Принимаем номер камеры
                var cameraNumberByte = new byte[4];
                acceptSocket.Receive(cameraNumberByte);
                var cameraNumber = BitConverter.ToInt32(cameraNumberByte, 0);

                //Принимаем номер автомобиля
                var autoNumByte = new byte[4];
                acceptSocket.Receive(autoNumByte);
                var autoNum = BitConverter.ToInt32(autoNumByte, 0);

                //Принимаем скорость нарушителя
                var speedByte = new byte[4];
                acceptSocket.Receive(speedByte);
                var speed = BitConverter.ToInt32(speedByte, 0);

                //Принимаем размер фотографии и саму фотографию
                var photoLengthByte = new byte[4];
                acceptSocket.Receive(photoLengthByte);
                var photolenght = BitConverter.ToInt32(photoLengthByte, 0);
                var photo       = new byte[photolenght];
                var offset      = 0;
                while (offset < photolenght)
                {
                    var bufferSizeByte = new byte[4];
                    acceptSocket.Receive(bufferSizeByte);
                    var bufferSize = BitConverter.ToInt32(bufferSizeByte, 0);
                    var buffer     = new byte[bufferSize];
                    acceptSocket.Receive(buffer);
                    Array.Copy(buffer, 0, photo, offset, buffer.Length);
                    offset += bufferSize;
                }

                string name = GetNameByAutoNumber(autoNum);
                //Вывод в richtextbox
                WriteToLog.Invoke(this, "Камера" + cameraNumber + "передала данные. Номер: " + autoNum + ", скорость: " + speed);
                //Отключаем камеру, если необходимо
                var isEnable = true;
                if (_stoped)
                {
                    isEnable = false;
                    _states[cameraNumber] = false;
                }
                var isEnableByte = BitConverter.GetBytes(isEnable);
                acceptSocket.Send(isEnableByte);
                //Запускаем обработку данных;
                StartDataHandle(autoNum, photo, speed, cameraNumber);
            } catch (Exception ex) {
                WriteToLog(this, ex.Message + Environment.NewLine);
            }
        }
Exemplo n.º 2
0
 /// <summary>
 /// Вызвать метод записи в журнал
 /// </summary>
 public void ExecWriteToLog(string text)
 {
     WriteToLog?.Invoke(text);
 }