UINT16 GetChanVal(BYTE pin){ UINT16 val; BYTE mode = GetChannelMode(pin); switch (mode){ case HIGH_IMPEDANCE: val=1; break; case IS_DI: case IS_DO: case IS_COUNTER_INPUT_HOME: case IS_COUNTER_OUTPUT_HOME: val = GetDIO(pin); break; case IS_SERVO: val = GetServoPos(pin); break; case IS_PWM: val = GetPWM(pin); break; case IS_DC_MOTOR_VEL: case IS_DC_MOTOR_DIR: val = GetDCMotor(pin); break; case IS_ANALOG_IN: val=GetADC(pin); break; default: val=1; break; } return val; }
void initPinState(uint8_t i){ uint8_t mode =GetChannelMode(i); if ((mode == IS_ANALOG_IN) ){ setDataTableCurrentValue(i,GetADC(i)); }else if(((mode == IS_DI) ) || ((mode == IS_COUNTER_INPUT_HOME)||(mode == IS_COUNTER_OUTPUT_HOME))){ setDataTableCurrentValue(i,GetDIO(i)?1:0); }else{ //setDataTableCurrentValue(i,0); } }
boolean checkDigital(){ int i; for(i=0;i<GetNumberOfIOChannels();i++){ uint8_t mode = GetChannelMode(i); boolean run = (((mode == IS_DI) ) || ((mode == IS_COUNTER_INPUT_HOME)||(mode == IS_COUNTER_OUTPUT_HOME) || (mode == IS_SERVO))); if (run){ if(mode == IS_SERVO){ //setDataTableCurrentValue(i,GetServoPos(i)); }else{ if(GetValFromAsync(i) != GetDIO(i)){ setDataTableCurrentValue(i,GetDIO(i)); //printAsync(); } } } if(mode == IS_UART_RX){ setDataTableCurrentValue(i,Get_UART_Byte_CountPassThrough()); } } return true; }