コード例 #1
0
ファイル: Bitmaper.cs プロジェクト: Kwapaa/mata_v1
        public void buildBitmap()
        {
            int _sx, _sy, pixelX, pixelY, scaledPixelY = 0, scaledPixelX = 0;
            int force = 0, sumForce = 0;
            int pcktNum = _packetList.Count();

            byte[] buffer = new byte[height * width * 2 + 7];
            //_map = new Map(80, 40);;

            Bitmap _bitmap;

            Pen pen = new Pen(Color.White)
            {
                Alignment = PenAlignment.Inset,
                Width     = 0.05f
            };

            _bitmap = new Bitmap(400, 200, PixelFormat.Format32bppArgb);
            Graphics graphicsBitmap = Graphics.FromImage(_bitmap);

            try
            {
                while (_working) // && _packetList.Count() > 0)
                {
                    if (_packetList.Count == 0)
                    {
                        Logic.updateConsoleDuoBox("poczekalnia");
                        Thread.Sleep(500);
                    }
                    else
                    {
                        buffer = _packetList.ElementAt(0);
                        //Logic.updateConsoleBox(string.Format("otrzymałem: {0}", buffer[0]));
                        sumForce = 0;
                        if (buffer[0] == _STX && buffer[1] == _sBitmap && buffer.Length == height * width * 2 + 7)
                        {
                            _sx = buffer[2] + buffer[3] * 256;
                            _sy = buffer[4] + buffer[5] * 256;
                            if (_sx != MainSettings.Default.AreaWidth || _sy != MainSettings.Default.AreaHeight)
                            {
                                _packetList.RemoveAt(0);
                                break;
                                //_logic.updateConsoleDuoBox("nieprawidlowa dlugosc ramki \n ");
                                //_logic.updateConsoleDuoBox("\n");
                            }

                            pixelX       = 0;
                            pixelY       = 0;
                            scaledPixelX = 0;
                            scaledPixelY = 0;

                            for (int j = 6; j < buffer.Length - 2; j += 2)
                            {
                                force     = buffer[j] + buffer[j + 1] * 256;
                                sumForce += force;
                                if (force < 100)
                                {
                                    _myColor = Color.Black;
                                }
                                else
                                {
                                    _myColor = percentToColor(force, 0, 1000);
                                }

                                //scaledPixelX = _map.getField


                                //if (pixelY < _sy / 2)
                                //{
                                //    if (pixelX >= 10 && pixelX < _sx / 2 - 10)
                                //    {
                                //        scaledPixelY = pixelY + _sy / 2;
                                //        scaledPixelX = scaledPixelY;
                                //        scaledPixelY = _sy - pixelX - 1;
                                //    }
                                //    if (pixelX >= 50 && pixelX < _sx - 10)
                                //    {
                                //        scaledPixelY = pixelY + _sy / 2;
                                //        scaledPixelX = scaledPixelY;
                                //        scaledPixelY = _sy - pixelX - 1;
                                //    }
                                //    if (pixelX >= 10 && pixelX < _sx / 2 - 10)
                                //    {
                                //        if (pixelY < _sy / 2)
                                //            scaledPixelY = pixelY + _sy / 2;
                                //        else if (pixelY >= _sy / 2)
                                //            scaledPixelY = pixelY - _sy / 2;

                                //        scaledPixelX = scaledPixelY;
                                //        scaledPixelY = _sy - pixelX - 1;
                                //    }

                                //    /*if (pixelY < _sy / 2)
                                //        scaledPixelY = pixelY + _sy / 2;
                                //    else if (pixelY >= _sy / 2)
                                //        scaledPixelY = pixelY - _sy / 2;*/

                                for (int k = 0; k < 5; k++)
                                {
                                    for (int l = 0; l < 5; l++)
                                    {
                                        _bitmap.SetPixel(
                                            scaledPixelX * 5 + k,
                                            scaledPixelY * 5 + l,
                                            _myColor);
                                    }
                                }
                                pixelX++;
                                Logic.updateConsoleBox(string.Format("sumForce: {0}", sumForce));
                                if (pixelX == MainSettings.Default.AreaWidth)
                                {
                                    pixelX = 0;
                                    pixelY++;
                                }
                            }
                            _logic.updatePictureBox(_bitmap);

                            /*
                             * for (int x =0; x < _bitmap.Width; x++)
                             * {
                             *  for (int y=0; y< _bitmap.Height/2; y++)
                             *  {
                             *      _myColor = _bitmap.GetPixel(x, y + _bitmap.Height / 2);
                             *      _bitmap.SetPixel(x, y + _bitmap.Height / 2, _bitmap.GetPixel(x, y));
                             *      _bitmap.SetPixel(x, y, _myColor);
                             *  }
                             * }*/
                        }

                        if (_packetList.Count > 1)
                        {
                            _packetList.RemoveAt(0);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Logic.updateConsoleBox(string.Format("Bitmaper: {0}", ex.Message));
            }
        }
コード例 #2
0
ファイル: Receiver.cs プロジェクト: Kwapaa/mata_v1
        public void BuildPacket(byte[] bytes)
        {
            try
            {
                //_packet[0] = Convert.ToByte(iterator);
                //_packetList.Add(_packet);
                //Logic.updateConsoleBox(string.Format("wyslałem: {0}", iterator.ToString()));
                //iterator++;
                for (int i = 0; i < bytes.Length; i++)
                {
                    if (!headerFound && bytes[i] == _STX)
                    {
                        ClearPacket();
                        _packet[packetSize.Value] = bytes[i];
                        packetSize++;
                        headerFound = true;
                    }
                    else if (headerFound && bytes[i] == _DLE)
                    {
                        bDLE = true;
                    }
                    else if (headerFound)
                    {
                        if (bDLE)
                        {
                            _packet[packetSize.Value] = bytes[i];
                            bDLE = false;
                        }
                        else if (bytes[i] == _ETX)
                        {
                            if (packetSize.Value == packetExpectedSize - 1 || Math.Abs(packetSize.Value - packetExpectedSize) < packetExpectedSize * difference / 100)
                            {
                                _packet[packetSize.Value] = bytes[i];
                                System.IO.File.WriteAllText(string.Format("{0}/binary/correct/{1}.txt", MainSettings.Default.PatientFolderPath, packetCorrect), System.Text.Encoding.Default.GetString(_packet));
                                _packetList.Add(_packet);
                                ClearPacket();
                                packetCorrect++;
                                packetsCollected++;
                                headerFound = false;
                            }
                            else
                            {
                                headerFound = false;
                                System.IO.File.WriteAllText(string.Format("{0}/binary/{1}.txt", MainSettings.Default.PatientFolderPath, packetsCollected), System.Text.Encoding.Default.GetString(_packet));
                                ClearPacket();
                                packetsCollected++;
                            }
                        }
                        else if (packetSize.Value >= 6407)
                        {
                            ClearPacket();
                        }
                        else
                        {
                            _packet[packetSize.Value] = bytes[i];
                        }
                        packetSize++;
                    }
                }
                bytes = null;
            }

            catch (Exception ex)
            {
                Logic.updateConsoleBox(string.Format("Receiver: {0}", ex.Message));
            }
        }