Archief - [PROG][j2me] String filteren?

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

Qualistor

Legacy Member
Hellow,

Ik zit nog met een klein probleempje .. eventjes situeren met fake voorbeeld

ik heb een extern appartaat die seriëel data verstuurd naar hardware die op J2ME draait.
Nu stuurt deze constant dezelfde data in een loop ( kan niets aan veranderd worden ). Deze begint
met casenummers, en dan daarna 16 veranderlijke karakterplaatsen ..
dit gebeurd 18 cases ver

bv: 00aaaaaaaaaaaaaaaa01aaaaaaaaaaaaaaa02aaaaaaaaaaaaaaa03aaaaaaaaaaaaaaa.. ( totaan 18 )

nu is het zo als je hebt programma start, dat deze bijna nooit als eerste case 00 binnenkrijgt, maar bv begint halverwege case 12 ofzo ..

maar nu zou ik dus in de buffer de data moeten krijgen beginnend van case 0..
Hoe zou ik dat best aanpakken ?

ik had gedacht om een buffer te maken die 2 keer zo lang is als de ganse reeks .. en daarin te beginnen zoeken naar 00 waarbij 18 plaatsen verder een 01 zit, en daarna 18 plaatsten verder een 02 enzovoort .. maar het lukt met maar niet

het kan mss wel simpel, maar ik geraak er echt niet uit? :(

bedankt!

QplQyer

Legacy Member
In elk geval zou ik beginnen met het negeren van de data halverwege een case (daar dezelfde data toch wederkeert in die lus).
Je hebt dan een aantal opties:
- Negeren van data tot je case 00 binnenkrijgt (de eenvoudigste oplossing, minst efficient met betrekking tot uitvoeringstijd uiteraard (ideaal voor kleine buffermogelijkheden)).
- Bijhouden van alle cases die je tegenkomt tot je aan case 00 komt, die plaats je dan in de juiste buffer automatisch tot je de eerste case tegenkomt die je reeds had opgeslaan in je andere buffer (en de twee buffers plak je aan elkaar).

Dat zijn zowat de opties die ik zou gebruiken (er zijn er allicht nog betere, is maar vlug wat ik zoal kan bedenken).

Een andere optie, maar nu begin ik te twijfelen of ik het probleem wel juist voor heb, zou zijn om gewoon een buffer te maken even groot als de uitvoer die je wilt opslaan en dan die buffer genoeg plaatsen te shiften tot je aan 00 komt.

.Acku.

Legacy Member
Negeer het gewoon, inderdaad. Ge wilt sowieso een geupdate volwaardige iteratie.

Qualistor

Legacy Member
ik negeer het idd gewoon .. het is me net gelukt om het werkend te krijgen .. kheb het zo gedaan ..

ik bekijk een inkomend karakter, is deze 0, dan sla ik 8 tekens op .. als het 9de teken geen 1 is .. dan schuif ik de 8 tekens in de buffer eentje naar links op ..

dan terug 8 tekens verder tellen .. dit herhaal ik todat ik zeker weet dat er 8 tekens verder een opvolgend getal is ..

stel dat ik een case 0 gevonden heb, dan moet er 8 tekens verder een 4 zitten .. dit doe ik met een pointer die de ganse rij afloopt .. en dit werkt.

De data blijft mooi gesynchroniseerd ;)


nu nog een vraagje, wss wel een heel stomme vraag, maar ik blijk er in vast te zitten.

ik heb dit:

Code:
public void run () {
// enkele acties enz om de juiste cases te zoeken
          HttpConnection connection = (HttpConnection) Connector.open(data); // waarbij data een string is idv http://www.host.com/data.php?logs=ccccc
          connection.setRequestMethod(HttpConnection.GET);
           int rc = connection.getResponseCode();           
                if (rc == HttpConnection.HTTP_OK) {
                    System.out.println ("verbinding gelukt");
                data=""; hier zet ik de datastring terug op 0 ..
// maar nu ??

de bedoeling is dus dat er iedere 10 seconden een nieuwe versie van data moet verstuurt worden .. hoe moet ik dat juist doen ..

dus ie moet 10 seconden later opnieuwe gerunt worden .. is dat mogelijk ?

grtz

.Acku.

Legacy Member
http://java.sun.com/j2se/1.4.2/docs/api/java/util/TimerTask.html

is de elegante oplossing (indien aanwezig in J2ME), anders gewoon lussen met:

Code:
public void run () {
// enkele acties enz om de juiste cases te zoeken
while (running) {
          HttpConnection connection = (HttpConnection) Connector.open
          connection.setRequestMethod(HttpConnection.GET);
           int rc = connection.getResponseCode();           
                if (rc == HttpConnection.HTTP_OK) {
                    System.out.println ("verbinding gelukt");
                data=""; hier zet ik de datastring terug op 0 ..
         Thread.sleep(10*1000);
         }
}
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan