📄 rotaryencoder.java
字号:
package cn.com.yuzhiqiang.pcimotor;
public class RotaryEncoder extends ControlMotor {
private static int ILastposition_left = 0;
private static int ILastposition_right = 0;
private static int IMeasureDistance = 0;
private static int ICurrentposition_left = 0;
private static int ICurrentposition_right = 0;
private static void RecordLeftPosition() {
ILastposition_left = ICurrentposition_left;
ICurrentposition_left = ControlMotor.ReadEP(motor.ZAXIS);// 用Z轴的实位计数器
}
private static void RecordRightPosition() {
ILastposition_right = ICurrentposition_right;
ICurrentposition_right = ControlMotor.ReadEP(motor.UAXIS);// 用U轴的实为计数器
}
public static void MeasureDistance() {
RecordLeftPosition();
RecordRightPosition();
// 考虑实位计数器到达极限时变小的情况
int iLeftdistance = ICurrentposition_left - ILastposition_left;
int iRightdistance = ICurrentposition_right - ILastposition_right;
if (ICurrentposition_left < ILastposition_left)
iLeftdistance += 2147483647;
if (ICurrentposition_right < ILastposition_right)
iRightdistance += 2147483647;
IMeasureDistance = (iLeftdistance + iRightdistance) / 2;//还要考虑到减速齿轮
}
public static int ReadLLposition() {
return ILastposition_left;
}
public static int ReadLCposition() {
return ICurrentposition_left;
}
public static int ReadRLposition() {
return ILastposition_right;
}
public static int ReadRCposition() {
return ICurrentposition_right;
}
public static int ReadMeasureDistance() {
return IMeasureDistance;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -