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)); }
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); }
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); }