A warning message shows up if a circuit with missing pin numbers is exported to a hardware-related file.

This commit is contained in:
hneemann 2017-06-21 14:22:24 +02:00
parent ffe1b77a7d
commit 4f6511d91f
8 changed files with 59 additions and 19 deletions

View File

@ -8,6 +8,7 @@ planned as v0.13
test cases that depend on a non-null default value, this tests will fail. To
resolve this issue, reset the default value.
- A warning message shows up if a circuit with unnamed inputs/outputs is analysed.
- A warning message shows up if a circuit with missing pin numbers is exported to a hardware-related file.
- Comments are allowed in hex files.
v0.12.1, released on 05. Jun 2016

View File

@ -268,7 +268,7 @@ public class ModelAnalyser {
}
};
TruthTable tt = new TruthTable();
TruthTable tt = new TruthTable().setPinsWithoutNumber(model.getPinsWithoutNumber());
for (Signal s : inputs)
tt.addVariable(s.getName());

View File

@ -28,6 +28,7 @@ public class TruthTable {
private final ArrayList<Result> results;
private final TreeMap<String, Integer> pins;
private transient BitSetter bitSetter;
private ArrayList<String> pinsWithoutNumber = null;
/**
* Load the given file and returns a truth table instance
@ -463,6 +464,26 @@ public class TruthTable {
return pins;
}
/**
* Sets the missing pin number flag
*
* @param pinsWithoutNumber list of pins without a number or null
* @return this for chained calls
*/
public TruthTable setPinsWithoutNumber(ArrayList<String> pinsWithoutNumber) {
this.pinsWithoutNumber = pinsWithoutNumber;
return this;
}
/**
* @return list of pins without a number or null
*/
public ArrayList<String> getPinsWithoutNumber() {
return pinsWithoutNumber;
}
/**
* A single result column
*/

View File

@ -533,6 +533,19 @@ public class Model implements Iterable<Node> {
return found;
}
/**
* @return list of pins without a number
*/
public ArrayList<String> getPinsWithoutNumber() {
ArrayList<String> sigWithoutPinNumber = null;
for (Signal s : signals)
if (s.missingPinNumber()) {
if (sigWithoutPinNumber == null) sigWithoutPinNumber = new ArrayList<>();
sigWithoutPinNumber.add(s.getName());
}
return sigWithoutPinNumber;
}
/**
* A filter for nodes.
*

View File

@ -7,6 +7,7 @@ public final class Signal implements Comparable<Signal> {
private final String name;
private final ObservableValue value;
private int pinNumber;
private boolean isPin = false;
/**
* Creates a new Instance
@ -35,6 +36,7 @@ public final class Signal implements Comparable<Signal> {
*/
public Signal setPinNumber(int pinNumber) {
this.pinNumber = pinNumber;
isPin = true;
return this;
}
@ -92,4 +94,10 @@ public final class Signal implements Comparable<Signal> {
}
/**
* @return true if a pin number is missing
*/
public boolean missingPinNumber() {
return isPin && pinNumber <= 0;
}
}

View File

@ -37,10 +37,7 @@ import de.neemann.digital.gui.SaveAsHelper;
import de.neemann.digital.gui.components.AttributeDialog;
import de.neemann.digital.gui.components.ElementOrderer;
import de.neemann.digital.lang.Lang;
import de.neemann.gui.ErrorMessage;
import de.neemann.gui.MyFileChooser;
import de.neemann.gui.Screen;
import de.neemann.gui.ToolTipAction;
import de.neemann.gui.*;
import javax.swing.*;
import javax.swing.event.TableModelEvent;
@ -208,7 +205,7 @@ public class TableDialog extends JDialog {
bar.add(createSetMenu());
bar.add(createCreateMenu(parent));
bar.add(createCreateMenu());
setJMenuBar(bar);
@ -362,7 +359,7 @@ public class TableDialog extends JDialog {
setModel(new TruthTableTableModel(t));
}
private JMenu createCreateMenu(JFrame parent) {
private JMenu createCreateMenu() {
JMenu createMenu = new JMenu(Lang.get("menu_table_create"));
createMenu.add(new ToolTipAction(Lang.get("menu_table_createCircuit")) {
@Override
@ -427,11 +424,7 @@ public class TableDialog extends JDialog {
@Override
public void actionPerformed(ActionEvent actionEvent) {
Gal16v8JEDECExporter jedecExporter = new Gal16v8JEDECExporter();
if (createHardware(new ExpressionToFileExporter(jedecExporter), filename, "jed"))
new ShowStringDialog(parent,
Lang.get("win_pinMapDialog"),
jedecExporter.getPinMapping().toString())
.setVisible(true);
createHardware(new ExpressionToFileExporter(jedecExporter), filename, "jed");
}
}.setToolTip(Lang.get("menu_table_create_jedec_tt")).createJMenuItem());
hardware.add(gal16v8);
@ -447,11 +440,7 @@ public class TableDialog extends JDialog {
@Override
public void actionPerformed(ActionEvent actionEvent) {
Gal22v10JEDECExporter jedecExporter = new Gal22v10JEDECExporter();
if (createHardware(new ExpressionToFileExporter(jedecExporter), filename, "jed"))
new ShowStringDialog(parent,
Lang.get("win_pinMapDialog"),
jedecExporter.getPinMapping().toString())
.setVisible(true);
createHardware(new ExpressionToFileExporter(jedecExporter), filename, "jed");
}
}.setToolTip(Lang.get("menu_table_create_jedec_tt")).createJMenuItem());
hardware.add(gal22v10);
@ -519,6 +508,14 @@ public class TableDialog extends JDialog {
new ErrorMessage(Lang.get("msg_errorDuringCalculation")).addCause(e).show(this);
}
}
ArrayList<String> pinsWithoutNumber = model.getTable().getPinsWithoutNumber();
if (pinsWithoutNumber != null)
JOptionPane.showMessageDialog(TableDialog.this,
new LineBreaker().toHTML().breakLines(Lang.get("msg_thereAreMissingPinNumbers", pinsWithoutNumber)),
Lang.get("msg_warning"),
JOptionPane.WARNING_MESSAGE);
return result;
}

View File

@ -923,6 +923,7 @@ Die Icons stammen aus dem Tango Desktop Project.</string>
<string name="msg_signal_N">Leitung {0}</string>
<string name="msg_invalidSignalsAnalysed">Wenn Ein- oder Ausgänge keinen Namen haben, werden diese nicht
als Variablen in die Analyse einbezogen, sondern wie Konstanten behandelt!</string>
<string name="msg_thereAreMissingPinNumbers">Für die Pins {0} wurden keine Pinnummern festgelegt!</string>
<string name="ok">Ok</string>
<string name="rot_0"></string>
@ -938,7 +939,6 @@ Die Icons stammen aus dem Tango Desktop Project.</string>
<string name="win_measures">Messwerte</string>
<string name="win_measures_fullstep">Messwerte im Vollschrittmodus</string>
<string name="win_measures_microstep">Messwerte im Einzelgattermodus</string>
<string name="win_pinMapDialog">Pin-Zuordnung</string>
<string name="win_saveChanges">Änderungen speichern?</string>
<string name="win_stateChanged">Die Datei wurde verändert!</string>
<string name="win_table">Tabelle</string>

View File

@ -910,6 +910,7 @@ The icons are taken from the Tango Desktop Project.</string>
<string name="msg_signal_N">Signal {0}</string>
<string name="msg_invalidSignalsAnalysed">If inputs or outputs have no name set, they are not included
as variables in the analysis, but treated as constants!</string>
<string name="msg_thereAreMissingPinNumbers">No pin numbers assigned to the pins {0}!</string>
<string name="ok">Ok</string>
<string name="rot_0"></string>
@ -925,7 +926,6 @@ The icons are taken from the Tango Desktop Project.</string>
<string name="win_measures">Measurements</string>
<string name="win_measures_fullstep">Measurements full clock step</string>
<string name="win_measures_microstep">Measurements single gate step</string>
<string name="win_pinMapDialog">Pin Mapping</string>
<string name="win_saveChanges">Save Changes?</string>
<string name="win_stateChanged">State Changed!</string>
<string name="win_table">Table</string>