1 | import java.awt.*;
|
2 | import java.awt.event.*;
|
3 | import java.io.OutputStream;
|
4 | import java.util.Enumeration;
|
5 | import javax.swing.*;
|
6 | import javax.swing.event.*;
|
7 | import javax.comm.*;
|
8 |
|
9 | public class Lüftersteuerung5 {
|
10 |
|
11 | static long startzeit = System.currentTimeMillis();
|
12 | static long endzeit;
|
13 | static int SollSpeedL1;
|
14 | static int SollSpeedL2;
|
15 | static String ComArray[]= new String[3];
|
16 | static int COMIndex = 0;
|
17 | static boolean Bit0 = true;
|
18 | static boolean Bit1 = false;
|
19 | static boolean Bit2 = true;
|
20 | static boolean Bit3 = false;
|
21 | static boolean Bit4 = false;
|
22 | static boolean Bit5 = false;
|
23 | static boolean Bit6 = false;
|
24 | static boolean Bit7 = false;
|
25 | static boolean BitArray[] = {Bit0,Bit1,Bit2,Bit3,Bit4,Bit5,Bit6,Bit7};
|
26 | static int BitIndex = 0;
|
27 | static int IstSpeedL1;
|
28 | static long MesszeitL1 = 1000;
|
29 | static int IstSpeedL2;
|
30 | static long MesszeitL2 = 1000;
|
31 |
|
32 | //****************************************************************************************
|
33 |
|
34 | //FENSTER
|
35 |
|
36 | public static void Fenster() {
|
37 |
|
38 | JFrame f = new JFrame( "Lüftersteuerung" );
|
39 |
|
40 | //Statusfeld wird erzeugt
|
41 | final JTextField TF3 = new JTextField("Status");
|
42 |
|
43 | //Slider für Lüfter 1 wird erzeugt und überwacht;Das AusgabeTextField wird ebenfalls erzeugt
|
44 | final JTextField TF1 = new JTextField("Lüfter1 aus!");
|
45 | final JSlider Slider1 = new JSlider(0,100,100);
|
46 | Slider1.setPaintTicks(true);
|
47 | Slider1.setMajorTickSpacing(50);
|
48 | Slider1.setPaintLabels(true);
|
49 | ChangeListener CL1 = new ChangeListener(){
|
50 | public void stateChanged(ChangeEvent CE1) {
|
51 | SollSpeedL1 = ((JSlider) CE1.getSource()).getValue() * 20;
|
52 | TF1.setText("Geschwindigkeit Lüfter 1: " + SollSpeedL1 + "RPM");
|
53 |
|
54 | Übertragung();//GEHE ZU ÜBERTRAGUNG;FUNKTIONIERT NICHT;DIESE ZEILE IST LAUT ECLIPSE FALSCH
|
55 |
|
56 | }
|
57 | };
|
58 | Slider1.addChangeListener(CL1);
|
59 | Slider1.setEnabled(false);
|
60 | TF1.setEnabled(false);
|
61 |
|
62 | //Kontrollkästchen 1 wird erzeugt und überwacht
|
63 | final JCheckBox Luefter1 = new JCheckBox( "Lüfter1" );
|
64 | Luefter1.setSelected(false);
|
65 | ActionListener AL1 = new ActionListener(){
|
66 | public void actionPerformed(ActionEvent AE1){
|
67 | if(Luefter1.isSelected()){
|
68 | Slider1.setEnabled(true);
|
69 | TF1.setText("Lüfter1 an!");
|
70 | TF1.setEnabled(true);
|
71 | }else{
|
72 | Slider1.setValue(100);
|
73 | Slider1.setEnabled(false);
|
74 | TF1.setText("Lüfter1 aus!");
|
75 | TF1.setEnabled(false);
|
76 | }
|
77 | }
|
78 | };
|
79 | Luefter1.addActionListener(AL1);
|
80 |
|
81 | //Slider für Lüfter 2 wird erzeugt und überwacht;Das AusgabeTextField wird ebenfalls erzeugt
|
82 | final JTextField TF2 = new JTextField("Lüfter2 aus!");
|
83 | final JSlider Slider2 = new JSlider(0,100,100);
|
84 | Slider2.setPaintTicks(true);
|
85 | Slider2.setMajorTickSpacing(50);
|
86 | Slider2.setPaintLabels(true);
|
87 | ChangeListener CL2 = new ChangeListener(){
|
88 | public void stateChanged(ChangeEvent CE2) {
|
89 | SollSpeedL2 = ((JSlider) CE2.getSource()).getValue() * 20;
|
90 | TF2.setText("Geschwindigkeit Lüfter 2:" + SollSpeedL2 + "RPM");
|
91 |
|
92 | Übertragung();//GEHE ZU ÜBERTRAGUNG;FUNKTIONIERT NICHT;DIESE ZEILE IST LAUT ECLIPSE FALSCH
|
93 |
|
94 | }
|
95 | };
|
96 | Slider2.addChangeListener(CL2);
|
97 | Slider2.setEnabled(false);
|
98 | TF2.setEnabled(false);
|
99 |
|
100 | //Kontrollkästchen 2 wird erzeugt und überwacht
|
101 | final JCheckBox Luefter2 = new JCheckBox( "Lüfter2" );
|
102 | Luefter2.setSelected(false);
|
103 | ActionListener AL2 = new ActionListener(){
|
104 | public void actionPerformed(ActionEvent AE2){
|
105 | if(Luefter2.isSelected()){
|
106 | Slider2.setEnabled(true);
|
107 | TF2.setText("Lüfter2 an!");
|
108 | TF2.setEnabled(true);
|
109 | }else{
|
110 | Slider2.setValue(100);
|
111 | Slider2.setEnabled(false);
|
112 | TF2.setText("Lüfter2 aus!");
|
113 | TF2.setEnabled(false);
|
114 | }
|
115 | }
|
116 | };
|
117 | Luefter2.addActionListener(AL2);
|
118 |
|
119 | //Fenster wird erzeugt
|
120 | Container contentPane = f.getContentPane();
|
121 | contentPane.setLayout(new GridLayout(4,2));
|
122 | contentPane.add(Luefter1);
|
123 | contentPane.add(Luefter2);
|
124 | contentPane.add(TF1);
|
125 | contentPane.add(TF2);
|
126 | contentPane.add(Slider1);
|
127 | contentPane.add(Slider2);
|
128 | contentPane.add(TF3);
|
129 | f.setResizable(false);
|
130 | f.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
|
131 | endzeit = System.currentTimeMillis();
|
132 | System.out.println(endzeit-startzeit + "ms");
|
133 | f.pack();
|
134 | f.setVisible(true);
|
135 | //FENSTER ENDE
|
136 | }
|
137 | //****************************************************************************************
|
138 |
|
139 | public static void main(String[] args){
|
140 |
|
141 | //Com Port wird ermittelt und verbunden
|
142 | Enumeration<CommPortIdentifier> portList;
|
143 | portList = CommPortIdentifier.getPortIdentifiers();
|
144 | while (portList.hasMoreElements()) {
|
145 | CommPortIdentifier PortID = portList.nextElement();
|
146 | if (PortID.getPortType() == CommPortIdentifier.PORT_SERIAL) {
|
147 | ComArray[COMIndex]=(PortID.getName());
|
148 | COMIndex++;
|
149 | }
|
150 | }
|
151 | CommPortIdentifier PortID;
|
152 | String PortName = ComArray[0];
|
153 | try {
|
154 | PortID = CommPortIdentifier.getPortIdentifier(PortName);
|
155 | final SerialPort SPort = (SerialPort) PortID.open("Lüftersteuerung",1000);
|
156 | //TF3.setText(PortName + "geöffnet");
|
157 | Fenster();
|
158 |
|
159 | //ÜBERTRAGUNG
|
160 |
|
161 | public void Übertragung{//PROGRAMMTEIL ÜBERTRAGUNG;DIESE ZEILE IST LAUT ECLIPSE FALSCH
|
162 |
|
163 | //IstSpeed wird eingelesen
|
164 | IstSpeedL1 = 0;
|
165 | while(MesszeitL1 >= System.currentTimeMillis()){
|
166 | if(SPort.isCD() == true){
|
167 | if(SPort.isCD() == false){
|
168 | IstSpeedL1++;
|
169 | }
|
170 | }
|
171 | }
|
172 |
|
173 | IstSpeedL2 = 0;
|
174 | while(MesszeitL2 >= System.currentTimeMillis()){
|
175 | if(SPort.isCD() == true){
|
176 | if(SPort.isCD() == false){
|
177 | IstSpeedL2++;
|
178 | }
|
179 | }
|
180 | }
|
181 |
|
182 | //Vergleich von IST und SOLL
|
183 |
|
184 | if(SollSpeedL2 > IstSpeedL2){
|
185 | Bit3 = true;
|
186 | Bit4 = false;
|
187 | }else if(SollSpeedL2 < IstSpeedL2){
|
188 | Bit4 = true;
|
189 | Bit3 = false;
|
190 | }else if(SollSpeedL2 == IstSpeedL2){
|
191 | Bit3 = false;
|
192 | Bit4 = false;
|
193 | }
|
194 |
|
195 | if(SollSpeedL1 > IstSpeedL1){
|
196 | Bit1 = true;
|
197 | Bit2 = false;
|
198 | }else if(SollSpeedL1 < IstSpeedL1){
|
199 | Bit2 = true;
|
200 | Bit1 = false;
|
201 | }else if(SollSpeedL1 == IstSpeedL1){
|
202 | Bit1 = false;
|
203 | Bit2 = false;
|
204 | }
|
205 |
|
206 | //Übertragung zum schieberegister
|
207 | //0xff = High Pegel;0x00 = Low Pegel
|
208 |
|
209 | while(BitIndex < BitArray.length){
|
210 | //Clock
|
211 | OutputStream out = SPort.getOutputStream();
|
212 | out.write(0xff);
|
213 | try {
|
214 | Thread.sleep(100);
|
215 | } catch (InterruptedException TS){
|
216 | }
|
217 | //Data
|
218 | SPort.setDTR(BitArray[BitIndex]);
|
219 | BitIndex++;
|
220 | }
|
221 | //Strobe
|
222 | SPort.setRTS(true);
|
223 | try {
|
224 | Thread.sleep(100);
|
225 | } catch (InterruptedException TS){
|
226 | }
|
227 | SPort.setRTS(false);
|
228 | }
|
229 | //ÜBERTRAGUNG ENDE
|
230 |
|
231 | //****************************************************************************************
|
232 |
|
233 | }catch (Exception e) {
|
234 | //TF3.setText("Fehler:\n" + e.toString());
|
235 | }
|
236 | }
|
237 | }
|