Ben niet slim, maar wel dom
[ Voor 33% gewijzigd door RobIII op 11-07-2016 16:13 ]
There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.
Je eigen tweaker.me redirect
Over mij
Processing.org dus JAVA
STATUS is een string die als output dient
edit:
hmm af en toe krijgt STATUS 1 op 1 dezelfgde waarde als DATASTRINg terijwl er geen "Error" en zit.
[ Voor 19% gewijzigd door itcouldbeanyone op 11-07-2016 16:15 ]
Ben niet slim, maar wel dom
wat heb je al geprobeerd?
wat zegt google?
wat probeer je te bereiken
wat is precies de input/output die je verwacht?
Je geeft 0 informatie, en verwacht dat wij door een glazen bol kunnen zien wat er is
"Whatever their future, at the dawn of their lives, men seek a noble vision of man’s nature and of life’s potential."
Aslof op elk probleem een zoekwoord te vinden is, tuurlijk er zal vast wel iemand zijn met het zelfde isue, maar geen id hoe die op google staat.corset schreef op maandag 11 juli 2016 @ 16:14:
Wat Roblll probeert te zeggen,
wat heb je al geprobeerd?
wat zegt google?
wat probeer je te bereiken
wat is precies de input/output die je verwacht?
Je geeft 0 informatie, en verwacht dat wij door een glazen bol kunnen zien wat er is
mijn input DATASTRING is variererent van data.
maar zodra deze begint met "Error"
dan wil ik de STATUS string updaten met de waarde van DATASTRING.
zodat ik kan weergeven waneer er een error is.
edit
ik zie nu dat hij elke keer waneer een string groter is dan 21 characters, hij de eerste 21 characters weg laat
[ Voor 7% gewijzigd door itcouldbeanyone op 11-07-2016 16:23 ]
Ben niet slim, maar wel dom
Precies de reden dat we vragen om meer info.... Je post 1 regel tekst, zonder dat wij kunnen bepalen of er nog ergens met de output of input gerommeld wordt....itcouldbeanyone schreef op maandag 11 juli 2016 @ 16:18:
[...]
edit
ik zie nu dat hij elke keer waneer een string groter is dan 21 characters, hij de eerste 21 characters weg laat
[ Voor 16% gewijzigd door muppet99 op 11-07-2016 16:31 ]
Carpe Diem
final BluetoothGattCallback btleGattCallback = new BluetoothGattCallback() {
@Override
public void onCharacteristicChanged(BluetoothGatt gatt, final BluetoothGattCharacteristic characteristic) {
String dataValue = characteristic.getStringValue(0);
DATASTRING=dataValue;
}
edit, nee de output kan niet meer geromeld zijn, die print ik meteen na de functie om te debuggen
[ Voor 13% gewijzigd door itcouldbeanyone op 11-07-2016 16:33 ]
Ben niet slim, maar wel dom
Java kent vast wel een .replace()?
edit: of denk ik nu te makkelijk...
[ Voor 14% gewijzigd door Meekoh op 11-07-2016 17:04 ]
Computer says no
De engiste /n character die ik weet komt als laatste binnen. Dus niet ergen middenin de string.Meekoh schreef op maandag 11 juli 2016 @ 17:03:
gewoon alle \n karakters verwijderen? Die heb je blijkbaar toch niet nodig?
Java kent vast wel een .replace()?
edit: of denk ik nu te makkelijk...
Denk dat ik een soort van detectie moet maken
Dat alles tussen "Error" en /n aan een nieuwe string word toegevoegd.
Hoe dat moet ik nog ff uitzoeken
Ben niet slim, maar wel dom
Maar met .substring() en .indexof() moet je ook een heel eind komen lijkt mij.
Dat is dus mits die newline het probleem is. Wat nog steeds niet echt duidelijk is in je code.
Maak anders ff een complete post, waarin alles helder uiteen wordt gezet.
Je hebt het namelijk de ene keer over "output", maar definieer output. Is dat datgene wat in STATUS zit?
en hoe bekijk je dat? Is dat tijdens debugging of stuur je het naar een console of iets dergelijks?
En probeer ook je code in code tags te doen
1
|
[ Voor 69% gewijzigd door Meekoh op 11-07-2016 17:33 ]
Computer says no
Replace zit toch gewoon in de java String class (https://docs.oracle.com/j...tml#replace(char,%20char))?Meekoh schreef op maandag 11 juli 2016 @ 17:27:
ff die site doorgelezen, geen .replace beschikbaar.
Maar met .substring() en .indedof() moet je ook een heel eind komen lijkt mij.
Dat is dus mits die newline het probleem is. Wat nog steeds niet echt duidelijk is in je code.
Heb je ook de spec/doc doorgelezen van de BluetoothGattCharacteristic class itcouldbeanyone? Ik zou proberen zoveel mogelijk info te krijgen uit wat dat ding terug geeft, je kan ook een getValue doen zie ik, dan weet je precies wat je terug krijgt.
|>
Ja in java zit het wel. ik weet alleen niet in hoeverre die processing taal daarvan afwijkt.simon schreef op maandag 11 juli 2016 @ 17:32:
[...]
Replace zit toch gewoon in de java String class (https://docs.oracle.com/j...tml#replace(char,%20char))?
Zag daar in ieder geval in de reference niet .replace staan:
dus vandaar mijn opmerkingString Functions
join()
match()
matchAll()
nf()
nfc()
nfp()
nfs()
split()
splitTokens()
trim()
Computer says no
Gewoon Java SE 6 dusThere are more string methods than those linked from this page. Additional documentation is located online in the official Java documentation.
Replace zou wel moeten werken in processing ook al staat het niet in de reference.
Zal wel ff wat proberen met replace en substrings.
Status is de output. Deze word direct naar het scherm geschreven.
Kan morgen wel ff de volledige code plaatsen.
Is ook leuk voor als iemand bleutooth 4.1 wil laten werken in processing
Ben niet slim, maar wel dom
Als de DATASTRING waarde "Error Slave under voltage" heeft
krijg ik als output "tage"
Dus de code die je toont, werkt gewoon. De eigenlijke fout die je hier probeert op te lossen, grofweg "alleen de laatste vier karakters van de status-string worden geprint" of "alleen de data na het 21e karakter wordt geprint", zit (niet totaal verrassend) in de code die de string STATUS print.ik zie nu dat hij elke keer waneer een string groter is dan 21 characters, hij de eerste 21 characters weg laat
De rest hier is alleen maar gegok, en dit probleem is niet op te lossen zonder relevante code.
[ Voor 57% gewijzigd door CodeCaster op 11-07-2016 18:41 ]
https://oneerlijkewoz.nl
Op papier is hij aan het tekenen, maar in de praktijk...
de code waar de DATASTRING vandaan komt heb ik eerder al gepost.CodeCaster schreef op maandag 11 juli 2016 @ 18:37:
[...]
[...]
Dus de code die je toont, werkt gewoon. De eigenlijke fout die je hier probeert op te lossen, grofweg "alleen de laatste vier karakters van de status-string worden geprint" of "alleen de data na het 21e karakter wordt geprint", zit (niet totaal verrassend) in de code die de string STATUS print.
De rest hier is alleen maar gegok, en dit probleem is niet op te lossen zonder relevante code.
de rest van de code is leuk om morgen te posten, voor de gene die geintresserd zijn in BLE verbinding met Processing.org maar voegt niets toe aan de werking van deze strings.
heb nog ff gekeken https://developer.android...etoothGattCharacteristic)
maar kan daar niet vinden hoeveel bytes er in zo'n characteristic zit.
Waarschijnlijk word DATASTRING al geupdate nog voordat de '\n' character geweest is
Ben niet slim, maar wel dom
[ Voor 11% gewijzigd door CodeCaster op 11-07-2016 21:49 ]
https://oneerlijkewoz.nl
Op papier is hij aan het tekenen, maar in de praktijk...
dit is processing niets met SRAM te maken.TommyboyNL schreef op maandag 11 juli 2016 @ 22:02:
Is je probleem met het printen van strings in dit topic al opgelost dan? Wat was de oplossing? Zeker weten dat je SRAM niet vol zit?
gebruik gewoon println(STATUS); om te debuggen.
text(STATUS, X, Y); om weer te geven
Ben niet slim, maar wel dom
1. Een asynchrone callback functie zet de variabele DATASTRING (buiten de method context)
2. Een controle of DATASTRING 'Error' bevat
3. Het zetten van de variable STATUS met DATASTRING
4. Het tonen van de variabele STATUS
Van deze 4 events is mij de tijdafhankelijkheid onduidelijk. Hoe vaak wordt bijvoorbeeld punt 1 uitgevoerd en worden tegelijkertijd mogelijk ook 2, 3, en/of 4 getriggerd?
Misschien heb je er wat aan.
Nu je het zegt. Denk dat het daar indd. Mis gaatwvdweij schreef op dinsdag 12 juli 2016 @ 11:01:
Met de gegeven info kan ik het niet goed beoordelen, maar het zou een concurrency probleem kunnen zijn. Voor zover ik begrijp:
1. Een asynchrone callback functie zet de variabele DATASTRING (buiten de method context)
2. Een controle of DATASTRING 'Error' bevat
3. Het zetten van de variable STATUS met DATASTRING
4. Het tonen van de variabele STATUS
Van deze 4 events is mij de tijdafhankelijkheid onduidelijk. Hoe vaak wordt bijvoorbeeld punt 1 uitgevoerd en worden tegelijkertijd mogelijk ook 2, 3, en/of 4 getriggerd?
Misschien heb je er wat aan.
Zal zo ff proberen thankz.
Edit geprobeerd.
had geen effect,
onCharacteristicsChanged zorgt ervoor dat er een newline komt
[ Voor 6% gewijzigd door itcouldbeanyone op 12-07-2016 13:36 ]
Ben niet slim, maar wel dom
Dat lijkt mij beter dan de status op te slaan in een variabele zoals je nu doet. Zeker gezien dit dus concurrency issues met zich mee kan brengen, waar dit veel van weg heeft.
www.maartendeboer.net
1D X | 5Ds | Zeiss Milvus 25, 50, 85 f/1.4 | Zeiss Otus 55 f/1.4 | Canon 200 f/1.8 | Canon 200 f/2 | Canon 300 f/2.8
Lichtjes off-topic, en misschien is het enkel een kwestie van formuleren, maar je bent je bewust dat je String.contains() gebruikt en niet String.startsWith() ?itcouldbeanyone schreef op maandag 11 juli 2016 @ 16:18:
[...]
mijn input DATASTRING is variererent van data.
maar zodra deze begint met "Error"
dan wil ik de STATUS string updaten met de waarde van DATASTRING.
inplaats van het ontvangen van een string met daarin Error bla bla bla,
vertuur ik nu een hexadecimaal over bluetooth.
dit nummer owrd dan gekoppeld aan de bijbehorende string.
Ben niet slim, maar wel dom
Is dat niet gewoon je kop in het zand steken? Het lijkt mij dat het zelfde probleem zich nog steeds voor kan doen alleen gaat het nu toevallig goed omdat de data een stuk kleiner is dan een string.itcouldbeanyone schreef op dinsdag 12 juli 2016 @ 23:41:
heb het al opgelost, maar dan op een andere manier.
inplaats van het ontvangen van een string met daarin Error bla bla bla,
vertuur ik nu een hexadecimaal over bluetooth.
dit nummer owrd dan gekoppeld aan de bijbehorende string.
www.maartendeboer.net
1D X | 5Ds | Zeiss Milvus 25, 50, 85 f/1.4 | Zeiss Otus 55 f/1.4 | Canon 200 f/1.8 | Canon 200 f/2 | Canon 300 f/2.8
Mischien maar gelukkig word me string nu niet zo groot dat het nog voor kan doen.Ventieldopje schreef op woensdag 13 juli 2016 @ 00:16:
[...]
Is dat niet gewoon je kop in het zand steken? Het lijkt mij dat het zelfde probleem zich nog steeds voor kan doen alleen gaat het nu toevallig goed omdat de data een stuk kleiner is dan een string.
Ben niet slim, maar wel dom