⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pidtrainer.java

📁 用java编写的PID演示程序
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
import com.ms.wfc.app.*;
import com.ms.wfc.core.*;
import com.ms.wfc.ui.*;
import com.ms.wfc.html.*;

public class PIDTrainer extends Form
{
	String version = "PID Trainer Demo version 0.9a Alpha";
	BufferedControl display = new BufferedControl();
	PIDDisplay pidDisplay;
	EventHandler aeh = new EventHandler(onActivate);
	EventHandler orh = new EventHandler(onResize);
	int x = 0;
	int y = 0;
	
	public PIDTrainer()
	{
		// Required for Visual J++ Form Designer support
		initForm();		
		initEvents();
		setSize(650,425);
		//onResize(null,null);
	}

	public void onResize(Object o, Event e) {
		//Size display then move everything else
		//display.setSize(1000,1000);
		x = this.getWidth();
		y = this.getHeight();
		if (x >= 611) { 
			outputBar.setLeft(x-611+347);
			label1.setLeft(x-611+339);
			groupBox2.setLeft(x-611+409);
			label2.setLeft(x-611+387);
			label3.setLeft(x-611+387);
			outputState.setLeft(x-611+339);
			pidButton.setLeft(x-611+409);
			pidResults.setLeft(x-611+409);
			groupBox3.setLeft(x-611+518);
			display.setW(x-611+300); 
			pidDisplay.setW(185);//x-611+185);
			pidDisplay.setLeft(x-611+411);
			//pidDisplay.setAnchor(ControlAnchor.
		} else { this.setWidth(650);}
		if (y >= 339) { 	
			groupBox4.setTop(y-339+219);
			label19.setTop(y-339+224);
			timeIndexBox.setTop(y-339+222);
			madeSetpointLabel.setTop(y-339+220);
			//outputState.setTop(y-339+218);
			hurtzGroup.setTop(y-339+245);
			powerGroup.setTop(y-339+245);
			styleGroup.setTop(y-339+245);
			int temp = y-339+204;
			labelB.setTop( temp/4);// -16);
			labelC.setTop((temp/2));// -16);
			labelD.setTop( (temp*3)/4);// -16);
			//labelE.setTop(temp);// -16);
			
			display.setH(temp); 	
			pidDisplay.setH(y-339);// + 79);
		}else { this.setHeight(425);}
		//display.update();
		//this.update();
		//this.invalidate();
	}
	
	public void initEvents() {
		//NEW STUFF
		display.setOutputEdit(outputEdit);
		display.setHighEdit(highEdit);
		display.setLowEdit(lowEdit);
		display.setSize(300,204);
		//display.setLocation(75,10);
		display.setLocation(31,11);
		display.setVisible(true);
		display.setTimeIndexBox(timeIndexBox);
		display.setInfoEdit(infoEdit);
		display.setErrEdit(lerrEdit);
		display.setIntGEdit(intgEdit);
		display.setPEdit(pEdit);
		display.setIEdit(iEdit);
		display.setDEdit(dEdit);
		display.setOutputSlider(outputBar);
		display.setMadeSetpointLabel(madeSetpointLabel);
		display.setMeasurementLagEdit(measurementLagEdit);
		display.setDeadTimeEdit(deadTimeEdit);
		//NEW PID Display
		pidDisplay = new PIDDisplay(display.system);
		pidDisplay.setLocation(411,317);
		pidDisplay.setVisible(true);
		//END PID Display
		kpEdit.setText(display.system.getKp()+"");
		kiEdit.setText(display.system.getKi()+"");
		kdEdit.setText(display.system.getKd()+"");
 		measurementLagEdit.setText(display.system.measurementLagSec +"");
		deadTimeEdit.setText(display.system.deadTimeSec +"");

		groupBox1.setVisible(false);
		//infoEdit.setVisible(false);
		pidButton.setEnabled(false);
		this.add(display);
		this.add(pidDisplay);
		//In case program is run on Win2000 Systems
		this.addOnActivate(aeh);
	}
	public void dispose()
	{
		super.dispose();
		components.dispose();
		display.dispose();
	}

	public void onActivate(Object o, Event e) {
		this.focus();
		this.bringToFront();
		this.focus();
		this.update();
		this.removeOnActivate(aeh);
		this.addOnResize(orh);
		onResize(null,null);
	}
	private void outputBar_scroll(Object source, Event e)
	{
		display.system.setOutputCommand((float)outputBar.getValue()/100);
	}


	private void checkBox1_click(Object source, Event e)
	{		display.system.outputDisabled = outputState.getChecked();	}

	private void pidButton_click(Object source, Event e)
	{
		float t1, t2, t3;
		int i1, i2;
		try {
			t1 =Float.valueOf(kpEdit.getText()).floatValue();
			t2 =Float.valueOf(kiEdit.getText()).floatValue();
			t3 =Float.valueOf(kdEdit.getText()).floatValue();
			i1 = Integer.valueOf(measurementLagEdit.getText()).intValue();
			i2 = Integer.valueOf(deadTimeEdit.getText()).intValue();
			display.system.setPIDTerms(t1, t2,t3);
			display.system.setMeasurementLag(i1);
			display.system.setDeadTime(i2);
			pidButton.setEnabled(false);
		} catch (NumberFormatException excp) {}
	}

	private void kpEdit_textChanged(Object source, Event e)
	{ pidButton.setEnabled(true); }

	private void kiEdit_textChanged(Object source, Event e)
	{ pidButton.setEnabled(true); }

	private void kdEdit_textChanged(Object source, Event e)
	{ pidButton.setEnabled(true); }


	private void timeIndexBox_selectedIndexChanged(Object source, Event e)
	{	display.system.setTimeIndex( timeIndexBox.getSelectedIndex());}

	private void measurementLagEdit_textChanged(Object source, Event e)
	{pidButton.setEnabled(true);}

	private void deadTimeEdit_textChanged(Object source, Event e)
	{pidButton.setEnabled(true);}



	private void hurtzEdit_textChanged(Object source, Event e)
	{	display.system.setLoadHurtz(Float.valueOf(hurtzEdit.getText()).floatValue() ); }


	private void offCheckBox_checkedChanged(Object source, Event e) 	{
		if (offCheckBox.getChecked()) display.system.setLoadStrength(0);
		if (lowCheckBox.getChecked()) display.system.setLoadStrength(1);
		if (medCheckBox.getChecked()) display.system.setLoadStrength(2);
		if (highCheckBox.getChecked()) display.system.setLoadStrength(3);
	}


	private void squareCheckBox_checkedChanged(Object source, Event e) 	{
		if (squareCheckBox.getChecked()) display.system.setLoadType(1);
		if (sineCheckBox.getChecked()) display.system.setLoadType(2);
		if (onCheckBox.getChecked()) display.system.setLoadType(3);
	}

	/**
	 * NOTE: The following code is required by the Visual J++ form
	 * designer.  It can be modified using the form editor.  Do not
	 * modify it using the code editor.
	 */
	Container components = new Container();
	GroupBox groupBox1 = new GroupBox();
	Edit infoEdit = new Edit();
	TrackBar outputBar = new TrackBar();
	Label label1 = new Label();
	Label label2 = new Label();
	Label label3 = new Label();
	CheckBox outputState = new CheckBox();
	GroupBox groupBox2 = new GroupBox();
	Edit kpEdit = new Edit();
	Edit kiEdit = new Edit();
	Edit kdEdit = new Edit();
	Label Kp = new Label();
	Label label4 = new Label();
	Label label5 = new Label();
	Label labelA = new Label();
	Label labelC = new Label();
	Label labelB = new Label();
	Label labelD = new Label();
	Edit lerrEdit = new Edit();
	Edit intgEdit = new Edit();
	Label label11 = new Label();
	Label label12 = new Label();
	ComboBox timeIndexBox = new ComboBox();
	Panel panel1 = new Panel();
	GroupBox groupBox3 = new GroupBox();
	Edit measurementLagEdit = new Edit();
	Label label13 = new Label();
	Edit deadTimeEdit = new Edit();
	Label label14 = new Label();
	Button pidButton = new Button();
	GroupBox groupBox4 = new GroupBox();
	Label label15 = new Label();
	Label label16 = new Label();
	Label label17 = new Label();
	Label label18 = new Label();
	Label label19 = new Label();
	GroupBox styleGroup = new GroupBox();
	GroupBox powerGroup = new GroupBox();
	RadioButton squareCheckBox = new RadioButton();
	RadioButton sineCheckBox = new RadioButton();
	RadioButton offCheckBox = new RadioButton();
	RadioButton lowCheckBox = new RadioButton();
	RadioButton medCheckBox = new RadioButton();
	RadioButton highCheckBox = new RadioButton();
	GroupBox hurtzGroup = new GroupBox();
	Edit hurtzEdit = new Edit();
	MainMenu mainMenu1 = new MainMenu();
	MenuItem menuItem1 = new MenuItem();
	MenuItem menuItem2 = new MenuItem();
	RadioButton onCheckBox = new RadioButton();
	GroupBox pidResults = new GroupBox();
	Edit pEdit = new Edit();
	Label label20 = new Label();
	Edit iEdit = new Edit();
	Edit dEdit = new Edit();
	Label label21 = new Label();
	Label label22 = new Label();
	Label label23 = new Label();
	Label madeSetpointLabel = new Label();
	Edit highEdit = new Edit();
	Edit lowEdit = new Edit();
	Edit outputEdit = new Edit();

	private void initForm()
	{
		// NOTE:  This form is storing resource information in an
		// external file.  Do not modify the string parameter to any
		// resources.getObject() function call. For example, do not
		// modify "foo1_location" in the following line of code
		// even if the name of the Foo object changes: 
		//   foo1.setLocation((Point)resources.getObject("foo1_location"));

		IResourceManager resources = new ResourceManager(this, "PIDTrainer");
		groupBox1.setAnchor(ControlAnchor.LEFT);
		groupBox1.setLocation(new Point(8, 327));
		groupBox1.setSize(new Point(245, 216));
		groupBox1.setTabIndex(0);
		groupBox1.setTabStop(false);
		groupBox1.setText("Information");

		infoEdit.setAnchor(ControlAnchor.ALL);
		infoEdit.setCursor(Cursor.NO);
		infoEdit.setLocation(new Point(8, 16));
		infoEdit.setSize(new Point(228, 192));
		infoEdit.setTabIndex(0);
		infoEdit.setTabStop(false);
		infoEdit.setText("");
		infoEdit.setMultiline(true);
		infoEdit.setReadOnly(true);

		outputBar.setLocation(new Point(347, 16));
		outputBar.setSize(new Point(42, 199));
		outputBar.setTabIndex(1);
		outputBar.setTabStop(false);
		outputBar.setText("trackBar1");
		outputBar.setAutoSize(false);
		outputBar.setLargeChange(20);
		outputBar.setMaximum(100);
		outputBar.setOrientation(Orientation.VERTICAL);
		outputBar.setTickStyle(TickStyle.BOTH);
		outputBar.setTickFrequency(10);
		outputBar.addOnScroll(new EventHandler(this.outputBar_scroll));

		label1.setLocation(new Point(339, 0));
		label1.setSize(new Point(56, 16));
		label1.setTabIndex(2);
		label1.setTabStop(false);
		label1.setText("Output");
		label1.setTextAlign(HorizontalAlignment.CENTER);

		label2.setLocation(new Point(387, 24));
		label2.setSize(new Point(16, 16));
		label2.setTabIndex(4);
		label2.setTabStop(false);
		label2.setText("0");

		label3.setLocation(new Point(387, 199));
		label3.setSize(new Point(16, 16));
		label3.setTabIndex(3);
		label3.setTabStop(false);
		label3.setText("1");

		outputState.setBackColor(Color.YELLOW);
		outputState.setForeColor(Color.RED);
		outputState.setLocation(new Point(339, 218));
		outputState.setSize(new Point(64, 23));
		outputState.setTabIndex(5);
		outputState.setText("Disable");
		outputState.setAppearance(Appearance.BUTTON);
		outputState.addOnClick(new EventHandler(this.checkBox1_click));

		groupBox2.setBackColor(Color.CONTROL);
		groupBox2.setForeColor(Color.WINDOWTEXT);
		groupBox2.setLocation(new Point(409, 3));
		groupBox2.setSize(new Point(103, 141));
		groupBox2.setTabIndex(6);
		groupBox2.setTabStop(false);
		groupBox2.setText("PID Terms");

		kpEdit.setLocation(new Point(32, 16));
		kpEdit.setSize(new Point(58, 20));
		kpEdit.setTabIndex(0);
		kpEdit.setText("");
		kpEdit.addOnTextChanged(new EventHandler(this.kpEdit_textChanged));

		kiEdit.setLocation(new Point(32, 40));
		kiEdit.setSize(new Point(58, 20));
		kiEdit.setTabIndex(1);
		kiEdit.setText("");
		kiEdit.addOnTextChanged(new EventHandler(this.kiEdit_textChanged));

		kdEdit.setLocation(new Point(33, 64));
		kdEdit.setSize(new Point(58, 20));
		kdEdit.setTabIndex(2);
		kdEdit.setText("");
		kdEdit.addOnTextChanged(new EventHandler(this.kdEdit_textChanged));

		Kp.setLocation(new Point(8, 16));
		Kp.setSize(new Point(24, 16));
		Kp.setTabIndex(7);
		Kp.setTabStop(false);
		Kp.setText("Kp");

		label4.setLocation(new Point(8, 40));
		label4.setSize(new Point(24, 16));
		label4.setTabIndex(6);
		label4.setTabStop(false);
		label4.setText("Ki");

		label5.setLocation(new Point(8, 64));
		label5.setSize(new Point(24, 16));
		label5.setTabIndex(5);
		label5.setTabStop(false);
		label5.setText("Kd");

		labelA.setForeColor(Color.BLUE);
		labelA.setLocation(new Point(11, 8));
		labelA.setSize(new Point(16, 16));
		labelA.setTabIndex(11);
		labelA.setTabStop(false);
		labelA.setText("95");

		labelC.setForeColor(Color.BLUE);
		labelC.setLocation(new Point(11, 96));
		labelC.setSize(new Point(16, 16));
		labelC.setTabIndex(10);
		labelC.setTabStop(false);
		labelC.setText("75");

		labelB.setForeColor(Color.BLUE);
		labelB.setLocation(new Point(11, 48));
		labelB.setSize(new Point(16, 16));
		labelB.setTabIndex(9);
		labelB.setTabStop(false);
		labelB.setText("85");

		labelD.setForeColor(Color.BLUE);
		labelD.setLocation(new Point(11, 144));
		labelD.setSize(new Point(16, 16));
		labelD.setTabIndex(8);
		labelD.setTabStop(false);
		labelD.setText("65");

		lerrEdit.setBackColor(Color.INACTIVECAPTIONTEXT);
		lerrEdit.setLocation(new Point(32, 88));
		lerrEdit.setSize(new Point(58, 20));

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -