/*************************************************************************************************** *FunctionName: activityFresh *Description: 界面刷新 *Input: *Output: *Return: *Author: xsx *Date: 2016年12月21日09:01:16 ***************************************************************************************************/ static void activityFresh(void) { S_WaitPageData->cnt++; if(S_WaitPageData->cnt % 5 == 0) { /*是否插卡*/ if(GetCardState() == CardIN) { stopPlay(); S_WaitPageData->currenttestdata->statues = status_preread; startActivity(createPreReadCardActivity, NULL); return; } /*时间到,未插卡,返回*/ else if(TimeOut == timer_expired(&(S_WaitPageData->timer2))) { AddNumOfSongToList(11, 0); timer_restart(&(S_WaitPageData->timer2)); } } //如果排队中,有卡接近测试时间,则删除当前测试创建任务,返回 if(GetMinWaitTime() < 40) { stopPlay(); MotorMoveTo(1, 2, MaxLocation, FALSE); DeleteCurrentTest(); backToActivity(paiduiActivityName); } }
void BootupAnimation::pipeDataAvailable(int pipe) { char buffer[BOOT_ANIM_MESSAGE_LENGHT]; int index = 0; char data; while(index < BOOT_ANIM_MESSAGE_LENGHT && (::read(pipe, &(buffer[index]), 1) == 1)) { index++; } if(buffer[0] == BOOT_ANIM_MESSAGE_END_ANIMATION) { stop(); } else if(buffer[0] == BOOT_ANIM_MESSAGE_START_PROGRESS) { startActivity(); } else if(buffer[0] == BOOT_ANIM_MESSAGE_END_PROGRESS) { stopActivity(); } else if(buffer[0] == BOOT_ANIM_MESSAGE_PROGRESS_UPDATE) { int val, total; int* p = (int*)&(buffer[1]); val = *p; p = (int*)&(buffer[1 + sizeof(int)]); total = *p; setActivityProgress(val, total); } }
void ActivityManager::activityAdded(QString id) { // skip the Status source if (id == "Status") return; // create a new activity object ActivityWidget *activity = new ActivityWidget(extender()->item("Activities"), id); // add activity to the list m_activities.insert(id, activity); // connect activity update signal dataEngine("org.kde.activities")->connectSource(id, this); // connect activity start/stop signals connect(activity, SIGNAL(setCurrent(QString)), this, SLOT(setCurrent(QString))); connect(activity, SIGNAL(startActivity(QString)), this, SLOT(start(QString))); connect(activity, SIGNAL(stopActivity(QString)), this, SLOT(stop(QString))); connect(activity, SIGNAL(addActivity(QString)), this, SLOT(add(QString))); connect(activity, SIGNAL(removeActivity(QString)), this, SLOT(remove(QString))); connect(activity, SIGNAL(renameActivity(QString,QString)), this, SLOT(setName(QString,QString))); }
void DetectionTask::handleMsg(Msg *msg) { DxOpsBitset operations; switch (msg->getCode()) { case StartDetection: // start the signal detection startActivity(msg); break; case CwComplete: if (!activity) break; operations = params.operations; if (activity->getState() == DX_ACT_STOPPING) sendDetectionComplete(); else startPulseDetection(); break; case PulseComplete: sendDetectionComplete(); break; case STOP_DX_ACTIVITY: stopActivity(msg); break; case ActivityStopped: sendDetectionComplete(); break; case SHUTDOWN_DX: case RESTART_DX: stopActivity(msg, true); break; default: break; } }
void stopActivity (ActivityObject *activity) { logActivityActionRequest(activity, "stop"); while (1) { switch (activity->state) { case ACT_PREPARING: setActivityState(activity, ACT_PREPARING_STOP); continue; case ACT_PREPARED: setActivityState(activity, ACT_STOPPED); continue; case ACT_SCHEDULED: cancelActivityStartAlarm(activity); setActivityState(activity, ACT_PREPARED); continue; case ACT_STARTING: case ACT_STARTING_RESTART: setActivityState(activity, ACT_STARTING_STOP); continue; case ACT_STARTED: { ActivityStopMethod *stop = activity->methods->stop; if (stop) { ActivityState newState; setActivityState(activity, ACT_STOPPING); stop(activity->data); newState = activity->state; setActivityState(activity, ACT_STOPPED); if (newState == ACT_STOPPING_START) { startActivity(activity); } else if (newState != ACT_STOPPING) { logUnexpectedActivityState(activity, "stopping"); } } else { setActivityState(activity, ACT_STOPPED); } return; } case ACT_STOPPING_START: setActivityState(activity, ACT_STOPPING); continue; case ACT_PREPARING_STOP: case ACT_STARTING_STOP: case ACT_STOPPING: case ACT_STOPPED: return; } logUnexpectedActivityState(activity, "stop"); break; } }
/*************************************************************************************************** *FunctionName: activityInput *Description: 界面输入 *Input: *Output: *Return: *Author: xsx *Date: 2016年12月21日09:00:59 ***************************************************************************************************/ static void activityInput(unsigned char *pbuf , unsigned short len) { S_UserPageBuffer->lcdinput[0] = pbuf[4]; S_UserPageBuffer->lcdinput[0] = (S_UserPageBuffer->lcdinput[0]<<8) + pbuf[5]; /*返回*/ if(S_UserPageBuffer->lcdinput[0] == 0x1200) { DeleteCurrentTest(); backToActivity(lunchActivityName); } /*上翻也*/ else if(S_UserPageBuffer->lcdinput[0] == 0x1203) { if(S_UserPageBuffer->pageindex > 1) { S_UserPageBuffer->pageindex--; S_UserPageBuffer->selectindex = 0; ShowList(); SelectUser(S_UserPageBuffer->selectindex); } } /*下翻页*/ else if(S_UserPageBuffer->lcdinput[0] == 0x1204) { if(S_UserPageBuffer->pageindex < (MaxUserNum / MaxPageShowNum)) { S_UserPageBuffer->tempUser = &S_UserPageBuffer->user[(S_UserPageBuffer->pageindex)*MaxPageShowNum]; if(S_UserPageBuffer->tempUser->crc == CalModbusCRC16Fun1(S_UserPageBuffer->tempUser, sizeof(User_Type)-2)) { S_UserPageBuffer->pageindex++; S_UserPageBuffer->selectindex = 0; ShowList(); SelectUser(S_UserPageBuffer->selectindex); } } } /*确定*/ else if(S_UserPageBuffer->lcdinput[0] == 0x1201) { if(S_UserPageBuffer->tempUser2 != NULL) { //如果是排队测试,则保存操作人到排队测试共用操作人 if(S_UserPageBuffer->currenttestdata->testlocation > 0) SetPaiduiUser(S_UserPageBuffer->tempUser2); /*以当前选择的操作人作为本次测试数据的操作人*/ memcpy(&(S_UserPageBuffer->currenttestdata->testdata.user), S_UserPageBuffer->tempUser2, sizeof(User_Type)); startActivity(createSampleActivity, NULL); } else { AddNumOfSongToList(9, 0); SendKeyCode(1); } } /*选择操作人*/ else if((S_UserPageBuffer->lcdinput[0] >= 0x1205)&&(S_UserPageBuffer->lcdinput[0] <= 0x1209)) { S_UserPageBuffer->selectindex = S_UserPageBuffer->lcdinput[0] - 0x1205+1; SelectUser(S_UserPageBuffer->selectindex); } //编辑操作人 if(S_UserPageBuffer->lcdinput[0] == 0x120a) { startActivity(createUserManagerActivity, NULL); } }
void MainWindow::on_leTags_returnPressed() { startActivity(); }
void MainWindow::on_btnStartActivity_clicked() { startActivity(); }
/*************************************************************************************************** *FunctionName: activityInput *Description: 界面输入 *Input: *Output: *Return: *Author: xsx *Date: 2016年12月21日09:00:59 ***************************************************************************************************/ static void activityInput(unsigned char *pbuf , unsigned short len) { if(S_SysSetPageBuffer) { /*命令*/ S_SysSetPageBuffer->lcdinput[0] = pbuf[4]; S_SysSetPageBuffer->lcdinput[0] = (S_SysSetPageBuffer->lcdinput[0]<<8) + pbuf[5]; //基本信息 if(S_SysSetPageBuffer->lcdinput[0] == 0x1900) { startActivity(createDeviceInfoActivity, NULL); } //操作人管理 else if(S_SysSetPageBuffer->lcdinput[0] == 0x1901) { startActivity(createUserManagerActivity, NULL); } //网络设置 else if(S_SysSetPageBuffer->lcdinput[0] == 0x1902) { startActivity(createNetPreActivity, NULL); } //数据管理 else if(S_SysSetPageBuffer->lcdinput[0] == 0x1903) { startActivity(createRecordActivity, NULL); } //关于按键第一次按下 else if(S_SysSetPageBuffer->lcdinput[0] == 0x1909) { S_SysSetPageBuffer->pressCnt = 0; } //关于按键持续按下 else if(S_SysSetPageBuffer->lcdinput[0] == 0x190A) { S_SysSetPageBuffer->pressCnt++; } //关于按键松开 else if(S_SysSetPageBuffer->lcdinput[0] == 0x190B) { //如果是长按就输入密码进入隐藏功能 if(S_SysSetPageBuffer->pressCnt > 10) SendKeyCode(4); //短按则进入关于界面 else startActivity(createAboutUsActivity, NULL); } //隐藏密码的厂家功能 else if(S_SysSetPageBuffer->lcdinput[0] == 0x1910) { if(GetBufLen(&pbuf[7] , 2*pbuf[6]) == 6) { if(pdPASS == CheckStrIsSame(&pbuf[7], TestPassWord, 6)) { startActivity(createReTestActivity, NULL); } else if(pdPASS == CheckStrIsSame(&pbuf[7], CheckQRPassWord, 6)) { startActivity(createCheckQRActivity, NULL); } else if(pdPASS == CheckStrIsSame(&pbuf[7], AdjLedPassWord, 6)) { startActivity(createAdjustLedActivity, NULL); } else if(pdPASS == CheckStrIsSame(&pbuf[7], FactoryResetPassWord, 6)) { if(My_Pass == SystemReset()) SendKeyCode(2); else SendKeyCode(1); } else if(pdPASS == CheckStrIsSame(&pbuf[7], ChangeValueShowTypePassWord, 6)) { setIsShowRealValue(TRUE); SendKeyCode(2); } else if(pdPASS == CheckStrIsSame(&pbuf[7], UnlockLCDPassWord, 6)) { unLockLCDOneTime(); SendKeyCode(2); } /*else if(pdPASS == CheckStrIsSame(&pbuf[7], EnableUSBPassWord, 6)) { USBD_Init(&USB_OTG_dev,USB_OTG_FS_CORE_ID,&USR_desc,&USBD_MSC_cb,&USR_cb); }*/ else SendKeyCode(1); } else SendKeyCode(1); } //其他设置 else if(S_SysSetPageBuffer->lcdinput[0] == 0x1904) { startActivity(createOtherSetActivity, NULL); } //返回 else if(S_SysSetPageBuffer->lcdinput[0] == 0x1906) { backToFatherActivity(); } } }
/*************************************************************************************************** *FunctionName: activityFresh *Description: 界面刷新 *Input: *Output: *Return: *Author: xsx *Date: 2016年12月21日09:01:16 ***************************************************************************************************/ static void activityFresh(void) { unsigned char index = 0; if(S_PaiDuiPageBuffer) { S_PaiDuiPageBuffer->count2++; //界面忙 S_PaiDuiPageBuffer->pageisbusy = TRUE; //检测一次排队模块是否正常 if(Connect_Error == getPaiduiModuleStatus()) { if(TimeOut == timer_expired(&(S_PaiDuiPageBuffer->timer1))) { timer_set(&(S_PaiDuiPageBuffer->timer1), 5); SendKeyCode(6); AddNumOfSongToList(57, 2); } } //500ms刷新一次界面 if(S_PaiDuiPageBuffer->count2 % 5 == 0) { //如果当前功能处于禁止状态,且电机位置处于最大行程,且卡槽无卡,且最近的卡大于 则启用插卡自动创建功能 if((S_PaiDuiPageBuffer->timer0.interval == 65535) && (MaxLocation == GetGB_MotorLocation()) && (!CardPinIn)) { timer_set(&(S_PaiDuiPageBuffer->timer0), 1); } //如果当前空闲,且扫描时间到,则检测是否插卡了 if(TimeOut == timer_expired(&(S_PaiDuiPageBuffer->timer0))) { //如果当前空闲,且已经插卡 if((CardPinIn) && (NULL == GetCurrentTestItem())) { S_PaiDuiPageBuffer->error = CreateANewTest(PaiDuiTestType); //创建成功 if(Error_OK == S_PaiDuiPageBuffer->error) { vTaskDelay(1000 / portTICK_RATE_MS); //创建成功,则使电机远离,防止用户拔卡 MotorMoveTo(1, 2, 1000, FALSE); startActivity(createSampleActivity, NULL); return; } //排队位置满,不允许 else if(Error_PaiduiFull == S_PaiDuiPageBuffer->error) { SendKeyCode(2); AddNumOfSongToList(19, 2); timer_set(&(S_PaiDuiPageBuffer->timer0), 65535); } //创建失败 else if(Error_Mem == S_PaiDuiPageBuffer->error) { SendKeyCode(1); AddNumOfSongToList(7, 0); timer_set(&(S_PaiDuiPageBuffer->timer0), 65535); } //有卡即将测试 else if(Error_PaiDuiBusy == S_PaiDuiPageBuffer->error) { SendKeyCode(3); AddNumOfSongToList(20, 0); timer_set(&(S_PaiDuiPageBuffer->timer0), 65535); } //测试中禁止添加 else if(Error_PaiduiTesting == S_PaiDuiPageBuffer->error) { SendKeyCode(4); AddNumOfSongToList(21, 0); timer_set(&(S_PaiDuiPageBuffer->timer0), 65535); } //排队模块失联 else if(Error_PaiduiDisconnect == S_PaiDuiPageBuffer->error) { SendKeyCode(5); AddNumOfSongToList(58, 0); } } } //更新倒计时数据 for(index=0; index<PaiDuiWeiNum; index++) { S_PaiDuiPageBuffer->tempd2 = GetTestItemByIndex(index); if(S_PaiDuiPageBuffer->tempd2) { DspNum(0x1506+index, S_PaiDuiPageBuffer->tempd2->statues, 2); //超时 if(isInTimeOutStatus(S_PaiDuiPageBuffer->tempd2)) { S_PaiDuiPageBuffer->tempvalue1 = timer_Count(&(S_PaiDuiPageBuffer->tempd2->timer2)); if(S_PaiDuiPageBuffer->tempvalue1 > 60) sprintf(S_PaiDuiPageBuffer->buf, "%02dM", S_PaiDuiPageBuffer->tempvalue1/60); else sprintf(S_PaiDuiPageBuffer->buf, "%02dS", S_PaiDuiPageBuffer->tempvalue1); WriteVarIcoNum(0x1510+index*16, 50); } else { S_PaiDuiPageBuffer->tempvalue1 = timer_surplus(&(S_PaiDuiPageBuffer->tempd2->timer)); if(S_PaiDuiPageBuffer->tempvalue1 > 60) sprintf(S_PaiDuiPageBuffer->buf, "%02dM", S_PaiDuiPageBuffer->tempvalue1/60); else sprintf(S_PaiDuiPageBuffer->buf, "%02dS", S_PaiDuiPageBuffer->tempvalue1); S_PaiDuiPageBuffer->tempvalue = S_PaiDuiPageBuffer->tempd2->testdata.temperweima.CardWaitTime*60 - S_PaiDuiPageBuffer->tempvalue1; S_PaiDuiPageBuffer->tempvalue /= S_PaiDuiPageBuffer->tempd2->testdata.temperweima.CardWaitTime*60; S_PaiDuiPageBuffer->tempvalue *= 50; WriteVarIcoNum(0x1510+index*16, (unsigned short)(S_PaiDuiPageBuffer->tempvalue)); } DisText(0x1610+index*0x08, S_PaiDuiPageBuffer->buf, 10); if((S_PaiDuiPageBuffer->tempd2->statues == status_timedown) || (S_PaiDuiPageBuffer->tempd2->statues == status_timeup)){ BasicPic(0x1590+index*0x10, 1, 138, 10+85*S_PaiDuiPageBuffer->tempd2->testdata.temperweima.itemConstData.icoIndex, 10, 10+85*S_PaiDuiPageBuffer->tempd2->testdata.temperweima.itemConstData.icoIndex+75, 10+285, 91+index*110, 190); } else { //检测卡图标闪烁 if((S_PaiDuiPageBuffer->count % 2) == 0) BasicPic(0x1590+index*0x10, 1, 138, 10+85*S_PaiDuiPageBuffer->tempd2->testdata.temperweima.itemConstData.icoIndex, 10, 10+85*S_PaiDuiPageBuffer->tempd2->testdata.temperweima.itemConstData.icoIndex+75, 10+285, 91+index*110, 190); else BasicPic(0x1590+index*0x10, 0, 138, 10+85*S_PaiDuiPageBuffer->tempd2->testdata.temperweima.itemConstData.icoIndex, 10, 10+85*S_PaiDuiPageBuffer->tempd2->testdata.temperweima.itemConstData.icoIndex+75, 10+285, 91+index*110, 190); } } else { //清除倒计时时间 ClearText(0x1610+index*0x08); ClearText(0x1650+index*0x08); //显示卡凹槽 S_PaiDuiPageBuffer->myico.ICO_ID = 37; S_PaiDuiPageBuffer->myico.X = 69+index*119; S_PaiDuiPageBuffer->myico.Y = 135; BasicUI(0x1590+index*0x10 ,0x1907 , 0, &(S_PaiDuiPageBuffer->myico) , sizeof(Basic_ICO)); //时间进度条显示0 WriteVarIcoNum(0x1510+index*16, 0); } } S_PaiDuiPageBuffer->count++; if(S_PaiDuiPageBuffer->count > 65535) S_PaiDuiPageBuffer->count = 0; } //界面空闲 S_PaiDuiPageBuffer->pageisbusy = FALSE; } }
/*************************************************************************************************** *FunctionName: activityInput *Description: 界面输入 *Input: *Output: *Return: *Author: xsx *Date: 2016年12月21日09:00:59 ***************************************************************************************************/ static void activityInput(unsigned char *pbuf , unsigned short len) { if(S_PaiDuiPageBuffer) { /*命令*/ S_PaiDuiPageBuffer->lcdinput[0] = pbuf[4]; S_PaiDuiPageBuffer->lcdinput[0] = (S_PaiDuiPageBuffer->lcdinput[0]<<8) + pbuf[5]; /*返回*/ if(S_PaiDuiPageBuffer->lcdinput[0] == 0x1500) { //测试中,不允许返回 if(NULL != GetCurrentTestItem()) { SendKeyCode(4); AddNumOfSongToList(21, 0); } //即将测试,不允许返回 else if(GetMinWaitTime() < 40) { SendKeyCode(3); AddNumOfSongToList(20, 0); } else if(isSomePaiduiInOutTimeStatus()) { SendKeyCode(3); AddNumOfSongToList(20, 0); } else { //页面正在刷新数据,忙 while(S_PaiDuiPageBuffer->pageisbusy) { vTaskDelay(100 / portTICK_RATE_MS); } backToActivity(lunchActivityName); } } //继续测试 else if(S_PaiDuiPageBuffer->lcdinput[0] == 0x1501) { S_PaiDuiPageBuffer->error = CreateANewTest(PaiDuiTestType); //创建成功 if(Error_OK == S_PaiDuiPageBuffer->error) { startActivity(createSampleActivity, NULL); } //排队位置满,不允许 else if(Error_PaiduiFull == S_PaiDuiPageBuffer->error) { SendKeyCode(2); AddNumOfSongToList(19, 0); } //创建失败 else if(Error_Mem == S_PaiDuiPageBuffer->error) { SendKeyCode(1); AddNumOfSongToList(7, 0); } //有卡即将测试 else if(Error_PaiDuiBusy == S_PaiDuiPageBuffer->error) { SendKeyCode(3); AddNumOfSongToList(20, 0); } //测试中禁止添加 else if(Error_PaiduiTesting == S_PaiDuiPageBuffer->error) { SendKeyCode(4); AddNumOfSongToList(21, 0); } //排队模块失联 else if(Error_PaiduiDisconnect == S_PaiDuiPageBuffer->error) { SendKeyCode(5); AddNumOfSongToList(58, 0); } } } }
void Widget::onActivityButton() { startActivity(m_activityEdit->text()); }
void Widget::onConnectButton() { startActivity("android.settings.WIRELESS_SETTINGS"); }