package charly.demo;
import java.awt.*;
import java.awt.event.*;
import charly.client.*;
import charly.server.devices.ChGpibTimeOutException;
/** An AWT-Frame for sending a string to a GPIB-device. You can find the
* <a href="doc-files/ChAWTGpib.java.html">source here</a>.
* @see #send()
*/
public class ChAWTGpib extends Frame
{
ChConnect server;
TextField dvcNrField;
TextField inputField;
Label messageLabel;
public static void main(String args[])
throws Exception
{
System.out.println("usage: ChAWTGpib [TCP/IP-address]");
// get server - address from command line
ChConnect server=new ChConnect(args.length==0?"localhost":args[0]);
ChAWTGpib awtGpib=new ChAWTGpib(server);
awtGpib.start();
}
ChAWTGpib(ChConnect server)
{
super("Charly AWT Gpib");
this.server=server;
setSize(600,150);
addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent ev)
{
System.exit(0);
}
});
setLayout(new GridLayout(4,1,4,4)); // zwei Panels, ein Button und ein Label übereinander
Panel p=new Panel();
p.setLayout(new GridLayout(1,2,4,4)); // Beschriftung und Eingabefeld
p.add(new Label("Device number:"));
dvcNrField = new TextField("7");
p.add(dvcNrField);
add(p);
p=new Panel();
p.setLayout(new GridLayout(1,2,4,4)); // Beschriftung und Eingabefeld
p.add(new Label("Text to send:"));
inputField = new TextField(":AUT");
p.add(inputField);
add(p);
Button b=new Button("Send");
b.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent ev)
{
send();
}
});
add(b);
messageLabel = new Label("Initialized!");
add(messageLabel);
}
void start()
{
setVisible(true);
}
void message(String msg)
{
System.out.println(msg);
messageLabel.setText(msg);
}
/** In this method you can find the core of this mini-application.
*/
void send()
{
ChTask task=new ChTask("AWTGpib"); // create task;
message("Sending...");
try
{
int dvcNr=Integer.parseInt(dvcNrField.getText());
// a NumberFormatException can be thrown
ChGpibClient gpib=new ChGpibClient(server); // create gpib-Client
task.addResource(server, gpib.getResourceName(dvcNr));
// task needs resource dvcNr of server
task.start(true); // start task and wait until resources are here
gpib.setTask(task);
gpib.send(dvcNr,inputField.getText()); // sending ":AUT" to the device nr 7
message("Successfully sent!");
} catch(NumberFormatException e)
{
message("Device number needed!");
} catch(ChGpibTimeOutException e)
{
message("Device timed out!");
}catch(Exception e)
{
message(e.getMessage()); // print error message
e.printStackTrace();
}
task.stop(); // I M P O R T A N T: frees resources on the server
}
}