void testApp::randomPlay() { generateRandomSample = ofRandom(100); if (generateRandomSample == 50) { triggerSample(); } }
void *Seq::runThroughSequencer() { LOG_INFO("Run through Seq"); setThreadPriority(); unsigned int tempI = 0; while(sequencerPlaying){ if(currTime == -1L){ currTime = getTimeInMillsec(); triggerSample(); } if((getTimeInMillsec()-currTime)>=incrementalNoteDuration){ ++tempI; seqI = tempI % numberOfNotes; triggerSample(); currTime = getTimeInMillsec(); } } currTime = -1L; seqI = 0; pthread_exit(NULL); }
void *Seq::startSeqPrivate() { LOG_INFO("Start Seq (private)"); setThreadPriority(); unsigned int tempI = 0; while(sequencerRunning){ if(currTime == -1L){ currTime = getTimeInMillsec(); triggerSample(); } if((getTimeInMillsec()-currTime)>=incrementalNoteDuration){ ++tempI; seqI = tempI % numberOfNotes; triggerSample(); currTime = getTimeInMillsec(); } } currTime = -1L; seqI = 0; pthread_exit(NULL); }
void mcp3301Task(void *p_arg){ uint16_t v; uint16_t temp; uint32_t i; uint16_t j; char ch; (void)p_arg; rtcInit(); // mcp3301Init(64,0x43,0x50,0); /// wrong use, spiInit should be called only once!!! m25p40Init(32,0x43,0x50,0); AD1_Init(); dinInit(); doutInit(); // wfx40Init(); //rs485 水位计 YSIInit(); // RS485Init(); // TUFInit(); at24Init(); //参数初始化 configParaInit(); getDin16(&wdin);/// get Din; rtc_pause_count = 0; mcu_time_count = 0; //m25p40Init(32,0x43,0x90,0); // m25p40Init(64,0x43,0x90,0); ///////////////////////////// fix it!////////////////////////////////////////////////// /*********************************** m25p40EraseCmd(0); m25p40EraseCmd(SECTOR_BYTES); m25p40EraseCmd(SECTOR_BYTES*2); m25p40EraseCmd(SECTOR_BYTES*3); m25p40EraseCmd(SECTOR_BYTES*4); m25p40EraseCmd(SECTOR_BYTES*5); m25p40EraseCmd(SECTOR_BYTES*6); m25p40EraseCmd(SECTOR_BYTES*7);*******************/ OSTimeDly(500); // waiting for GPRS ready pcf8563Init(); //RTC trigger_minutes = 0; //启动后发送数据 //////此处增加参数初始化// fixed_sendtime1 = 0xffff; //需要改为从at24中读取 fixed_sent = 0; m25p40ParaInit(); m25_add = m25sector.start_addr; pcf8563GetTime(); m25p40Write(m25_add,"reset:",6); m25_add+=6; m25p40Write(m25_add,(uint8_t *)&pcfTime,6); m25_add+=6; pre_minutes = BCD2char(pcfTime.hour)*60 + BCD2char(pcfTime.min); stop_check_minutes = pre_minutes; ////////循环开始 //////////////////////////////////////////// req_sample = 0; rtc_pause_count = 0; mcu_time_count = 0; raingaugebak = raingauge; OSTimeDly(3500); // waiting for GPRS ready while(1){ pcf8563GetTime(); current_minutes = BCD2char(pcfTime.hour)*60 + BCD2char(pcfTime.min); /* if(current_minutes - pre_minutes >= para_send_gap_min){ req_sample = 1; req_send = 1; pre_minutes = current_minutes; } */ //需要修改,防止一分钟内重复进入 if((TRUE == triggerTime(current_minutes))&&(current_minutes != pre_minutes)){ req_sample = 1; req_send = 1; pre_minutes = current_minutes; } if(fixed_sendtime1 == current_minutes){ if(0 == fixed_sent){ req_send = 1; fixed_sent = 1; } } if(current_minutes > fixed_sendtime1 ){ fixed_sent = 0; //恢复 } if((TRUE == triggerSample(current_minutes))&&(current_minutes != pre_minutes)){ req_sample = 1; pre_minutes = current_minutes; } //判断PCF8536是否正常 if(rtc_pause_count > 15){ //大于一分钟却没有变化 if(stop_check_minutes == current_minutes){ if(mcu_time_count > 60*para_send_gap_min){ req_sample = 1; req_send = 1; mcu_time_count = 0; } }else{ stop_check_minutes = current_minutes; rtc_pause_count = 0; mcu_time_count = 0; } } rtc_pause_count++; //每个循环6秒钟 mcu_time_count++; //翻斗式雨量计 /**** 雨量采集 ****/ /** 实时采集,有降雨就发送 **/ if(raingaugebak != raingauge){ if(raingauge - raingaugebak>= RAIN_TRIGGER){ req_sample = 1; req_send = 1; } raingaugebak = raingauge; ch = '#'; sc16puts(&ch,1); configParaSet(PARA_RAIN,&raingauge,2); //只在雨量有变化才存贮 if(0 ==(raingauge%para_rain_cont)){ req_sample = 1; req_send = 1; } } if(reUDPsend){ //需要重发 ch = '$'; sc16puts(&ch,1); req_sample = 1; req_send = 1; reUDPsend = 0; } // req_sample = 1; if(req_sample){ //数字量采集 getDin16(&wdin);/// get Din; ///模拟量采集 for(i=0;i<9;i++){ adAverage[i] = 0; } for(i=0;i<3;i++){ AD1_Measure(1); AD1_GetValue16(adValues); for(j=0;j<9;j++){ adAverage[j] += (adValues[j]>>4); } } for(j=0;j<9;j++){ adAverage[j] /= 3; } for(j=0;j<4;j++){ ch = adAverage[8]>>((3-j)*4)&0x0f; ch += '0'; sc16puts(&ch,1); } sc16puts(" ",1); //485采集 /* */ #if WFX_485 setDout(0); //打开电源 OSTimeDly(200); wfx40Write(); // OSTimeDly(100); if(TRUE == wfx40Data(&waterlevel)){ sc16puts(&waterlevel,2); } /*判断界限**/ if(waterlevel > para_water_high){ req_send = 1; } OSTimeDly(100); clrDout(0); //关闭电源 #endif YSIWeekup(); OSTimeDly(50); YSITwipeb(); OSTimeDly(50); YSIWrite(); OSTimeDly(10); YSIClr(); OSTimeDly(700); YSIRead(); OSTimeDly(50); YSISleep(); /* TUFRead(); TUFWrite(); OSTimeDly(3); // TUFCSRxd(); TUFRead(); */ protocolConstruct(); m25p40Write(m25_add,(uint8_t *)&rtufile,rtufile.len*2+4); m25_add+= rtufile.len*2+4; ///以下代码根据阀值判断是否需要发送 /* if((waterlevel > high) ||(waterlevel < low)){ req_send = 1; } */ if(1 == req_send ){ if(0 == gprsIPdone){ rebootflag = 1; //重新配置gprs标志 task_active[TASKACTIVE_SAMPLE]++; gprsPrepare(); task_active[TASKACTIVE_SAMPLE]++; rebootflag = 0; } if((1 ==gprsIPdone) && (0== gprsLock)) { pro_in.no_received++; //先增加,避免在3秒时间内收到数据而统计错误 gprsSendData((uint8_t *)&rtufile,rtufile.len*2+2+2); // head + crc for(j=0;j<3;j++){ if(1 == gprsStnDone[j]){ OSTimeDly(500); gprsData(j+2,(uint8_t *)&rtufile,rtufile.len*2+2+2 + 5); // head + crc } } // pro_in.no_received++; noUDPrec = rtc_pause_count; //记录发送时间,六秒为单位 } /*else if((1 == SMSdone)&&(0== gprsLock)){ msgProtocolSend("13910996917",&rtufile); myReset(); } */ req_send = 0; OSTimeDly(300); msgGetList(); //短信列表 OSTimeDly(300); gprsShutdown(); clrDout(1); gprsIPdone =0; }else{ //增加心跳包 } for(j=0;j<4;j++){ ch = rtufile.time[2]>>((3-j)*4)&0x0f; ch += '0'; sc16puts(&ch,1); } sc16puts(" ",1); req_sample = 0; } if(0 == task_active[TASKACTIVE_SAMPLE]&0x0f){ msgGetList(); //短信列表 } if(udp_download){ //召测 i = timegap_end-timegap_start ; time_add = timegap_start; frame_buffer[0] = 'Z'; frame_buffer[1] = 'C'; j = 0; while(i){ if(i>80){ for(temp=0;temp<80;temp++){ m25p40RD(time_add,&frame_buffer[temp+2],1); time_add++; } frame_buffer[82]= j>>8; frame_buffer[83]= j&0xff; gprsSendData(frame_buffer,84); i-=80; }else{ for(temp=0;temp<i;temp++){ m25p40RD(time_add,&frame_buffer[temp+2],1); time_add++; } frame_buffer[temp+2]= 0xE5; frame_buffer[temp+3]= 0xE5; //最后一帧 gprsSendData(frame_buffer,i+4); i=0; } j++; task_active[TASKACTIVE_SAMPLE]++; } udp_download = 0; } OSTimeDly(300); task_active[TASKACTIVE_SAMPLE]++; OSTimeDly(300); }
//-------------------------------------------------------------- void testApp::update(){ /// SPHERES UPDATE /// for (int i = 0; i < redObjects.size(); i++) { //individual noise float time = ofGetElapsedTimef(); float timeScale = 5.0; float displacementScale = 2.75; ofVec3f timeOffsets = noiseObjects[i]; redObjects[i].point.x += (ofSignedNoise(time * timeScale + timeOffsets.x)) * displacementScale; redObjects[i].point.y += (ofSignedNoise(time * timeScale + timeOffsets.y)) * displacementScale; redObjects[i].point.z += (ofSignedNoise(time * timeScale + timeOffsets.y)) * displacementScale; redObjects[i].update(); } redObjects[counterObject].colorChange.set(0, 255, 180, 90); if (counterObject == redObjects.size()) { counterObject = 0; } //cout << redObjects.size() << endl; /// AUDIO UPDATE /// introVolume += 0.01; mixer.setOutputVolume(introVolume); if (introVolume >= 0.90) { introVolume = 0.95; } //MODE if (generativeMode == true) { randomPlay(); modeColor = redObjects[0].colorChange; indicator = "on"; } else if (!generativeMode) { modeColor = ofColor::black; indicator = "off"; } /// INTERACTION UPDATE /// ///Trigger samples by movement moveHand.update(); //Use the most left, middle, and right zones of screen if (moveHand.zone[0] >= 500) { triggerSample(); reactiveCircle.set(0, 255, 180, 90); moveHand.zone[0] = 0; } else { reactiveCircle = redObjects[0].colorChange; } }