int32_t UP3D_GetSystemState() { int32_t state = UP3D_GetParameter(0x10); if( (state<0) || (state>22) ) state = 23; return state; }
int32_t UP3D_GetMachineState() { int32_t state = UP3D_GetParameter(0x00); if( (state<0) || (state>4) ) state = 5; return state; }
int32_t UP3D_GetProgramState() { int32_t state = UP3D_GetParameter(0x01); if( (state<0) || (state>3) ) state = 4; return state; }
float UP3D_GetHeaterTemp(int heater) { if( (heater<1) || (heater>4) ) return -1; uint32_t f = UP3D_GetParameter(0x06 + heater -1); return *((float*)&f); }
int32_t UP3D_GetMotorState(int motor) { if( (motor<1) || (motor>4) ) return -1; int32_t state = UP3D_GetParameter(0x02 + motor - 1); if( (state<0) || (state>5) ) state = 6; return state; }
int32_t UP3D_GetAxisState(int axis) { if( (axis<1) || (axis>4) ) return -1; int32_t state = UP3D_GetParameter(0x1E + axis - 1); if( state>2 ) state = 3; return state; }
int32_t UP3D_GetPrintState() { return UP3D_GetParameter(0x1C); }
int32_t UP3D_GetFeedErrorLength() { return UP3D_GetParameter(0x1D); //QQQ /1000 ? }
float UP3D_GetFeedBackLength() { return ((float)UP3D_GetParameter(0x36))/1000; }
uint32_t UP3D_GetNegativeLimitState(int motor) { if( (motor<1) || (motor>4) ) return -1; return UP3D_GetParameter(0x26 + motor - 1); }
int32_t UP3D_GetSupportState() { return UP3D_GetParameter(0x11); }
int32_t UP3D_GetCheckLightKey() { return UP3D_GetParameter(0x34); }
int32_t UP3D_GetReadFromSD() { return UP3D_GetParameter(0x36); }
int32_t UP3D_GetUsedNozzle() { return UP3D_GetParameter(0x2C); }
int32_t UP3D_GetCheck24V() { return UP3D_GetParameter(0x32); }
float UP3D_GetChangeNozzleTime() { return ((float)UP3D_GetParameter(0x2A))/1000; }
int32_t UP3D_GetTimeRemaining() { return UP3D_GetParameter(0x4D); }
int32_t UP3D_GetPercent() { return UP3D_GetParameter(0x4C); }
float UP3D_GetHeight() { uint32_t f = UP3D_GetParameter(0x0B); return *((float*)&f); }
int32_t UP3D_GetLayer() { return UP3D_GetParameter(0x0A); }
float UP3D_GetJumpTime() { return ((float)UP3D_GetParameter(0x2B))/1000; }
int32_t UP3D_GetHeaterTempReached(int heater) { if( (heater<1) || (heater>2) ) return -1; return UP3D_GetParameter(0x12 + heater - 1); }
int32_t UP3D_GetCheckDoor() { return UP3D_GetParameter(0x31); }
int32_t UP3D_GetHeaterState(int heater) { if( (heater<1) || (heater>3) ) return -1; return UP3D_GetParameter(0x14 + heater - 1); }
int32_t UP3D_GetCheckPowerKey() { return UP3D_GetParameter(0x33); }
int32_t UP3D_GetHeaterTargetTemp(int heater) { if( (heater<1) || (heater>4) ) return -1; return UP3D_GetParameter(0x2D + heater -1); }
int32_t UP3D_GetCheckWorkRoomFan() { return UP3D_GetParameter(0x35); }
int32_t UP3D_GetHF(int heater) { if( (heater<1) || (heater>4) ) return -1; return UP3D_GetParameter(0x18 + heater - 1); }
int32_t UP3D_GetWriteToSD() { return UP3D_GetParameter(0x37); }
static void update_state(bool redrawall) { int rows, cols; getmaxyx(stdscr,rows,cols); if( redrawall ) { clear(); attrset(COLOR_PAIR(1)); attron(A_UNDERLINE); mvhline(0,0,' ',cols); attron(A_BOLD); mvprintw(0,(cols-11)/2,"UP!3D SHELL"); attroff(A_UNDERLINE|A_BOLD); attrset(COLOR_PAIR(8)); mvhline(rows-1,0,' ',cols); mvprintw(rows-1,(cols-21)/2,"Press ^C to quit."); } attrset(COLOR_PAIR(1)); move(2,0); printw_b("Machine-State:"); int32_t mstat = UP3D_GetMachineState(); printw(" (%1d) %-16.16s", mstat, UP3D_STR_MACHINE_STATE[mstat] ); move(2,(cols-40)/2); printw_b("Program-State:"); int32_t pstat = UP3D_GetProgramState(); printw(" (%1d) %-19.19s", pstat, UP3D_STR_PROGRAM_STATE[pstat] ); move(2,cols-42); printw_b("System-State:"); int32_t sstat = UP3D_GetSystemState(); printw(" (%02d) %-22.22s", sstat, UP3D_STR_SYSTEM_STATE[sstat] ); attron(A_UNDERLINE);mvhline(3,0,' ',cols);attroff(A_UNDERLINE); int m; for( m=1; m<5; m++ ) { move(5+m-1,0); printw_b("Motor %d: State:",m ); int32_t motstat = UP3D_GetMotorState(m); printw(" (%1d) %-9.9s", motstat, UP3D_STR_MOTOR_STATE[motstat] ); printw(" | "); printw_b("Limit+:"); printw(" (%08x)", UP3D_GetPositiveLimitState(m) ); printw(" | "); printw_b("Limit-:"); printw(" (%08x)", UP3D_GetNegativeLimitState(m) ); printw(" | "); printw_b("Axis %s State:",UP3D_STR_AXIS_NAME[m-1]); int32_t astat = UP3D_GetAxisState(m); printw(" (%1d) %-12.12s", astat, UP3D_STR_AXIS_STATE[astat] ); printw_b("Pos:"); int32_t apos = UP3D_GetAxisPosition(m); printw(" %-12d (%-12.3f)", apos, (float)apos / 854.0 ); } attron(A_UNDERLINE);mvhline(9,0,' ',cols);attroff(A_UNDERLINE); move(11,0); printw_b("Print-State:"); printw(" %-12s ", UP3D_GetPrintState()?"Printing":"Not Printing" ); printw_b("Layer:"); printw(" %-4d ", UP3D_GetLayer() ); printw_b("Height:"); printw(" %-12.3f ", UP3D_GetHeight() ); move(11,(cols-14)/2); printw_b("Progress:"); printw(" %3d%%", UP3D_GetPercent() ); move(11,cols-24); printw_b("Time Remaining:"); int32_t tr = UP3D_GetTimeRemaining(); int32_t trh = tr / (60*60); tr -= trh*60*60; int32_t trm = tr / 60; tr -= trm*60; int32_t trs = tr; printw(" %2d:%02d:%02d", trh,trm,trs ); attron(A_UNDERLINE);mvhline(12,0,' ',cols);attroff(A_UNDERLINE); int h; for( h=1; h<5; h++ ) { move(14+h-1,0); printw_b("Heater %d: ActualTemp:",h ); printw(" %5.1f C ", UP3D_GetHeaterTemp(h) ); printw_b("TargetTemp:" ); printw(" %3d.0 C ", UP3D_GetHeaterTargetTemp(h) ); int32_t sh = UP3D_GetHeaterSetTemp(h); if( sh>=0 ) { printw_b("SetTemp:" ); printw(" %3d.0 C ", sh ); } int32_t rh = UP3D_GetHeaterTempReached(h); if( rh>=0 ) { printw_b("Temp Reached:" ); printw(" %-3s ", rh?"YES":"NO" ); } else printw(" "); int32_t ph = UP3D_GetHeaterState(h); if( ph>=0 ) { printw_b("Heating:" ); if( ph>1 ) { ph*=2; int32_t phh = ph / (60*60); tr -= phh*60*60; int32_t phm = ph / 60; ph -= phm*60; int32_t phs = ph; printw(" %d:%02d:%02d", phh,phm,phs ); } else printw(" %-15s ", ph?"On":"Off" ); } move(14+h-1,cols-30); printw_b(" *** HF %d:",h ); printw(" %-11d", UP3D_GetHF(h) ); } attron(A_UNDERLINE);mvhline(18,0,' ',cols);attroff(A_UNDERLINE); move(20,0); printw_b("Have Support:"); printw(" %-3s ", UP3D_GetSupportState()?"Yes":"No"); printw_b("Feed Error Length:"); printw(" %4d ", UP3D_GetFeedErrorLength() ); printw_b("Feed Back Length:"); printw(" %7.3f ", UP3D_GetFeedBackLength() ); printw_b("Change Nozzle Time:"); printw(" %7.3f ", UP3D_GetChangeNozzleTime() ); printw_b("Jump Time:"); printw(" %7.3f ", UP3D_GetJumpTime() ); printw_b("Using Nozzle:"); printw(" %2d ", UP3D_GetUsedNozzle() ); attron(A_UNDERLINE);mvhline(21,0,' ',cols);attroff(A_UNDERLINE); move(23,0); printw_b("Check Door:"); printw(" %4d ", UP3D_GetCheckDoor()); printw_b("Check 24V:"); printw(" %4d ", UP3D_GetCheck24V()); printw_b("Check PowerKey:"); printw(" %4d ", UP3D_GetCheckPowerKey()); printw_b("Check LightKey:"); printw(" %4d ", UP3D_GetCheckLightKey()); printw_b("Check WorkRoomFan:"); printw(" %4d ", UP3D_GetCheckWorkRoomFan()); attron(A_UNDERLINE);mvhline(24,0,' ',cols);attroff(A_UNDERLINE); move(26,0); printw_b("Read From SD Card:"); printw(" %1d ", UP3D_GetReadFromSD()); printw_b("Write To SD Card:"); printw(" %1d ", UP3D_GetWriteToSD()); printw_b("PausePRG:"); printw(" %1d ", UP3D_GetParameter(0x0c)); printw_b("StopPRG:"); printw(" %1d ", UP3D_GetParameter(0x0d)); printw_b("InitPRG:"); printw(" %1d ", UP3D_GetParameter(0x0e)); printw_b("ISTATE:"); printw(" %d ", UP3D_GetParameter(0x0f)); attron(A_UNDERLINE);mvhline(27,0,' ',cols);attroff(A_UNDERLINE); int r=29; move(r++,0); int g; for(g=0x3d;g<0x100;g++) { if( 0==g%12 ) move(r++,0); printw_b("%02X:",g);printw("%08x ", UP3D_GetParameter(g)); } /* move(r++,0); for(g=0x50;g<0x54;g++) { uint32_t f = UP3D_GetParameter(g); printw_b("%02X:",g);printw("%f ", *((float*)&f) ); } */ move(r++,0); for(g=0x84;g<0x8A;g++) { uint32_t f = UP3D_GetParameter(g); printw_b("%02X:",g);printw("%f ", *((float*)&f) ); } move(r++,0); for(g=0x97;g<0x9F;g++) { uint32_t f = UP3D_GetParameter(g); printw_b("%02X:",g);printw("%f ", *((float*)&f) ); } //move(29,0);for(g=0x3d;g<0x45;g++){ printw_b("$%02X:",g);printw(" %08x ", UP3D_GetParameter(g));} //move(30,0);for(g=0x45;g<0x4c;g++){ printw_b("$%02X:",g);printw(" %08x ", UP3D_GetParameter(g));} refresh(); }