/// <summary> /// Learn an infrared command. /// </summary> /// <param name="data">New infrared command.</param> /// <returns> /// Tells the calling code if the learn was Successful, Failed or Timed Out. /// </returns> public LearnStatus Learn(out byte[] data) { LearnStatus status = LearnStatus.Failure; data = null; if (_deviceType != DeviceType.Tira) { throw new ApplicationException("Ira and Ira-2 do not support IR Learn"); } Disconnect(); Connect(57600); /* * if (_learnTimedOut) * { * status = LearnStatus.Timeout; * } * else if (result) * { * data = Encoding.ASCII.GetBytes(irCode.ToString()); * * status = LearnStatus.Success; * } * else * { * status = LearnStatus.Failure; * } */ Disconnect(); Connect(9600); return(status); }
/// <summary> /// Chuyển lớp cho học sinh /// </summary> /// <param name="ClassID"></param> /// <param name="Identifier"></param> /// <returns></returns> public JsonResult SwitchClass(int ClassID, string Identifier) { try { // Lấy niên khóa Configure Configure = db.ConfigRepository.GetAll().Where(e => e.IsActive).FirstOrDefault(); // Nếu chuyển ở năm học hiện tại thì cho phép, còn lại thì không User student = db.UserRepository.FindByIdentifier(Identifier); bool IsLearning = db.MemberRepository.GetAll().Any(e => e.LearnStatus == LearnStatus.Learning && e.ConfigureID == Configure.ID && e.UserID == student.ID); if (!IsLearning) { return(Json(new { message = "Học sinh này đã tốt nghiệp", success = false }, JsonRequestBehavior.AllowGet)); } List <ClassMember> old_member = db.MemberRepository.GetAll().Where(e => e.UserID == student.ID).ToList(); bool CurrentClass = old_member.Any(e => e.ClassID == ClassID && Configure.ID == e.ConfigureID); //Không cho chuyển trùng lớp đang học if (CurrentClass) { return(Json(new { message = "Bạn chuyển trùng lớp đang học", success = false }, JsonRequestBehavior.AllowGet)); } LearnStatus status = LearnStatus.Learning; bool SwitchOldClass = false; //Bỏ các lớp khác old_member.ForEach(e => { // Lấy tình trạng học của lớp cũ để đưa sang lớp mới if (e.LearnStatus == LearnStatus.Learning) { status = e.LearnStatus; //Đánh dấu đã chuyển e.LearnStatus = LearnStatus.Switched; } //Nếu trường hợp chuyển lại lớp cũ.. if (e.LearnStatus == LearnStatus.Switched && e.ClassID == ClassID) { e.LearnStatus = LearnStatus.Learning; SwitchOldClass = true; } }); if (!SwitchOldClass) { ClassMember new_member = new ClassMember { UserID = student.ID, ClassID = ClassID, ConfigureID = Configure.ID, LearnStatus = status, }; db.MemberRepository.Add(new_member); } db.SaveChanges(); return(Json(new { message = "Chuyển lớp thành công!", success = true }, JsonRequestBehavior.AllowGet)); } catch (Exception e) { Response.StatusCode = 500; return(Json(e.Message, JsonRequestBehavior.AllowGet)); } }
/// <summary> /// Learn an IR Command. /// </summary> /// <param name="learnTimeout">How long to wait before aborting learn.</param> /// <param name="learned">Newly learned IR Command.</param> /// <returns>Learn status.</returns> public override LearnStatus Learn(int learnTimeout, out IrCode learned) { DebugWriteLine("Learn()"); learned = null; _learningCode = new IrCode(); SetInputPort(InputPort.Learning); int learnStartTick = Environment.TickCount; _readThreadMode = ReadThreadMode.Learning; // Wait for the learning to finish ... while (_readThreadMode == ReadThreadMode.Learning && Environment.TickCount < learnStartTick + learnTimeout) { Thread.Sleep(PacketTimeout); } DebugWriteLine("End Learn"); ReadThreadMode modeWas = _readThreadMode; _readThreadMode = ReadThreadMode.Receiving; SetInputPort(InputPort.Receive); LearnStatus status = LearnStatus.Failure; switch (modeWas) { case ReadThreadMode.Learning: status = LearnStatus.Timeout; break; case ReadThreadMode.LearningFailed: status = LearnStatus.Failure; break; case ReadThreadMode.LearningDone: DebugDump(_learningCode.TimingData); if (_learningCode.FinalizeData()) { learned = _learningCode; status = LearnStatus.Success; } break; } _learningCode = null; return(status); }
/// <summary> /// Learn an infrared command. /// </summary> /// <param name="data">New infrared command.</param> /// <returns> /// Tells the calling code if the learn was Successful, Failed or Timed Out. /// </returns> public LearnStatus Learn(out byte[] data) { IrCode code; LearnStatus status = _driver.Learn(_config.LearnTimeout, out code); if (code != null) { data = code.ToByteArray(); } else { data = null; } return(status); }
internal LearnResult(LearnStatus status, IRCode code) { Status = status; Code = code; }