Hallo,
Ik ben momenteel bezig een project te maken met de Siemens TC65 ( GPRS module ) waarbij ik dus een binnengenomen reeks karakters ( via ser poort ) moet meegeven aan een webpagina, namelijk onder de vorm van http://www.test.com/diagnose.php?module=xxxx&waarde=xxxx
nu heb ik een programma ontworpen, en ik kan maar niet vinden wat er niet werkt
eens het programma klaar is met emuleren wordt het ingeladen met de module, en daarna succesvol gestart .. ik hang er dus de stream aan op de serieële poort. Maar dit zonder gevolg.
Je kan het natuurlijk niet zien, dus was m'n vraag als er iemand de fout ziet in m'n programma's?
het hoofdprogramma, die aangeroepen wordt door de .jar file
HTTPUpload, waar de acties plaatsvinden voor het uploaden
ATDebug, om de at commando's te debuggen
seriele verbinding
de seriële ontvanger
het is een ganse boterham, maar aangezien ik hier de enige in het bedrijf ben die wat java kan
iemand?
Ik ben momenteel bezig een project te maken met de Siemens TC65 ( GPRS module ) waarbij ik dus een binnengenomen reeks karakters ( via ser poort ) moet meegeven aan een webpagina, namelijk onder de vorm van http://www.test.com/diagnose.php?module=xxxx&waarde=xxxx
nu heb ik een programma ontworpen, en ik kan maar niet vinden wat er niet werkt
eens het programma klaar is met emuleren wordt het ingeladen met de module, en daarna succesvol gestart .. ik hang er dus de stream aan op de serieële poort. Maar dit zonder gevolg.
Je kan het natuurlijk niet zien, dus was m'n vraag als er iemand de fout ziet in m'n programma's?
het hoofdprogramma, die aangeroepen wordt door de .jar file
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
| /* * gemaakt op 31-01-2006 */ package eindwerk; import javax.microedition.midlet.MIDlet; import javax.microedition.midlet.MIDletStateChangeException; import com.siemens.icm.io.ATCommandFailedException; import java.io.*; import java.util.*; import javax.microedition.io.*; import javax.microedition.midlet.*; import com.siemens.icm.io.*; /** * * hoofdklasse */ public class Main extends MIDlet { private HTTPUpload httpUpload; private final static String VERSION = "0.0.1"; private final static String BUILD_NR = "31012006"; public final boolean DEBUG; public Main () { super (); System.out.println (Runtime.getRuntime().freeMemory()+" bytes of "+ Runtime.getRuntime().totalMemory()+" bytes available"); String debugProperty = getAppProperty("debug"); if (debugProperty != null) debugProperty = debugProperty.toLowerCase(); DEBUG = ! ("false".equals(debugProperty) || "no".equals(debugProperty)); } /** * Hier wordt het programma gestart */ protected void startApp() throws MIDletStateChangeException { System.out.println ("datalogger versie "+VERSION+" _ "+BUILD_NR); try { httpUpload = new HTTPUpload(this); } catch ( ATCommandFailedException e) { exceptionOccured(e); } httpUpload.start(); } /** * mogelijke acties als het programma gepauzeerd * */ protected void pauseApp() { System.out.println("\npauseApp()\n"); } /** * Als het programma afgebroken wordt, dan moet alles opgeruimd en gestopt worden */ protected void destroyApp(boolean arg0) throws MIDletStateChangeException { httpUpload.stop(); } /** * Deze methode wordt aangeroepen als er tenminste 1 karakter is aangekomen van de seriële verbinding. * De karakters worden doorgestuurd naar de HTTPUploadThread methode. */ public void received(String str) { if (DEBUG) System.out.println ("ontvangen="+str); httpUpload.upload(str); } /** * zie seriële ontvanger */ public void exceptionOccured(Exception e) { System.out.println (e); } } |
HTTPUpload, waar de acties plaatsvinden voor het uploaden
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
| /* * gemaakt op 31-01-2006 */ package eindwerk; import java.io.IOException; import java.util.Vector; import javax.microedition.midlet.MIDlet; import javax.microedition.midlet.MIDletStateChangeException; import com.siemens.icm.io.ATCommandFailedException; import java.io.*; import java.util.*; import javax.microedition.io.*; import javax.microedition.midlet.*; import com.siemens.icm.io.*; /** * deze klasse wordt gebruikt om een string door te sturen naar een http-server via * http-parameters. Deze klasse wordt geconfigureerd door 2 parameters. * - de url van http host zonder parameters * - gprs ATC , het at commando om een gprs verbinding aan te maken * deze parameters worden bekomen door de main klasse. * Indien er geen parameters gezet worden wordt gebruik gemaakt van de default waarden. */ public class HTTPUpload extends Thread { private boolean running = false; private Vector uploadBuffer = new Vector (10); private final String HOST; /** de default waarde voor de http host */ private final static String DEFAULT_HOST = "www.reeva.be/~perdu/inlogsyteem/site/diagnose.php"; /** het default at commando om een verbinding op te zetten*/ private final static String DEFAULT_ATC = "at^sjnet=gprs,internet.proximus.be,wap,wap"; private final String module_geg; private final Main main; public HTTPUpload (Main main)throws ATCommandFailedException { super (); this.main = main; String host = main.getAppProperty("http_host"); // vanuit de jad file this.HOST = (host != null ? host : DEFAULT_HOST); String atCommand = main.getAppProperty("gprs_atc"); if (atCommand==null) atCommand = DEFAULT_ATC; else { atCommand = atCommand.trim(); atCommand = atCommand.toLowerCase(); if (! atCommand.startsWith("at^sjnet")) atCommand = DEFAULT_ATC; } if (main.DEBUG) { System.out.println ("http_host="+HOST); System.out.println ("gprs_atc="+atCommand); } ATDebug atc = new ATDebug(true); atc.setATDebug(main.DEBUG); String response; response = atc.send("at+gsn\r").toLowerCase(); module_geg = response.substring(0, response.indexOf("ok")).trim(); response = atc.send(atCommand+"\r"); response = response.toLowerCase(); if (response.indexOf("ok") == -1) throw new ATCommandFailedException (response); atc.release(); } /** start deze thread. * @see Thread#start() */ public synchronized void start () { running = true; super.start(); } /** stop deze thread. */ public synchronized void stop () { running = false; notify (); } public void upload (String str) { str = urlEncode(str); uploadBuffer.addElement("http://"+HOST+"?"+"module="+module_geg+"&"+"waarde="+str); if (main.DEBUG) System.out.println ("upload ("+str+")"); synchronized (this) { notify (); } } public void run () { while (running) { if (uploadBuffer.isEmpty()) { synchronized (this) { try { wait(); } catch (InterruptedException e) {System.out.println (e);}// this cannot happen anyway } } else { String url = (String)uploadBuffer.elementAt(0); uploadBuffer.removeElementAt(0); try { if (main.DEBUG) System.out.println ("connecting to "+url); HttpConnection connection = (HttpConnection) Connector.open(url); connection.openDataInputStream(); connection.close(); } catch (IOException e) { main.exceptionOccured(e); } } } } private String urlEncode (String str) { if (str == null) return null; StringBuffer resultStr = new StringBuffer (str.length()); char tmpChar; for (int ix = 0; ix < str.length(); ix ++) { tmpChar = str.charAt (ix); switch (tmpChar) { case ' ' : resultStr.append ("%20"); break; case '-' : resultStr.append ("%2D"); break; case '/' : resultStr.append ("%2F"); break; case ':' : resultStr.append ("%3A"); break; case '=' : resultStr.append ("%3D"); break; case '?' : resultStr.append ("%3F"); break; case '#' : resultStr.append ("%23"); break; case '\r' : resultStr.append ("%0D"); break; case '\n' : resultStr.append ("%0A"); break; default : resultStr.append (tmpChar); break; } } return resultStr.toString(); } } |
ATDebug, om de at commando's te debuggen
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
| /* * gemaakt op 31-01-2006 */ package eindwerk; import com.siemens.icm.io.*; /** * Beschrijving: ATCommando's bruikbaar maken voor de gebruiker dmv de send opdracht */ public class ATDebug extends ATCommand { private static boolean AT_DEBUG = true; public ATDebug( boolean csdSupport ) throws ATCommandFailedException { super( csdSupport ); } public synchronized void setATDebug (boolean debug) { AT_DEBUG = debug; } public synchronized boolean getATDebug () { return AT_DEBUG; } public synchronized String send ( String ATCmd ) throws ATCommandFailedException { if (AT_DEBUG) { System.out.print (ATCmd); String response = super.send (ATCmd); System.out.print (response); return response; } else return super.send( ATCmd ); } } |
seriele verbinding
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
| /* * gemaakt op 01-02-2006 */ package eindwerk; import java.io.IOException; import java.io.InputStreamReader; import java.util.Enumeration; import java.util.Vector; import javax.microedition.io.Connector; import javax.microedition.io.CommConnection; // verandering tov de TC45 public class Serieelverbinding extends Thread { private final String CONNECTION; private final static String DEFAULT_CONNECTION = "comm:com1;baudrate=38400;bitsperchar=8;stopbits=1;parity=none;blocking=on"; private boolean running = false; private Vector listeners = new Vector (5); private InputStreamReader in; public Serieelverbinding (Main main) { String connection = main.getAppProperty("serieel_gegevens"); if (connection != null) { connection = connection.toLowerCase(); int i = connection.indexOf("blocking"); if (i == -1) connection = DEFAULT_CONNECTION; else { int j = connection.indexOf(";", i); if (j == -1) j = connection.length() - 1; int k = connection.indexOf("on", i); if (k != -1 && k < j); else connection = DEFAULT_CONNECTION; } } else connection = DEFAULT_CONNECTION; CONNECTION = connection; if (main.DEBUG) System.out.println ("serieel_gegevens="+CONNECTION); } private void openConnection () throws IOException { CommConnection connection = (CommConnection)Connector.open(CONNECTION, Connector.READ); in = new InputStreamReader (connection.openDataInputStream()); } public void run () { try { StringBuffer rcv = new StringBuffer (); openConnection(); while (running) { if (readLine(rcv)) { in.close(); openConnection(); } for (int lastIndex = rcv.length()-1, chr = rcv.charAt(lastIndex); chr == '\n' || chr == '\r'; lastIndex --, chr = rcv.charAt(lastIndex)) rcv.deleteCharAt(lastIndex); for (Enumeration e = listeners.elements(); e.hasMoreElements();) ((Serieelontvanger)e.nextElement()).received(rcv.toString()); } } catch (IOException exception) { for (Enumeration e = listeners.elements(); e.hasMoreElements();) ((Serieelontvanger)e.nextElement()).exceptionOccured(exception); } } private boolean readLine (StringBuffer rcv) throws IOException { if (rcv.length() > 0) rcv.delete(0, rcv.length()); int chr; for (chr = in.read(); chr != '\n' && chr != -1; chr=in.read()) rcv.append((char)chr); if (chr == -1) rcv.deleteCharAt(rcv.length() - 1); return chr == -1; } /* * start de tread */ public synchronized void start() { running = true; super.start(); } /* * stopt de tread */ public synchronized void stop () { running = false; notify (); } /* * aanmaken nieuwe Serieelontvanger */ public void addListener (Serieelontvanger l) { if (!listeners.contains(l) && l != null) listeners.addElement(l); } /** * verwijderd specifieke Serieelontvanger * */ public void removeListener (Serieelontvanger l) { listeners.removeElement(l); } } |
de seriële ontvanger
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
| /* * gemaakt op 01-02-2006 */ package eindwerk; /** * Deze ontvangt karakters van de seriële connectie en bekijkt als er geen fout is ontstaan */ public interface Serieelontvanger { /** * Deze methode wordt aangeroepen als er ofwel een line feed is ontvangen van de serieële verbinding * of als de connectie wordt gesloten. Alle karakters behalve de CRLF worden teruggestuurd. */ public void received (String line); public void connectionClosed (); /** * deze methode wordt aangeroepen als er een fout gebeurd tijdens het lezen van de data */ public void exceptionOccured (Exception e); } |
het is een ganse boterham, maar aangezien ik hier de enige in het bedrijf ben die wat java kan
iemand?
[ Voor 5% gewijzigd door Verwijderd op 01-02-2006 16:36 ]