Toon posts:

[J2ME] limiet in een Stringbuffer?

Pagina: 1
Acties:
  • 161 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Goeiemorgen GOT'ers,

Ik zit met een klein probleempje, ik ben aan een projectje bezig waar ik seriële data moet verwerken in een j2me programma.

Een externe bron ( in mijn geval een PCL ) stuurt contstant karakters naar een gsm module ( die op j2me werkt dus )

een voorbeeld van de karakters = "abcdefghi" ... dit stuurt ie constant na elkaar.

Nu doe ik dit in het programma:

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
  private void openConnection () throws IOException {
    CommConnection connection = (CommConnection)Connector.open(CONNECTION, Connector.READ);
    System.out.println("connectie gemaakt");    
    in = new InputStreamReader (connection.openDataInputStream());    
}

  public void run () {
          System.out.println("runnen");
    try {
      StringBuffer rcv = new StringBuffer ();
      openConnection();
          System.out.println("connectie open");
           System.out.println(running);  // geeft een waarde true of false teruh
           
    try{
        for(;;)             { 
              int chr;
              chr = in.read();
                   rcv.append((char)chr);
                    System.out.println(rcv);
                        }   
                   } 
                  catch(Exception e){ }  // exception, moet nog aangevuld worden
           
    }
     
  catch (IOException exception) {   
            System.out.println(exception);
         }
              System.out.println("Klaar");
  }


Hierin maak in dus een oneindige loop in de buffer .. deze wordt dus ' abcdefghiabcdefghiabc ... etc '

nu wil ik dus gewoon dat ie ' abcdefghi ' in de buffer steekt, dus een maximum van 9 karakters, en dat ie dan z'n programma verder doet ( dus uit z'n for loop geraakt)

het zit em dus hier te doen:
Java:
1
2
3
4
5
6
7
8
try{
        for(;;)             { 
              int chr;
              chr = in.read(); //1 karakter inlezen, dit gebeurd in decimale waarde
                   rcv.append((char)chr); // chr in de buffer toevoegen, dit als karakter
                    System.out.println(rcv); // buffer weergeven
                        }   
                   } 


alvast zeer erg bedankt!
Alexander

[ Voor 6% gewijzigd door Verwijderd op 15-02-2006 11:14 ]


Verwijderd

Een counter ophogen en dan ipv een for(;;) een while (counter < 9) ??

  • bvp
  • Registratie: Maart 2005
  • Laatst online: 09-04 15:45

bvp

Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
try{ 
        for(;;)             {  
              int chr; 
              chr = in.read(); 
                   rcv.append((char)chr); 
                    System.out.println(rcv); 
                        }    
                   }  
                  catch(Exception e){ }  // exception, moet nog aangevuld worden 

  if (rcv.length() == 9) {
   break;
}     
    } 


?

Verwijderd

bvp schreef op woensdag 15 februari 2006 @ 11:18:
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
try{ 
        for(;;)             {  
              int chr; 
              chr = in.read(); 
                   rcv.append((char)chr); 
                    System.out.println(rcv); 
                        }    
                   }  
                  catch(Exception e){ }  // exception, moet nog aangevuld worden 

  if (rcv.length() == 9) {
   break;
}     
    } 


?
Dat kan makkelijker:

Java:
1
2
3
4
5
6
7
8
9
10
while (rcv.length() < 9)
{  
    try {
        int chr; 
        chr = in.read(); 
        rcv.append((char)chr); 
        System.out.println(rcv); 
    }    
    catch(Exception e){ }  // exception, moet nog aangevuld worden 
}

  • Daos
  • Registratie: Oktober 2004
  • Niet online
Je wil waarschijnlijk teveel met exception doen. Om het overzichtelijk te houden gebruik je exceptions nooit voor je normale programma. Werkt je programma gewoon zoals het moet werken dan kom je dus geen exceptions tegen.

  • bvp
  • Registratie: Maart 2005
  • Laatst online: 09-04 15:45

bvp

Verwijderd schreef op woensdag 15 februari 2006 @ 11:22:
[...]

Dat kan makkelijker:

Java:
1
2
3
4
5
6
7
8
9
10
while (rcv.length() < 9)
{  
    try {
        int chr; 
        chr = in.read(); 
        rcv.append((char)chr); 
        System.out.println(rcv); 
    }    
    catch(Exception e){ }  // exception, moet nog aangevuld worden 
}
Yep, stukken beter zo en beter leesbaar. ;)

Verwijderd

Topicstarter
Daos schreef op woensdag 15 februari 2006 @ 11:22:
Je wil waarschijnlijk teveel met exception doen. Om het overzichtelijk te houden gebruik je exceptions nooit voor je normale programma. Werkt je programma gewoon zoals het moet werken dan kom je dus geen exceptions tegen.
dit is idd wel waar, ze zeggen mij ( op het werk ) moe beter je de exceptions opvangt, des te minder problemen je hebt bij het debuggen.

Thx voor de geleverde reply's, eens uitproberen ;)

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 02:34

Janoz

Moderator Devschuur®

!litemod

doe dan iig ipv catch(Exception e){ }
Java:
1
2
3
catch (Exception e){
  e.printStackTrace();
}

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • bvp
  • Registratie: Maart 2005
  • Laatst online: 09-04 15:45

bvp

Daos schreef op woensdag 15 februari 2006 @ 11:22:
Je wil waarschijnlijk teveel met exception doen. Om het overzichtelijk te houden gebruik je exceptions nooit voor je normale programma. Werkt je programma gewoon zoals het moet werken dan kom je dus geen exceptions tegen.
Hoe bedoel je dit?
Het lijkt erop dat je hier zegt: "Als je maar heel goed programmeert, hoef je ook niet aan exception-handling te doen" ?

  • Kwistnix
  • Registratie: Juni 2001
  • Laatst online: 22:07
bvp schreef op woensdag 15 februari 2006 @ 11:42:
[...]


Hoe bedoel je dit?
Het lijkt erop dat je hier zegt: "Als je maar heel goed programmeert, hoef je ook niet aan exception-handling te doen" ?
Ik denk Daos bedoeld dat je Exceptions niet moet misbruiken/gebruiken om de normale flow van een applicatie te bepalen.

Verwijderd

Topicstarter
Janoz schreef op woensdag 15 februari 2006 @ 11:40:
doe dan iig ipv catch(Exception e){ }
Java:
1
2
3
catch (Exception e){
  e.printStackTrace();
}
ik heb dit zo aangepast .. bedankt voor de tip!!

  • Nick_S
  • Registratie: Juni 2003
  • Laatst online: 08-04 02:18

Nick_S

++?????++ Out of Cheese Error

Verwijderd schreef op woensdag 15 februari 2006 @ 12:23:
[...]


ik heb dit zo aangepast .. bedankt voor de tip!!
Zover ik even snel kan zien, wil je toch alleen IOException hier afvangen? Dat is de exceptie die je "verwacht". Als er een andere Exception tijdens het testen optreed, die je niet had verwacht, kun je er naar kijken waarom deze exceptie word gegooid.

Als ik in een programma catch (Exception e) zet, dan begint mijn IDE in ieder geval flink te mekkeren. (Syntactisch goed, maar door plugins in Eclipse geladen te hebben, struikelt ie hier gelukkig over)
Ook e.printStackTrace komt er bij mij niet in. Hiervoor heb je Logger instanties, zodat je later kan aanpassen welke meldingen wel/niet gelogd moeten worden (DEBUG, INFO, ERROR) en waar ze gelogd moeten worden (command line, file, rolling file, mail, etc) Kijk maar eens naar Log4J.

[ Voor 20% gewijzigd door Nick_S op 15-02-2006 13:00 ]

'Nae King! Nae quin! Nae Laird! Nae master! We willna' be fooled agin!'


  • Kwistnix
  • Registratie: Juni 2001
  • Laatst online: 22:07
Nick_S schreef op woensdag 15 februari 2006 @ 12:59:
[...]

...
Syntactisch goed, maar door plugins in Eclipse geladen te hebben, struikelt ie hier gelukkig over
Ik ga even offtopic, maar welke plug-in is dat precies? Ik ben namelijk wel in geïnteresseerd in een plug-in die mijn source code goed kan analyseren!

  • Daos
  • Registratie: Oktober 2004
  • Niet online
FallenAngel666 schreef op woensdag 15 februari 2006 @ 11:49:
[...]

Ik denk Daos bedoeld dat je Exceptions niet moet misbruiken/gebruiken om de normale flow van een applicatie te bepalen.
Dat klopt helemaal.

Verwijderd

Topicstarter
allemaal zeer erg bedankt voor de reacties. Ik ben al een ganse stap verder.

ik doe nu momenteel dit erna :

Java:
1
2
3
4
           System.out.println(rcv);
           karakters = rcv.toString();
           System.out.println("omgezet in string");
           upload(karakters);


waarbij de uploadfunctie dus de geleverde string op het internet plaatst ( iets wat voordien al lukte )

maar nu zou ik graag hebben dat ie iedere minuut die data upload. Dus de streamreader leegmaken, en dan iedere minuut deze terug vullen, en terug de procedure overlopen.

Dus m'n vraag is : hoe ik ervoor zorg dat ie het ganse programma iedere minuut doorloopt?

Alvast bedankt!

  • Nick_S
  • Registratie: Juni 2003
  • Laatst online: 08-04 02:18

Nick_S

++?????++ Out of Cheese Error

FallenAngel666 schreef op woensdag 15 februari 2006 @ 13:17:
[...]

Ik ga even offtopic, maar welke plug-in is dat precies? Ik ben namelijk wel in geïnteresseerd in een plug-in die mijn source code goed kan analyseren!
Plugins die ik nu veel gebruik:
checkstyle (is geen plugin, maar een aparte tool) Controleert broncode op uiterlijk volgens de Sun conventies. Dus, Javadoc aanwezig, if statements met {}, spatie gebruik, regellengte)
Checkclipse, een plugin voor Eclipse, welke Checkstyle integreert binnen Eclipse
PMD PMD scans Java source code and looks for potential problems like:
* Possible bugs - empty try/catch/finally/switch statements
* Dead code - unused local variables, parameters and private methods
* Suboptimal code - wasteful String/StringBuffer usage
* Overcomplicated expressions - unnecessary if statements, for loops that could be while loops
* Duplicate code - copied/pasted code means copied/pasted bugs
Findbugs (Ook weer geen plugin, maar zie onder)
FindBugs looks for bugs in Java programs. It is based on the concept of bug patterns. A bug pattern is a code idiom that is often an error. Bug patterns arise for a variety of reasons:

* Difficult language features
* Misunderstood API methods
* Misunderstood invariants when code is modified during maintenance
* Garden variety mistakes: typos, use of the wrong boolean operator
Findbugs Eclipse plugin Integreert Findbugs als plugin in Eclipse.

Een tip, zet deze plugins niet allemaal tegelijk aan op een bestaand project. Je word gillend gek. Als je al netjes code schrijft, kun je checkstyle zo aangooien. Lees voor PMD de website eens, er zijn verschillende groepen regels, deze zou je langzaam aan een voor een aan kunnen zetten. (Het is wel leuk om te zien, wat er gebeurd als je alles aanzet. Ook de filter optie van Eclipse zou ik per bestand zetten ipv per project. Of eigenlijk per selected item + children.

Sorry voor deze veels te lange offtopic post, maar ik hoop dat iemand er wat aan heeft.

'Nae King! Nae quin! Nae Laird! Nae master! We willna' be fooled agin!'


  • Kwistnix
  • Registratie: Juni 2001
  • Laatst online: 22:07
Zeker heb ik hier wat aan! Heel erg bedankt! Ik was zelf ook al ijverig aan het zoeken tussen mijn werkzaamheden door en ben ondertussen de laatste versie van PMD al aan't binnenhalen. Ik ben benieuwd! :)

Edit: Meesterlijke plug-in dat PMD!
Ik heb even een test klasse gemaakt met zo veel mogelijk sytactisch correcte edoch lelijke code snippets erin. PMD pikt alles er uit en komt met goed voorstellen ter verbetering. Blijvertje!

[ Voor 29% gewijzigd door Kwistnix op 15-02-2006 15:29 ]


  • bvp
  • Registratie: Maart 2005
  • Laatst online: 09-04 15:45

bvp

Nick_S schreef op woensdag 15 februari 2006 @ 15:08:
[...]


Plugins die ik nu veel gebruik:
checkstyle (is geen plugin, maar een aparte tool) Controleert broncode op uiterlijk volgens de Sun conventies. Dus, Javadoc aanwezig, if statements met {}, spatie gebruik, regellengte)
Checkclipse, een plugin voor Eclipse, welke Checkstyle integreert binnen Eclipse
PMD PMD scans Java source code and looks for potential problems like:
* Possible bugs - empty try/catch/finally/switch statements
* Dead code - unused local variables, parameters and private methods
* Suboptimal code - wasteful String/StringBuffer usage
* Overcomplicated expressions - unnecessary if statements, for loops that could be while loops
* Duplicate code - copied/pasted code means copied/pasted bugs
Findbugs (Ook weer geen plugin, maar zie onder)
FindBugs looks for bugs in Java programs. It is based on the concept of bug patterns. A bug pattern is a code idiom that is often an error. Bug patterns arise for a variety of reasons:

* Difficult language features
* Misunderstood API methods
* Misunderstood invariants when code is modified during maintenance
* Garden variety mistakes: typos, use of the wrong boolean operator
Findbugs Eclipse plugin Integreert Findbugs als plugin in Eclipse.

Een tip, zet deze plugins niet allemaal tegelijk aan op een bestaand project. Je word gillend gek. Als je al netjes code schrijft, kun je checkstyle zo aangooien. Lees voor PMD de website eens, er zijn verschillende groepen regels, deze zou je langzaam aan een voor een aan kunnen zetten. (Het is wel leuk om te zien, wat er gebeurd als je alles aanzet. Ook de filter optie van Eclipse zou ik per bestand zetten ipv per project. Of eigenlijk per selected item + children.

Sorry voor deze veels te lange offtopic post, maar ik hoop dat iemand er wat aan heeft.
Ook ff een offtopic reply van mij.
Erg bedankt! Ga hier ook zeker ff naar kijken!

  • grhmpf
  • Registratie: December 2000
  • Laatst online: 29-05-2022

grhmpf

Android <3

Het kan nog makkelijker (mits je altijd 9 bytes wil):
code:
1
2
3
4
5
6
byte[] buf = new byte[9];
while (in.read(buf) == 9)
{
  //doe iets met de 9 bytes
}
//eof

  • Nick_S
  • Registratie: Juni 2003
  • Laatst online: 08-04 02:18

Nick_S

++?????++ Out of Cheese Error

FallenAngel666 schreef op woensdag 15 februari 2006 @ 15:21:
[...]


Zeker heb ik hier wat aan! Heel erg bedankt! Ik was zelf ook al ijverig aan het zoeken tussen mijn werkzaamheden door en ben ondertussen de laatste versie van PMD al aan't binnenhalen. Ik ben benieuwd! :)

Edit: Meesterlijke plug-in dat PMD!
Ik heb even een test klasse gemaakt met zo veel mogelijk sytactisch correcte edoch lelijke code snippets erin. PMD pikt alles er uit en komt met goed voorstellen ter verbetering. Blijvertje!

Probeer ook vaak ctrl-1 te gebruiken op een foute regel, deze kan al een hoop dingen zelf oplossen.

'Nae King! Nae quin! Nae Laird! Nae master! We willna' be fooled agin!'

Pagina: 1