Simulation TP 6
Seance de TP 6
Le sujet du TP, noté, vous sera communiqué (et expliqué) durant la seance de Cours.
La page de Eric Brunneton
Pour ce TP, vous aurez besoin de code suivant:
package digital;
import GenCol.entity;
import genDevs.modeling.content;
import genDevs.modeling.message;
import simView.ViewableAtomic;
public class Ptrans extends ViewableAtomic {
private boolean grid_;
private boolean source_;
private boolean sink_;
public static entity zero = new entity("zero");
public static entity un = new entity("un");
public Ptrans(){
super("Ptrans");
source_ = true;
grid_ = false;
addInport("src");
addInport("cmd");
addOutport("sink");
addTestInput("src",un);
addTestInput("src",zero);
addTestInput("cmd",un);
addTestInput("cmd",zero);
addTestInput("src",un,1.0);
addTestInput("src",zero,1.0);
addTestInput("cmd",un,1.0);
addTestInput("cmd",zero,1.0);
}
public Ptrans(String name,boolean autosrc) {
super(name);
source_ = autosrc;
grid_ = false;
if (! autosrc)
addInport("src");
addInport("cmd");
addOutport("sink");
}
public void initialize() {
sink_ = source_ && ! grid_;
holdIn("active",0.0);
}
public void deltint() {
passivate();
}
public void deltext(double e,message x){
Continue(e);
for (int i=0; i< x.getLength();i++) {
if (messageOnPort(x,"src",i)) {
entity val = x.getValOnPort("src", i);
if (((val.equals(zero)) && source_) ||
((val.equals(un)) && ! source_)){
source_ = (val.equals(un));
}
}
if (messageOnPort(x,"cmd",i)) {
entity val = x.getValOnPort("cmd", i);
if (((val.equals(zero)) && grid_) ||
((val.equals(un)) && ! grid_)){
grid_ = (val.equals(un));
}
}
}
sink_ = source_ && ! grid_;
holdIn("active",0);
}
public static entity bool_entity(boolean val){
if (val) return un;
else return zero;
}
public message out( )
{
/* Construire la valeur de sortie. */
entity e = bool_entity(sink_);
/* Construire la sortie simple */
content c = makeContent("sink",e);
/* Construire un message vide */
message m = new message();
/* Remplir le message avec une premiere (unique) sortie */
m.add(c);
return m;
}
/**
* Cette methode permet d'ajouter des informations dans
* la bulle qui s'affiche quand on passe la souris au dessus du composant
* dans la fenetre graphique.
*/
public String getTooltipText(){
return super.getTooltipText()
+"\n"+"src: " + source_+"\n"+"cmd: " + grid_;
}
}
import GenCol.entity;
import genDevs.modeling.content;
import genDevs.modeling.message;
import simView.ViewableAtomic;
public class Ptrans extends ViewableAtomic {
private boolean grid_;
private boolean source_;
private boolean sink_;
public static entity zero = new entity("zero");
public static entity un = new entity("un");
public Ptrans(){
super("Ptrans");
source_ = true;
grid_ = false;
addInport("src");
addInport("cmd");
addOutport("sink");
addTestInput("src",un);
addTestInput("src",zero);
addTestInput("cmd",un);
addTestInput("cmd",zero);
addTestInput("src",un,1.0);
addTestInput("src",zero,1.0);
addTestInput("cmd",un,1.0);
addTestInput("cmd",zero,1.0);
}
public Ptrans(String name,boolean autosrc) {
super(name);
source_ = autosrc;
grid_ = false;
if (! autosrc)
addInport("src");
addInport("cmd");
addOutport("sink");
}
public void initialize() {
sink_ = source_ && ! grid_;
holdIn("active",0.0);
}
public void deltint() {
passivate();
}
public void deltext(double e,message x){
Continue(e);
for (int i=0; i< x.getLength();i++) {
if (messageOnPort(x,"src",i)) {
entity val = x.getValOnPort("src", i);
if (((val.equals(zero)) && source_) ||
((val.equals(un)) && ! source_)){
source_ = (val.equals(un));
}
}
if (messageOnPort(x,"cmd",i)) {
entity val = x.getValOnPort("cmd", i);
if (((val.equals(zero)) && grid_) ||
((val.equals(un)) && ! grid_)){
grid_ = (val.equals(un));
}
}
}
sink_ = source_ && ! grid_;
holdIn("active",0);
}
public static entity bool_entity(boolean val){
if (val) return un;
else return zero;
}
public message out( )
{
/* Construire la valeur de sortie. */
entity e = bool_entity(sink_);
/* Construire la sortie simple */
content c = makeContent("sink",e);
/* Construire un message vide */
message m = new message();
/* Remplir le message avec une premiere (unique) sortie */
m.add(c);
return m;
}
/**
* Cette methode permet d'ajouter des informations dans
* la bulle qui s'affiche quand on passe la souris au dessus du composant
* dans la fenetre graphique.
*/
public String getTooltipText(){
return super.getTooltipText()
+"\n"+"src: " + source_+"\n"+"cmd: " + grid_;
}
}
Rendez-vous sur cette page pour la correction de l’exercice de la seance de TP 4.