Exemplo n.º 1
0
        public static object ReadBoundData(DinkeyDongleService service)
        {
            double onekb = 1024;

            byte[] dataToRead      = new byte[4987];
            double totalDataLength = dataToRead.Length;

            var    dataLength = onekb;
            double count      = Math.Ceiling(dataToRead.Length / onekb);
            int    counter    = 1;
            int    offset     = 0;

            while (counter <= count)
            {
                byte[] dataBlockRead = service.ReadData((int)dataLength, offset);
                Array.Copy(dataBlockRead, 0, dataToRead, offset, (int)dataLength);

                //dataLength = (totalDataLength % (onekb * counter) == 0) ? onekb : totalDataLength % (onekb * counter);

                if (totalDataLength - (onekb * counter) < onekb)
                {
                    dataLength = totalDataLength - (onekb * counter);
                }

                offset = (int)(onekb * counter);
                counter++;
            }
            return(Encoding.ASCII.GetString(dataToRead));
        }
Exemplo n.º 2
0
        public static bool WriteBoundData(byte[] data, DinkeyDongleService service)
        {
            byte[]       DataToWrite     = data;
            bool         status          = false;
            const double onekb           = 1024;
            double       totalDataLength = DataToWrite.Length;

            if (DataToWrite.Length > onekb)
            {
                var    dataLength = onekb;
                double count      = Math.Ceiling(DataToWrite.Length / onekb);

                bool dataWritten = false;
                int  counter     = 1;
                int  offset      = 0;
                while (counter <= count)
                {
                    byte[] dataBlockToWrite = new byte[Convert.ToInt64(dataLength)];
                    Array.Copy(DataToWrite, offset, dataBlockToWrite, 0, Convert.ToInt64(dataLength));

                    dataWritten = service.WriteData(dataBlockToWrite, offset);

                    if (dataWritten)
                    {
                        status = true;
                    }

                    //dataLength = (totalDataLength % (onekb * counter) == 0) ? onekb : totalDataLength % (onekb * counter);

                    if (totalDataLength - (onekb * counter) < onekb)
                    {
                        dataLength = totalDataLength - (onekb * counter);
                    }

                    offset = (int)(onekb * counter);
                    counter++;
                }

                if (dataWritten)
                {
                    status = true;
                }
            }
            else
            {
                if (service.WriteData(DataToWrite, 1))
                {
                    status = true;
                }
            }
            return(status);
        }
Exemplo n.º 3
0
        private static void DinkeyDongleTest()
        {
            var service = new DinkeyDongleService();

            var keysA = RandomDataGenerator.CardKeys(40, 0, 'A');
            var keysB = RandomDataGenerator.CardKeys(40, 0, 'B');

            keysA.AddRange(keysB);

            var dongleData = new DongleData
            {
                CardKeys = keysA,
            };

            var data = Encoding.ASCII.GetBytes(JsonConvert.SerializeObject(dongleData));

            //WriteBoundData(data, service);

            var stringData = ReadBoundData(service);

            var dData = JsonConvert.DeserializeObject <DongleData>((string)stringData);
        }