コード例 #1
0
ファイル: Floppy.cs プロジェクト: ferib/VM86CS
        private void ReadSector()
        {
            int addr       = (data[1] * 2 + data[2]) * 18 + (data[3] - 1);
            int numSectors = data[5] - data[3] + 1;

            if (numSectors == -1)
            {
                numSectors = 1;
            }

            floppyStream.Seek(addr * 512, SeekOrigin.Begin);
            byte[] sector = floppyReader.ReadBytes(512 * numSectors);

            Logger.Info(String.Format("Reading {0} sectors from sector offset {1}", numSectors, addr));

            resultCount = 7;
            resultIdx   = 0;
            data[0]     = 0;
            data[1]     = 0;
            data[2]     = 0;
            data[3]     = 0;
            data[4]     = 0;
            data[5]     = 0;
            data[6]     = 0;

            OnDMA(new ByteArrayEventArgs(sector));

            mainStatus |= MainStatus.DIO;
            statusZero  = 0;

            OnIRQ(new EventArgs());
        }
コード例 #2
0
ファイル: BasicControl.cs プロジェクト: LeoNERDMaia/VRDrone
 void FixedUpdate()
 {
     if (Controller != null)
     {
         if (status == MainStatus.on)
         {
             Computer.UpdateComputer(Controller.Pitch, Controller.Roll, Controller.Throttle * ThrottleIncrease);
             ThrottleValue = (Controller.CurrentThrottleMode != Controller.ThrottleMode.None) ? ThrottleValue = Computer.HeightCorrection : Controller.Throttle;
         }
         else
         {
             if (Time.time > timeDisabled + 5)
             {
                 status = MainStatus.on;
             }
             ThrottleValue = 0.0f;
         }
         ComputeMotors();
     }
     else
     {
         if (Computer != null)
         {
             Computer.UpdateGyro();
         }
         ComputeMotorSpeeds();
     }
 }
コード例 #3
0
    /// <summary>
    /// 立绘被点击时的事件
    /// </summary>
    public void OnCharacterPaintingClick()
    {
        MainStatus ms = SceneStatusManager.Ins.current as MainStatus;
        int        i  = Random.Range(0, ms.cc.Words.Touch.Length);

        ShowDialogueBox(ms.cc.Words.Touch[i], 5);
    }
コード例 #4
0
        private async void BroadcastPageStatus()
        {
            var mainStatus = new MainStatus(AdaptiveStates.CurrentState != DefaultState, GetNavFrame());

            await Task.Delay(200);

            Messenger.Default.Send(mainStatus);
        }
コード例 #5
0
        public static Sprite GetMainStatusSprites(MainStatus key)
        {
            if (MainStatusSpritesDic.ContainsKey(key) == false)
            {
                Debug.Log($"'{nameof(MainStatusSpritesDic)}' dictionary doesn't have '{key}' key", Debug.LogType.Error);
                return(null);
            }

            return(MainStatusSpritesDic[key]);
        }
コード例 #6
0
ファイル: MainForm.cs プロジェクト: drewdz/FieldDataTest
 private void SetStatus(string status)
 {
     if (!MainStatus.InvokeRequired)
     {
         Status.Text = status;
     }
     else
     {
         MainStatus.Invoke(new CrossDelegateMethod(SetStatus), new object[] { status });
     }
 }
コード例 #7
0
ファイル: Floppy.cs プロジェクト: ferib/VM86CS
        private void RunCommand()
        {
            switch (command)
            {
            case FloppyCommand.Recalibrate:
                Logger.Info("Recalibrate issued");
                floppyStream.Seek(0, SeekOrigin.Begin);
                headPosition        = 0;
                currentCyl          = 0;
                statusZero          = 0x20;
                interruptInProgress = true;
                OnIRQ(new EventArgs());
                break;

            case FloppyCommand.SenseInterrupt:
                Logger.Info("Sense interrupt isssued");
                if (!interruptInProgress)
                {
                    statusZero = 0x80;
                }
                interruptInProgress = false;
                mainStatus         |= MainStatus.DIO;
                resultIdx           = 0;
                resultCount         = 2;
                data[0]             = statusZero;
                data[1]             = currentCyl;
                break;

            case FloppyCommand.ReadData:
                ReadSector();
                break;

            case FloppyCommand.WriteData:
                resultCount = 7;
                resultIdx   = 0;
                data[0]     = 0;
                data[1]     = 0x2;
                data[2]     = 0;
                data[3]     = 0;
                data[4]     = 0;
                data[5]     = 0;
                data[6]     = 0;

                mainStatus |= MainStatus.DIO;
                statusZero  = 0;

                OnIRQ(new EventArgs());
                break;

            default:
                System.Diagnostics.Debugger.Break();
                break;
            }
        }
コード例 #8
0
        public int GetStatus(MainStatus status)
        {
            var effects               = Unit.Equipment.GetEquippedItemEffects();
            var filteredEffects       = effects.Where(x => x.type == status);
            int totalAdditionalStatus = 0;

            foreach (var item in filteredEffects)
            {
                totalAdditionalStatus += item.value;
            }

            return((int)StatusDic[status].GetValue(mainStatus) + totalAdditionalStatus);
        }
コード例 #9
0
        private void btnOK_Click(object sender, EventArgs e)
        {
            MainStatus _mainStatus = MainStatus.getInstance();
            Status     status      = _mainStatus.Get();

            foreach (DataGridViewCell cell in _dgvMain.SelectedCells)
            {
                Car car = _dgvMain.GetCar(cell);

                DateTime date = new DateTime(dateTimePicker1.Value.Year, dateTimePicker1.Value.Month, 1);

                CreateDocument excelWayBill;

                try
                {
                    excelWayBill = (status == Status.Invoice)
            ? CreateWayBill(car, date, _dgvMain.GetID(cell.RowIndex))
            : CreateWayBill(car, date);
                }
                catch (NullReferenceException)
                {
                    continue;
                }

                if (_action == Logic.Static.Actions.Print)
                {
                    excelWayBill.Print();
                }
                else
                {
                    excelWayBill.Show();
                }
            }

            if (_action == Logic.Static.Actions.Print)
            {
                MyPrinter printer = new MyPrinter();
                MessageBox.Show("Документы отправлены на печать на принтер " + printer.GetDefaultPrinterName(), "Информация",
                                MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
        }
コード例 #10
0
        public MainForm(ICarForm carForm)
        {
            _carForm = carForm;

            InitializeComponent();

            _carList    = CarList.getInstance();
            _mainStatus = MainStatus.getInstance();
            _mainStatus.StatusChanged += statusChanged;
            _mainStatus.StatusChanged += SetWindowHeaderText;
            _mainStatus.StatusChanged += ConfigContextMenu;

            _dgvMain = new MainDGV(_dgvCar);

            _seacher = new SearchInDgv(_dgvCar);

            _myStatusStrip = new MyStatusStrip(_dgvCar, statusStrip1);

            _myFilter = MyFilter.GetInstanceCars();
            _myFilter.Fill(_dgvCar, _myStatusStrip, this);
        }
コード例 #11
0
 private bool OnHaultCanExecute()
 {
     try
     {
         if (SelectedCProgram != null &&
             SelectedCProgram.ThreadID != null &&
             Connected &&
             Convert.ToBoolean(MainStatus.GetThreadActive(SelectedCProgram.ThreadID.Value))
             //&& _kserv.KMController.ThreadExecuting(SelectedCProgram.ThreadID.Value)
             )
         {
             return(true);
         }
     }
     catch (Exception ex)
     {
         LogTo.Error("Error checking thread execution: {0}", ex.Message);
     }
     //if (SelectedCProgram != null) return true;
     return(false);
 }
コード例 #12
0
ファイル: MainForm.cs プロジェクト: drewdz/FieldDataTest
 private void SetStreamStatus(string text)
 {
     try
     {
         if (MainStatus.InvokeRequired)
         {
             MainStatus.Invoke(new CrossDelegateMethod(SetStreamStatus), new object[] { text });
         }
         else
         {
             var streaming = text.Equals("Streaming");
             var color     = (streaming) ? Color.DarkSeaGreen : SystemColors.Control;
             StartMenu.Text         = (streaming) ? "Stop Streaming" : "Start Streaming";
             StreamStatus.Text      = text;
             StreamStatus.BackColor = color;
         }
     }
     catch (Exception ex)
     {
         Debug.WriteLine($"Unable to set status: {ex}");
     }
 }
コード例 #13
0
ファイル: Floppy.cs プロジェクト: ferib/VM86CS
        public uint Read(ushort addr, int size)
        {
            switch (addr)
            {
            case 0x3f2:
                return((ushort)digitalOutput);

            case 0x3f4:
                return((ushort)mainStatus);

            case 0x3f5:
                byte ret = data[resultIdx++];
                if (resultIdx == resultCount)
                {
                    mainStatus &= ~MainStatus.DIO;
                }
                return(ret);

            default:
                System.Diagnostics.Debugger.Break();
                break;
            }
            return(0);
        }
コード例 #14
0
ファイル: Floppy.cs プロジェクト: ferib/VM86CS
 public Floppy()
 {
     mainStatus = MainStatus.RQM;
     data       = new byte[16];
 }
コード例 #15
0
        /// <summary>
        /// 获取全年休假天数同时,更新休假天数
        /// </summary>
        /// <param name="targetUser"></param>
        /// <param name="vacationYear">休假年份</param>
        /// <param name="vacationStatus">统计何种类型</param>
        /// <returns></returns>
        public UserVacationInfoVDto VacationInfo(User targetUser, int vacationYear, MainStatus vacationStatus)
        {
            if (targetUser == null)
            {
                return(null);
            }
            var applies = _context.AppliesDb
                          .Where(a => a.BaseInfo.FromId == targetUser.Id)
                          .Where(a => a.Status == AuditStatus.Accept)
                          .Where(a => a.MainStatus == vacationStatus)
                          .Where(a => a.RequestInfo.StampLeave.Value.Year == vacationYear)
                          .Where(a => _context.VacationTypes.Any(t => t.Primary && t.Name == a.RequestInfo.VacationType)).ToList();       // 仅主要假期计算天数
            var targetSocial = targetUser.SocialInfo;
            var targetSettle = targetSocial?.Settle;

            if (targetSettle == null)
            {
                return(null);
            }
            var r = targetSettle.GetYearlyLength(targetUser, out bool requireUpdate);
            var requireAddRecord = r.Item2; var maxOnTripTime = r.Item3; var description = r.Item4;
            var yearlyLength = r.Item1 < 0 ? 0 : r.Item1;

            if (targetSettle.Lover?.Valid ?? false)
            {
                // 已婚
                requireUpdate       |= (targetSocial.Status & (int)SocialStatus.IsMarried) == 0;
                targetSocial.Status |= (int)SocialStatus.IsMarried;

                if (targetSettle.Self.IsAllopatry(targetSettle.Lover))
                {
                    // 分居
                    requireUpdate       |= (targetSocial.Status & (int)SocialStatus.IsApart) == 0;
                    targetSocial.Status |= (int)SocialStatus.IsApart;
                }
                else
                {
                    // 同居
                    requireUpdate       |= (targetSocial.Status & (int)SocialStatus.IsApart) > 0;
                    targetSocial.Status -= (int)SocialStatus.IsApart;
                }
            }
            else
            {
                // 未婚
                requireUpdate       |= (targetSocial.Status & (int)SocialStatus.IsMarried) > 0;
                targetSocial.Status -= (int)SocialStatus.IsMarried;
            }

            if (requireAddRecord != null)
            {
                var list = new List <AppUsersSettleModifyRecord>(targetSettle.PrevYealyLengthHistory ?? new List <AppUsersSettleModifyRecord>());
                list.Add(requireAddRecord);
                targetSettle.PrevYealyLengthHistory = list;
                _context.AppUserSocialInfoSettles.Update(targetSettle);
                requireUpdate |= true;
            }

            if (requireUpdate)
            {
                _context.AppUserSocialInfos.Update(targetSocial);
                _context.SaveChanges();
            }
            var vacationInfo = VacationInfoInRange(applies, yearlyLength);

            vacationInfo.Description   = $"{description} {vacationInfo.Description ?? ""}";
            vacationInfo.MaxTripTimes += maxOnTripTime;
            return(vacationInfo);
        }
コード例 #16
0
ファイル: Floppy.cs プロジェクト: cryogen/VM86CS
 public uint Read(ushort addr, int size)
 {
     switch (addr)
     {
         case 0x3f2:
             return (ushort)digitalOutput;
         case 0x3f4:
             return (ushort)mainStatus;
         case 0x3f5:
             byte ret = data[resultIdx++];
             if (resultIdx == resultCount)
                 mainStatus &= ~MainStatus.DIO;
             return ret;
         default:
             System.Diagnostics.Debugger.Break();
             break;
     }
     return 0;
 }
コード例 #17
0
ファイル: BasicControl.cs プロジェクト: LeoNERDMaia/VRDrone
 public void Disable()
 {
     status       = MainStatus.disabled;
     timeDisabled = Time.time;
 }
コード例 #18
0
ファイル: MainController.cs プロジェクト: hawkingrei/PPKinecT
 public void DoEdgeDetecting()
 {
     if (Status == MainStatus.EdgeDetecting && !edgeCooling)
     {
         if (IsStable(rightHandQueue, EDGE_TOLERANCE, EDGE_COUNT) &&
             IsStable(rightElbowQueue, EDGE_TOLERANCE, EDGE_COUNT))
         {
             SkeletonPoint handPoint = rightHandQueue.Last().Position;
             Vector3f handVec = new Vector3f(handPoint.X, handPoint.Y, handPoint.Z);
             SkeletonPoint elbowPoint = rightElbowQueue.Last().Position;
             Vector3f elbowVec = new Vector3f(elbowPoint.X, elbowPoint.Y, elbowPoint.Z);
             if (kCalibrator.SetScreenPosition(handVec, elbowVec))
             {
                 // all screen position setted
                 mainWindow.textBlock.Text = "Waiting for PPT";
                 Status = MainStatus.PptWaiting;
                 pptDetectTimer.Start();
                 edgeTimer.Stop();
             }
             else
             {
                 mainWindow.textBlock.Text = "Please wait No. " + kCalibrator.ScreenSetted();
     ;
                 // point to another screen edge, using cooling time to prevent pointing to the same point
                 edgeTimer.Start();
                 edgeCooling = true;
             }
             ClearQueue();
         }
     }
 }
コード例 #19
0
        private void ScnmicrSetStatusBack(int iTransactionNumber, MainStatus mainStatus, ErrorCode subStatus, string portName)
        {
            ErrorCode ret;

            switch (mainStatus)
            {
            case MainStatus.MF_FUNCTION_START:
                break;

            case MainStatus.MF_CHECKPAPER_PROCESS_START:
                break;

            case MainStatus.MF_DATARECEIVE_START:
                _mutex.WaitOne(-1);
                _documents.Add(new Document());
                break;

            case MainStatus.MF_DATARECEIVE_DONE:
                var document = _documents[_documents.Count - 1];
                document.Cmc7 = "";
                document.Id   = iTransactionNumber;
                ret           = _mObjmfDevice.GetMicrText(iTransactionNumber, _mObjmfMicr);
                if (ret != ErrorCode.ERR_MICR_NODATA)
                {
                    if (!string.IsNullOrEmpty(_mObjmfMicr.MicrStr))
                    {
                        document.Cmc7 = _mObjmfMicr.MicrStr.Substring(0, _mObjmfMicr.MicrStr.IndexOf('\0'));
                        document.Cmc7 = document.Cmc7.Trim();
                    }
                }

                /*if (_mObjmfDevice.SCNSelectScanFace(ScanSide.MF_SCAN_FACE_FRONT) == ErrorCode.SUCCESS
                 *  && _mObjmfDevice.GetScanImage(iTransactionNumber, _mObjmfScanFront) == ErrorCode.SUCCESS
                 *  && _mObjmfDevice.SCNSelectScanFace(ScanSide.MF_SCAN_FACE_BACK) == ErrorCode.SUCCESS
                 *  && _mObjmfDevice.GetScanImage(iTransactionNumber, _mObjmfScanBack) == ErrorCode.SUCCESS)*/
                if (_mObjmfDevice.SCNSelectScanFace(ScanSide.MF_SCAN_FACE_FRONT) == ErrorCode.SUCCESS &&
                    _mObjmfDevice.GetScanImage(iTransactionNumber, _mObjmfScanFront) == ErrorCode.SUCCESS)
                {
                    document.RawImageFront = new byte[_mObjmfScanFront.Data.Length];
                    _mObjmfScanFront.Data.Read(document.RawImageFront, 0, document.RawImageFront.Length);
                    //document.RawImageBack = new byte[_mObjmfScanBack.Data.Length];
                    //_mObjmfScanBack.Data.Read(document.RawImageBack, 0, document.RawImageBack.Length);
                    //document.RawImage = TiffUtil.mergeTiffPages(aux);
                }

                if (_mObjmfDevice.SCNSelectScanFace(ScanSide.MF_SCAN_FACE_BACK) == ErrorCode.SUCCESS &&
                    _mObjmfDevice.GetScanImage(iTransactionNumber, _mObjmfScanBack) == ErrorCode.SUCCESS)
                {
                    document.RawImageBack = new byte[_mObjmfScanBack.Data.Length];
                    _mObjmfScanBack.Data.Read(document.RawImageBack, 0, document.RawImageBack.Length);
                }
                _mutex.ReleaseMutex();
                break;

            case MainStatus.MF_CHECKPAPER_PROCESS_DONE:
                break;

            case MainStatus.MF_FUNCTION_DONE:
                Scan();
                break;

            case MainStatus.MF_ERROR_OCCURED:
                _mutex.ReleaseMutex();
                break;

            default:
                throw new ArgumentOutOfRangeException(nameof(mainStatus), mainStatus, null);
            }
        }
コード例 #20
0
ファイル: MainController.cs プロジェクト: hawkingrei/PPKinecT
 public void DoPptDetecting()
 {
     if (Status == MainStatus.PptWaiting)
     {
         System.Diagnostics.Process[] processList = System.Diagnostics.Process.GetProcesses();
         foreach (System.Diagnostics.Process process in processList)
         {
             if (process.ProcessName == pptProcessName)
             {
                 // ppt detected
                 Status = MainStatus.PptPresenting;
                 mainWindow.textBlock.Text = "PPT Presenting";
                 presentCooling = true;
                 presentTimer.Start();
                 ClearQueue();
                 return;
             }
         }
     }
 }
コード例 #21
0
ファイル: MainController.cs プロジェクト: hawkingrei/PPKinecT
        /// <summary>
        /// Check queue if right hand and elbow positions are stable
        /// under the condition that Status is DepthDetecting.
        /// If is stable, the Status will be changed to next after doing depth calibration.
        /// If not, nothing will be changed.
        /// </summary>
        public void DoDepthDetecting(KinectSensor sensor, DepthImageFrame depthFrame)
        {
            if (Status == MainStatus.DepthDetecting)
            {
                if (IsStable(rightHandQueue, DEPTH_HAND_TOLERANCE, DEPTH_HAND_COUNT))
                {
                    // if is stable, calibrate depth according to avg of position near hand
                    SkeletonPoint handPoint = rightHandQueue.Last().Position;
                    DepthImagePoint centerDepthPoint = sensor.MapSkeletonPointToDepth(
                        handPoint, sensor.DepthStream.Format);
                    int[] depthArr = new int[DEPTH_NEAR_COUNT * 4];
                    int index = 0;
                    for (int i = 0; i < DEPTH_NEAR_COUNT; ++i)
                    {
                        // top
                        SkeletonPoint topSke = depthFrame.MapToSkeletonPoint(
                            centerDepthPoint.X - DEPTH_NEAR_RADIUS + (int)(DEPTH_SPAN * i),
                            centerDepthPoint.Y - DEPTH_NEAR_RADIUS);
                        depthArr[index++] = depthFrame.MapFromSkeletonPoint(topSke).Depth;
                        // bottom
                        SkeletonPoint bottomSke = depthFrame.MapToSkeletonPoint(
                            centerDepthPoint.X - DEPTH_NEAR_RADIUS + (int)(DEPTH_SPAN * i),
                            centerDepthPoint.Y + DEPTH_NEAR_RADIUS);
                        depthArr[index++] = depthFrame.MapFromSkeletonPoint(bottomSke).Depth;
                        // left
                        SkeletonPoint leftSke = depthFrame.MapToSkeletonPoint(
                            centerDepthPoint.X - DEPTH_NEAR_RADIUS,
                            centerDepthPoint.Y - DEPTH_NEAR_RADIUS + (int)(DEPTH_SPAN * i));
                        depthArr[index++] = depthFrame.MapFromSkeletonPoint(leftSke).Depth;
                        // right
                        SkeletonPoint rightSke = depthFrame.MapToSkeletonPoint(
                            centerDepthPoint.X + DEPTH_NEAR_RADIUS,
                            centerDepthPoint.Y - DEPTH_NEAR_RADIUS + (int)(DEPTH_SPAN * i));
                        depthArr[index++] = depthFrame.MapFromSkeletonPoint(rightSke).Depth;
                    }
                    // set median(rather than mean) depth of the list
                    Array.Sort(depthArr);
                    kCalibrator.SetDepth(depthArr[DEPTH_NEAR_COUNT / 2]);

                    ClearQueue();
                    Status = MainStatus.EdgeDetecting;
                    mainWindow.textBlock.Text = "Detecting edge now. Arm at four corners of the screen.";
                    // cooling time timer
                    edgeTimer.Start();
                    edgeCooling = true;
                }
            }
        }
コード例 #22
0
ファイル: Floppy.cs プロジェクト: cryogen/VM86CS
        private void ReadSector()
        {
            int addr = (data[1] * 2 + data[2]) * 18 + (data[3] - 1);
            int numSectors = data[5] - data[3] + 1;

            if (numSectors == -1)
                numSectors = 1;

            floppyStream.Seek(addr * 512, SeekOrigin.Begin);
            byte[] sector = floppyReader.ReadBytes(512 * numSectors);

            Logger.Info(String.Format("Reading {0} sectors from sector offset {1}", numSectors, addr));

            resultCount = 7;
            resultIdx = 0;
            data[0] = 0;
            data[1] = 0;
            data[2] = 0;
            data[3] = 0;
            data[4] = 0;
            data[5] = 0;
            data[6] = 0;

            OnDMA(new ByteArrayEventArgs(sector));

            mainStatus |= MainStatus.DIO;
            statusZero = 0;

            OnIRQ(new EventArgs());
        }
コード例 #23
0
 public Status_Attribute_MainStatus(MainStatus mainStatus)
 {
     MainStatus = mainStatus;
 }
コード例 #24
0
ファイル: Floppy.cs プロジェクト: cryogen/VM86CS
        private void RunCommand()
        {
            switch (command)
            {
                case FloppyCommand.Recalibrate:
                    Logger.Info("Recalibrate issued");
                    floppyStream.Seek(0, SeekOrigin.Begin);
                    headPosition = 0;
                    currentCyl = 0;
                    statusZero = 0x20;
                    interruptInProgress = true;
                    OnIRQ(new EventArgs());
                    break;
                case FloppyCommand.SenseInterrupt:
                    Logger.Info("Sense interrupt isssued");
                    if (!interruptInProgress)
                        statusZero = 0x80;
                    interruptInProgress = false;
                    mainStatus |= MainStatus.DIO;
                    resultIdx = 0;
                    resultCount = 2;
                    data[0] = statusZero;
                    data[1] = currentCyl;
                    break;
                case FloppyCommand.ReadData:
                    ReadSector();
                    break;
                case FloppyCommand.WriteData:
                    resultCount = 7;
                    resultIdx = 0;
                    data[0] = 0;
                    data[1] = 0x2;
                    data[2] = 0;
                    data[3] = 0;
                    data[4] = 0;
                    data[5] = 0;
                    data[6] = 0;

                    mainStatus |= MainStatus.DIO;
                    statusZero = 0;

                    OnIRQ(new EventArgs());
                    break;
                default:
                    System.Diagnostics.Debugger.Break();
                    break;
            }
        }
コード例 #25
0
ファイル: MyMenu.cs プロジェクト: Mario-Kart-Felix/BBAuto
 public MyMenu(MainDGV dgvMain)
 {
     _mainStatus = MainStatus.getInstance();
     _factory    = new MyMenuItemFactory(dgvMain);
 }
コード例 #26
0
ファイル: Floppy.cs プロジェクト: cryogen/VM86CS
 public Floppy()
 {
     mainStatus = MainStatus.RQM;
     data = new byte[16];
 }
コード例 #27
0
        private void OnMainStatusTick(object sender, EventArgs e)
        {
            int[] List;
            int   nBoards = 0;

            // with extra FTDI Drivers this can take a long time
            // so only call occasionally when not connected
            if (!Connected && ++_skip == 10)
            {
                _skip = 0;

                // check how many boards connected
                List = _kserv.KMController.GetBoards(out nBoards);
                if (nBoards > 0)
                {
                    Connected = true;
                    LogTo.Info("Dynomotion C# Forms App - Connected - USB location {0:X}", List[0]);
                    string verstr = _kserv.KMController.WriteLineReadLine("Version");
                    LogTo.Info(verstr);
                    StartLogging = true;
                    //ViewModelCommandManager.InvalidateCommands();
                    _lastElapsedms = _stopwatch.ElapsedMilliseconds;
                }
                else
                {
                    Connected    = false;
                    StartLogging = false;
                }
            }

            if (Connected && _kserv.KMController.WaitToken(100) == KMOTION_TOKEN.KMOTION_LOCKED)
            {
                try
                {
                    MainStatus = _kserv.KMController.GetStatus(false);  // we already have a lock
                    _kserv.KMController.ReleaseToken();
                    Thread1Executing = Convert.ToBoolean(MainStatus.GetThreadActive(1));
                    Thread2Executing = Convert.ToBoolean(MainStatus.GetThreadActive(2));
                    Thread3Executing = Convert.ToBoolean(MainStatus.GetThreadActive(3));
                    Thread4Executing = Convert.ToBoolean(MainStatus.GetThreadActive(4));
                    Thread5Executing = Convert.ToBoolean(MainStatus.GetThreadActive(5));
                    Thread6Executing = Convert.ToBoolean(MainStatus.GetThreadActive(6));
                    Thread7Executing = Convert.ToBoolean(MainStatus.GetThreadActive(7));

                    int lastByteCount = MessageByteCount;
                    MessageByteCount = _loggingService.MessageByteCount;
                    MessageCount     = _loggingService.MessageCount;
                    long nowelapsedms = _stopwatch.ElapsedMilliseconds;
                    DataRate       = (int)((_loggingService.MessageByteCount - lastByteCount) / ((nowelapsedms - _lastElapsedms) / 1000F) / 1000);//kbytes/sec
                    _lastElapsedms = nowelapsedms;
                    //_stopwatch.Start();
                    if (DataRate > MaxDataRate)
                    {
                        MaxDataRate = DataRate;
                    }
                }
                catch (DMException ex) // in case disconnect in the middle of reading status
                {
                    _kserv.KMController.ReleaseToken();
                    LogTo.Error(ex.InnerException.Message);
                }
            }
            else
            {
                Connected = false;
            }
        }
コード例 #28
0
 public MyMenuItemFactory(MainDGV dgvMain)
 {
     _dgvMain    = dgvMain;
     _mainStatus = MainStatus.getInstance();
     _carList    = CarList.getInstance();
 }