Esempio n. 1
0
        static private VPump100Data[] ConvertToVPump100Datas(DataTable datatable, out int createCount)
        {
            NullOrDBNullConverter nc = new NullOrDBNullConverter(0f);

            createCount = 0;
            List <VPump100Data> list = new List <VPump100Data>();

            foreach (DataRow row in datatable.Rows)
            {
                DateTime dt          = Convert.ToDateTime(row[ColumnNamesForPump.StrTime]);
                float    instantFlux = Convert.ToSingle(nc.Convert(row[ColumnNamesForPump.Flux]));
                float    efficienty  = Convert.ToSingle(nc.Convert(row[ColumnNamesForPump.Efficiency]));
                float    sum         = Convert.ToSingle(nc.Convert(row[ColumnNames.TuWater]));
                float    remain      = Convert.ToSingle(nc.Convert(row[ColumnNames.ReWater]));

                PumpStatus       pumpStatus    = VPumpStatusParser.ParsePumpStatus(row[ColumnNamesForPump.PumpStatus].ToString());
                ForceStartStatus forceStatus   = VPumpStatusParser.ParseForceStartStatus(row[ColumnNamesForPump.ForceRun].ToString());
                VibrateStatus    vibrateStatus = VPumpStatusParser.ParseVibrateStatus(row[ColumnNamesForPump.Vibrate].ToString());
                PumpPowerStatus  powerStatus   = VPumpStatusParser.ParsePowerStatus(row[ColumnNamesForPump.Power].ToString());


                VPump100Data data = new VPump100Data();
                data.DT               = dt;
                data.InstantFlux      = instantFlux;
                data.Efficiency       = efficienty;
                data.TotalAmount      = sum;
                data.RemainAmount     = remain;
                data.PumpStatus       = pumpStatus;
                data.ForceStartStatus = forceStatus;
                data.VibrateStatus    = vibrateStatus;
                data.PowerStatus      = powerStatus;

                list.Add(data);
                if (list.Count >= 5)
                {
                    break;
                }
            }
            createCount = list.Count;
            while (list.Count < 5)
            {
                list.Add(new VPump100Data());
            }
            return(list.ToArray());
        }
Esempio n. 2
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="bs"></param>
        /// <param name="startIndex"></param>
        /// <returns></returns>
        static public VPump100Data ToVPump100Data(byte[] bs,
                                                  int startIndex)
        {
            int   start = startIndex;
            Int64 ticks = BitConverter.ToInt64(bs, start);

            start += 8;

            float instantFlux = BitConverter.ToSingle(bs, start);

            start += 4;

            float eff = BitConverter.ToSingle(bs, start);

            start += 4;

            float total = BitConverter.ToSingle(bs, start);

            start += 4;

            float remain = BitConverter.ToSingle(bs, start);

            start += 4;

            PumpStatus       pumpStatus       = (PumpStatus)bs[start++];
            ForceStartStatus forceStartStatus = (ForceStartStatus)bs[start++];
            VibrateStatus    vibrateStatus    = (VibrateStatus)bs[start++];
            PumpPowerStatus  powerStatus      = (PumpPowerStatus)bs[start++];

            VPump100Data data = new VPump100Data();

            data.DT               = new DateTime(ticks);
            data.InstantFlux      = instantFlux;
            data.Efficiency       = eff;
            data.ForceStartStatus = forceStartStatus;
            data.PowerStatus      = powerStatus;
            data.PumpStatus       = pumpStatus;
            data.RemainAmount     = remain;
            data.TotalAmount      = total;
            data.VibrateStatus    = vibrateStatus;

            return(data);
        }
Esempio n. 3
0
        private static async Task <VibrateStatus> HandleVibrateStart(ButtplugClientDevice device, VibrateStart vs, VibrateStatus status)
        {
            if (IsVorze(device))
            {
                var newDirection = random(2) == 0 ? true : false;
                await device.SendVorzeA10CycloneCmd(Convert.ToUInt32(vs.strength * 100), newDirection);

                return(await vs.time.MatchAsync(async time =>
                {
                    await Task.Delay(time);
                    await device.SendVorzeA10CycloneCmd(StrengthToVorzeRotation(status.strength), status.direction);
                    return status;
                }, () => new VibrateStatus(vs.strength, newDirection)));
            }
            else
            {
                await device.SendVibrateCmd(vs.strength);

                // TODO handle intervals
                return(await vs.time.MatchAsync(async time =>
                {
                    await Task.Delay(time);
                    await device.SendVibrateCmd(status.strength);
                    return status;
                }, () => new VibrateStatus(vs.strength, false)));
            }
        }
Esempio n. 4
0
        static async Task WatchLogFileAsync(string filename, ButtplugClient client, ButtplugClientDevice vaginalDevice, ButtplugClientDevice analDevice)
        {
            var wh  = new AutoResetEvent(false);
            var fsw = new FileSystemWatcher(".");

            fsw.Filter = filename;
            fsw.EnableRaisingEvents = true;
            fsw.Changed            += (s, e) => wh.Set();

            var fs = new FileStream(filename, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);

            fs.Seek(0, SeekOrigin.End);

            // Watch the file
            VibrateStatus currentSetting = VibrateStatus.Stopped();

            using (var sr = new StreamReader(fs))
            {
                while (true)
                {
                    // Reset position for new file
                    if (fs.Position > fs.Length)
                    {
                        fs.Seek(0, SeekOrigin.Begin);
                    }

                    string s = sr.ReadLine();
                    if (s != null)
                    {
                        bool isAnal    = s.Contains("JNAnal");
                        bool isVaginal = s.Contains("JNVaginal");
                        if (isAnal || isVaginal)
                        {
                            var deviceToSendTo = isAnal ? analDevice : vaginalDevice;
                            Either <Exception, VibrateCommand> vlOrE = ParseVibrateLine(s);
                            Console.WriteLine("[RumbleLog] " + vlOrE);
                            await vlOrE.Match(async vl =>
                            {
                                try
                                {
                                    if (vl is VibrateStart)
                                    {
                                        currentSetting = await HandleVibrateStart(deviceToSendTo, vl as VibrateStart, currentSetting);
                                    }
                                    else if (vl is VibrateStop)
                                    {
                                        await HandleVibrateStop(deviceToSendTo);
                                        currentSetting = VibrateStatus.Stopped();
                                    }
                                }
                                catch (ButtplugDeviceException e)
                                {
                                    Console.WriteLine(e);
                                    Console.WriteLine("Device disconnected.");
                                    deviceToSendTo = await AttemptReconnect(client, deviceToSendTo);
                                }
                                catch (Exception e)
                                {
                                    Console.WriteLine("Unknown exception, attempting reconnect anyway. Exception: " + e);
                                    deviceToSendTo = await AttemptReconnect(client, deviceToSendTo);
                                }
                            }, async e => Console.WriteLine(e));
                        }
                    }
                    else
                    {
                        wh.WaitOne(10);
                    }
                }
            }

            // TODO end loop
            //wh.Close();
        }