Esempio n. 1
0
unsigned long Encoder::read() {
	if(mode == MODE_NOSET) return 0L;

	if(mode == MODE_CAPTURE)
	{
		if(capture_state == INTR_A_PULSE_LOW)
			return (pulseInData[mcn][0][0]/100L);
		else if(capture_state == INTR_A_PULSE_HIGH)
			return (pulseInData[mcn][0][1]/100L);
		else if(capture_state == INTR_B_PULSE_LOW)
			return (pulseInData[mcn][1][0]/100L);
		else if(capture_state == INTR_B_PULSE_HIGH)
			return (pulseInData[mcn][1][1]/100L);
		else if(capture_state == INTR_Z_PULSE_LOW)
			return (pulseInData[mcn][2][0]/100L);
		else if(capture_state == INTR_Z_PULSE_HIGH)
			return (pulseInData[mcn][2][1]/100L);
		else
			return 0L;
	}
	
	if(mode == MODE_SSI) return mcssi_ReadData(mcn, mdn);

	return mcenc_ReadPulCnt(mcn, mdn);
}
Esempio n. 2
0
unsigned long Encoder::read() {
	unsigned long tmp = 0L;
	if(mode == MODE_NOSET) return 0L;

#if defined (DMP_DOS_BC) || (DMP_DOS_DJGPP)
	if(mode == MODE_CAPTURE)
	{
		if(capture_state == INTR_A_PULSE_LOW)
			return (pulseInData[mcn][0][0]/100L);
		else if(capture_state == INTR_A_PULSE_HIGH)
			return (pulseInData[mcn][0][1]/100L);
		else if(capture_state == INTR_B_PULSE_LOW)
			return (pulseInData[mcn][1][0]/100L);
		else if(capture_state == INTR_B_PULSE_HIGH)
			return (pulseInData[mcn][1][1]/100L);
		else if(capture_state == INTR_Z_PULSE_LOW)
			return (pulseInData[mcn][2][0]/100L);
		else if(capture_state == INTR_Z_PULSE_HIGH)
			return (pulseInData[mcn][2][1]/100L);
		else
			return 0L;
	}

	if(mode == MODE_SSI) return mcssi_ReadData(mcn, mdn);

	return mcenc_ReadPulCnt(mcn, mdn);
#elif defined (DMP_LINUX)
	lockMCMSIF();
 
	if(mode == MODE_CAPTURE) {unLockMCMSIF(); return tmp;}
	
	if(mode == MODE_SSI)
	{
		tmp = mcssi_ReadData(mcn, mdn);
		unLockMCMSIF();
		return tmp;
	}
	
	tmp = mcenc_ReadPulCnt(mcn, mdn);
	unLockMCMSIF();
	return tmp;
#endif
}