I made a simple program in Processing, and it works great. Im now attempting to bring my beginner Java skills to Eclipse to make the same program over again. The program takes a Rs232 string that comes from the Com port and sends it over Xmpp.
The issue I'm having is that i cant call
newChat.sendMessage(message) like i can in processing from any of the Classes/Tabs. Can someone clue me in to what i should look for to fix this issue. I'm guessing Extending, or implementing the Xmpp class is what i need to do. I love how simple processing handles it..
Any help will be greatly appreciated.
Fyi: the Smack library's are in the code folder for processing.
Main Application:
- import processing.net.*;
- void setup() {
- size(400, 200);
- noStroke();
- background(0);
- LoadSerialPort();
- OpenChatConnection();
- setupFilterThread ();
- }
- void draw() {
- }
- String timestampTime() {
- Calendar now = Calendar.getInstance();
- return String.format("%1$tH:%1$tM:%1$tS", now);
- }
- String timestampDate() {
- Calendar now = Calendar.getInstance();
- return String.format("%1$tm/%1$td/%1$tY", now);
- }
- FilterThread thread1;
- List FilteredArchAddressList = new ArrayList();
- ArrayList CallList = new ArrayList();
- void setupFilterThread () {
- thread1 = new FilterThread(100, "a");
- thread1.start();
- }
- void checkForNewCalls() {
- if (CallList.size() >=1) {
- println("New Call In List, Size: "+CallList.size());
- FilterComPortString((String) CallList.get(0));
- CallList.remove(0);
- }
- }
- void FilterComPortString(String s) {
- Message message = new Message("icu1@broadcast.server", Message.Type.normal);
- //message.setTo("icu1@broadcast.x-dev");
- message.setSubject("MSG_TYPE_NORMAL");
- message.setBody(s);
- message.setProperty("systemID", "JS1");
- message.setProperty("serverTime", trim(timestampTime()));
- message.setProperty("serverDate", trim(timestampDate()));
- try {
- newChat.sendMessage(message);
- }
- catch (Exception e) {
- println(e);
- }
- }
- }
- class FilterThread extends Thread {
- boolean running; // Is the thread running? Yes or no?
- int wait; // How many milliseconds should we wait in between executions?
- String id; // Thread name
- int count; // counter
- // Constructor, create the thread
- // It is not running by default
- FilterThread (int w, String s) {
- wait = w;
- running = false ;
- id = s;
- count = 0;
- }
- int getCount() {
- return count;
- }
- // Overriding "start()"
- void start () {
- // Set running equal to true
- running = true ;
- // Print messages
- println ("Starting thread (will execute every " + wait + " milliseconds.)");
- // Do whatever start does in Thread, don't forget this!
- super .start();
- }
- // We must implement run, this gets triggered by start()
- void run () {
- while (running) {
- checkForNewCalls();
- // Ok, let's wait for however long we should wait
- try {
- sleep((long )(wait));
- }
- catch (Exception e) {
- }
- }
- System.out.println (id + " thread is done!"); // The thread is done when we get to the end of run()
- }
- // Our method that quits the thread
- void quit() {
- System.out.println ("Quitting.");
- running = false ; // Setting running to false ends the loop in run()
- // IUn case the thread is waiting. . .
- interrupt();
- }
- }
- import processing.serial.*;
- Serial myPort; // Rs232, Serial Port
- String inString; // Input string from serial port:
- int lf = 10; // ASCII linefeed
- String SelectedCom;
- void LoadSerialPort() {
- println(Serial.list());
- println("________________________________________________________");
- try {
- myPort = new Serial(this, Serial.list()[0], 9600);
- myPort.bufferUntil(lf);
- SelectedCom = Serial.list()[0];
- println("Connected to Serial Port:");
- println("________________________________________________________");
- }
- catch (ArrayIndexOutOfBoundsException e) {
- String exception = e.toString();
- if (exception.contains("ArrayIndexOutOfBoundsException: 0")) {
- println("NO AVAILABLE COM PORT FOUND");
- }
- else {
- println(e);
- }
- }
- }
- void serialEvent(Serial p) {
- inString = p.readString();
- CallList.add(new String(inString));
- }
Xmpp Class:
- String FromXmpp = "";
- Chat newChat;
- ChatManager chatmanager;
- XMPPConnection connection;
- public void OpenChatConnection() {
- // This is the connection to google talk. If you use jabber, put other stuff in here.
- ConnectionConfiguration config = new ConnectionConfiguration("192.168.0.103", 5222, "Jabber/XMPP");
- config.setSASLAuthenticationEnabled(false);
- configure(ProviderManager.getInstance());
- connection = new XMPPConnection(config);
- println("Connecting");
- try {
- //connection.DEBUG_ENABLED = true;
- connection.connect();
- println("Connected to: "+connection.getServiceName() );
- }
- catch (XMPPException e1) {
- println("NOT Connected");
- }
- if (connection.isConnected()) {
- try {
- // This is the username and password of the chat client that is to run within Processing.
- println("Connecting");
- connection.login("System1", "test");
- //connection.login("inside_processing_username@gmail.com", "yourpassword");
- }
- catch (XMPPException e1) {
- // would probably be a good idea to put some user friendly action here.
- e1.printStackTrace();
- }
- println("Logged in as: "+connection.getUser() );
- }
- chatmanager = connection.getChatManager();
- // Eventhandler, to catch incoming chat events
- newChat = chatmanager.createChat("icu@broadcast.server", new MessageListener() { //icu1@broadcast.x-dev //admin@x-dev
- public void processMessage(Chat chat, Message message) {
- // Here you do what you do with the message
- FromXmpp = message.getBody();
- // Process commands
- //println(FromXmpp);
- }
- }
- );
- Roster roster = connection.getRoster();
- Collection<RosterEntry> entries = roster.getEntries();
- for (RosterEntry entry : entries) {
- System.out.println(entry);
- }
- }
- public void configure(ProviderManager pm) {
- // Private Data Storage
- pm.addIQProvider("query", "jabber:iq:private", new PrivateDataManager.PrivateDataIQProvider());
- // Time
- try {
- pm.addIQProvider("query", "jabber:iq:time", Class.forName("org.jivesoftware.smackx.packet.Time"));
- }
- catch (ClassNotFoundException e) {
- println(("TestClient "+" Can't load class for org.jivesoftware.smackx.packet.Time"));
- }
- // Roster Exchange
- pm.addExtensionProvider("x", "jabber:x:roster", new RosterExchangeProvider());
- // Message Events
- pm.addExtensionProvider("x", "jabber:x:event", new MessageEventProvider());
- // Chat State
- pm.addExtensionProvider("active", "http://jabber.org/protocol/chatstates", new ChatStateExtension.Provider());
- pm.addExtensionProvider("composing", "http://jabber.org/protocol/chatstates", new ChatStateExtension.Provider());
- pm.addExtensionProvider("paused", "http://jabber.org/protocol/chatstates", new ChatStateExtension.Provider());
- pm.addExtensionProvider("inactive", "http://jabber.org/protocol/chatstates", new ChatStateExtension.Provider());
- pm.addExtensionProvider("gone", "http://jabber.org/protocol/chatstates", new ChatStateExtension.Provider());
- // XHTML
- pm.addExtensionProvider("html", "http://jabber.org/protocol/xhtml-im", new XHTMLExtensionProvider());
- // Group Chat Invitations
- pm.addExtensionProvider("x", "jabber:x:conference", new GroupChatInvitation.Provider());
- // Service Discovery # Items
- pm.addIQProvider("query", "http://jabber.org/protocol/disco#items", new DiscoverItemsProvider());
- // Service Discovery # Info
- pm.addIQProvider("query", "http://jabber.org/protocol/disco#info", new DiscoverInfoProvider());
- // Data Forms
- pm.addExtensionProvider("x", "jabber:x:data", new DataFormProvider());
- // MUC User
- pm.addExtensionProvider("x", "http://jabber.org/protocol/muc#user", new MUCUserProvider());
- // MUC Admin
- pm.addIQProvider("query", "http://jabber.org/protocol/muc#admin", new MUCAdminProvider());
- // MUC Owner
- pm.addIQProvider("query", "http://jabber.org/protocol/muc#owner", new MUCOwnerProvider());
- // Delayed Delivery
- pm.addExtensionProvider("x", "jabber:x:delay", new DelayInformationProvider());
- // Version
- try {
- pm.addIQProvider("query", "jabber:iq:version", Class.forName("org.jivesoftware.smackx.packet.Version"));
- }
- catch (ClassNotFoundException e) {
- // Not sure what's happening here.
- }
- // VCard
- pm.addIQProvider("vCard", "vcard-temp", new VCardProvider());
- // Offline Message Requests
- pm.addIQProvider("offline", "http://jabber.org/protocol/offline", new OfflineMessageRequest.Provider());
- // Offline Message Indicator
- pm.addExtensionProvider("offline", "http://jabber.org/protocol/offline", new OfflineMessageInfo.Provider());
- // Last Activity
- pm.addIQProvider("query", "jabber:iq:last", new LastActivity.Provider());
- // User Search
- pm.addIQProvider("query", "jabber:iq:search", new UserSearch.Provider());
- // SharedGroupsInfo
- pm.addIQProvider("sharedgroup", "http://www.jivesoftware.org/protocol/sharedgroup", new SharedGroupsInfo.Provider());
- // JEP-33: Extended Stanza Addressing
- pm.addExtensionProvider("addresses", "http://jabber.org/protocol/address", new MultipleAddressesProvider());
- // FileTransfer
- pm.addIQProvider("si", "http://jabber.org/protocol/si", new StreamInitiationProvider());
- pm.addIQProvider("query", "http://jabber.org/protocol/bytestreams", new BytestreamsProvider());
- // Privacy
- pm.addIQProvider("query", "jabber:iq:privacy", new PrivacyProvider());
- pm.addIQProvider("command", "http://jabber.org/protocol/commands", new AdHocCommandDataProvider());
- pm.addExtensionProvider("malformed-action", "http://jabber.org/protocol/commands", new AdHocCommandDataProvider.MalformedActionError());
- pm.addExtensionProvider("bad-locale", "http://jabber.org/protocol/commands", new AdHocCommandDataProvider.BadLocaleError());
- pm.addExtensionProvider("bad-payload", "http://jabber.org/protocol/commands", new AdHocCommandDataProvider.BadPayloadError());
- pm.addExtensionProvider("bad-sessionid", "http://jabber.org/protocol/commands", new AdHocCommandDataProvider.BadSessionIDError());
- pm.addExtensionProvider("session-expired", "http://jabber.org/protocol/commands", new AdHocCommandDataProvider.SessionExpiredError());
- }
1