variabele zichtbaar maken op laptop ?

trix

Golden Member

hallo,

de topic titel zegt het eigenlijk al, ik wil een ong. 100-tal variabele (integers) zichtbaar maken op mijn laptop.
op mijn laptop wil ik dan graag zien b.v.:
X-pos. = 100
Y-pos. = 75
alleen 100 & 75 ga ik dan over de seriele verbinding versturen.

ik heb al een seriele verbinding naar mijn laptop vanaf de atmega 2560.

hoe kan ik dit het best/eenvoudigst doen ?
alvast bedankt.

eigenwijs = ook wijs
Arco

Special Member

Hoe wil je dat zichtbaar maken? (bijv. allemaal tegelijk of een voor een, of wat anders...)

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
buckfast_beekeeper

Golden Member

Waarvoor staan x en y? Waar wil je ze vandaan halen? Kan het met een web pagina en websockets?

Je vraag is wel heel rudimentair.

Van Lambiek wordt goede geuze gemaakt.
Arco

Special Member

Waarvoor staan x en y? Waar wil je ze vandaan halen?

Dat staat er toch? Is de X/Y positie en wordt verstuurd via seriele verbinding...

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com

Je zal dan zelf een programma moeten schrijven op de laptop dat de seriele poort uitleest. Je µ-controller moet dan de data steeds verzenden, maar zodanig dat de ontvangstzijde deze data kan "decoderen". Vb µ zend pos_x=34;pos_y=45; enz. Aan de ontvanger kant zoek je dan de juiste strings en de waarde die hierbij hoort. Hier een voorbeeld dat in C# is geschreven : http://wiki.robotmc.be/index.php/HMI

fripster

Golden Member

Je kunt ook gewoon een terminal programma nemen. Deze zal tonen wat je verstuurt over de seriële lijn. Moet je de waarden wel als ASCII (letters) sturen en niet als binaire waarden... Maar dat kan prima in je microcontroller (Arduino bijvoorbeeld)

Just my two cents...

By the way: Er zit een terminal in de Arduino IDE. Zou al genoeg kunnen zijn.

Eens een wirehead,altijd een wirehead.... gopher://fripster.ydns.eu

Op 7 mei 2021 11:39:09 schreef RP6conrad:
Je zal dan zelf een programma moeten schrijven op de laptop dat de seriele poort uitleest.

Gebruik de arduino "serial monitor" en programmeer de arduino om "x=" en "y=" voor de variabelen te zetten. Klaar ! Zichtbaar op de laptop!

four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/
trix

Golden Member

ik ga het op het eind van het programma 1x versturen dus niet continu.
dan zou ik graag die 100 variabele op mijn scherm zien, om het een en ander te controleren.

ik heb geen arduino maar een atmega 2560.

[Bericht gewijzigd door trix op vrijdag 7 mei 2021 11:45:54 (12%)

eigenwijs = ook wijs
Arco

Special Member

Hoe wordt het verstuurd, en hoe wil je het op het scherm zien? (alles onder elkaar gaat niet lukken op een monitor...)

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
trix

Golden Member

nee hoeft niet onder elkaar mogen meerdere kollommen zijn bijvoorbeeld.

ik wil graag gebruik maken van de seriel verbinding die ik nu ook gebruik om "scan resultaten" zichtbaar te maken, hier heeft arco speciaal voor mij een programmatje geschreven (waarvoor nog mijn dank)

eigenwijs = ook wijs
EricP

mét CE

Waarom probeer je het zo ingewikkeld te makken?
Terminal emulatie op de computer. En je AVR kan daar op zetten wat jij wilt. Waarom moeten alleen de getallen verstuurd worden, compleet protocol optuigen, aan beide kanten een stukje software wat dat moet implementeren... Hoop gedoe om niks. Tenzij er een reden achter zit die je nog niet verteld hebt...

Arco

Special Member

Als het waardes < 256 zijn, kun je net als met dat andere programmaatje alles achter elkaar als byte versturen.
Dus bijv. <x1><y1><x2><y2>.... en dan bij een timeout op scherm tonen. (x1,y1... zijn bytes)

Als het meer als 255 kan worden moet je het iets anders aanpakken...

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
trix

Golden Member

Op 7 mei 2021 12:03:45 schreef EricP:
Waarom probeer je het zo ingewikkeld te makken?

probeer dat juist niet te doen ;)
maar als het meesturen van: X-pos. & Y-pos. het eenvoudiger maakt, dan doe ik dat natuurlijk.

nee word niet meer dan 255.

eigenwijs = ook wijs
EricP

mét CE

Op 7 mei 2021 12:09:23 schreef trix:
[...]
probeer dat juist niet te doen ;)

Toch lukt het je elke keer weer. Je bent toch niet in het dagelijks leven manager he? Die hebben er ook zo'n handje van... Geen kennis, halve implementatie verzinnen, het daardoor vreselijk ingewikkeld maken en vervolgens piepen dat de mensen die het werk moeten doen er zo lang mee bezig zijn...

Minicom doet vast wel VT100. Zoek ff uit hoe je VT100 bestuurt. En frot dat in je AVR. Waarschijnlijk is het makkelijkste om elke variabele op een aparte regel te zetten. Met snprintf bouw je een string waar verklaring en waarde in zitten. En dan heb je vast wel een routine die dar naar buiten jast. Afsluiten met CR of CR/LF, afhankelijk van wat je terminal emulatie lekker vindt. En dan kun je zoveel naar buiten jassen als je wilt.
Scrollen kan vast ook wel. En als je logging aan zet, dan heb je het in een file staan.

buckfast_beekeeper

Golden Member

Op 7 mei 2021 11:39:07 schreef Arco:
[...]
Dat staat er toch? Is de X/Y positie en wordt verstuurd via seriele verbinding...

Welke X/Y, deze van de muis, deze van een foto, een robotarm, .... Van alles kan je een X/Y weergeven. Elke pixel op je scherm is een mogelijkheid.

Van Lambiek wordt goede geuze gemaakt.
trix

Golden Member

nee nee..... geen manager :)
X Y posities van een X-Y "tafel" maar dan vertikaal.

ga ik bekijken tnx.

[Bericht gewijzigd door trix op vrijdag 7 mei 2021 13:08:01 (12%)

eigenwijs = ook wijs

ik denk ook dat het voor nu het makkelijkst is om het vanuit je avr als leesbare ascii naar buiten te sturen en een standaard terminal programma te pakken.
met functies als sprintf geloof ik (weet even niet uit mijn hoofd, kun je makkelijk je variabelen. dan doe je iets in de trand van

c code:


#include <stdio.h>

#define MAX_STRING_LENGTH (40)
static char stringBuilder[MAX_STRING_LENGTH];


void PrintCoordinates(uint16_t xpos, uint16_t ypos) {
   uint16_t stringLength = 0;
   //de volgend snprintf functie formateerd een leesbare string, de %u's worden vervangen door de varabelen xpos en ypos die je ook als argumenten aan de functie meegeeft. 
   //Dit mogen er ook meer worden, als ze maar matchen met het aantal %u, die je in je string format hebt staan.
   stringLength = snprintf(stringBuilder, MAX_STRING_LENGTH,"Xpos = %u ,Ypos = %u \n\r",xpos, ypos);
   //stringLength bevat nu de string "Xpos = 100,Ypos = 200" bij gegeven xpos van 100 en ypos van 200, de \n\r zorgt voor een nieuwe regel in je terminal
   Serial.print(stringBuilder); // verander dit door jouw uart put string functie
}

zoiets zou je makkelijk kunnen doen. Pin me niet vast op de exacte correctheid.
(remark, het is niet altijd %u, maar dat hangt af van het type variabele. voor een uint16 is dat goed, maar voor een uitn32 moet ik bijvoorbeeld %ul gebruiken)

trix

Golden Member

probleem is nu dat ik 2 programmatjes heb de gebruik maken van de zelfde poort (com3).
1e is het programma dat arco voor mij heeft gemaakt. (7 posts terug vermeld)
2e is putty waarmee ik dus de gevraagde variabele mee wil binnen halen.

dat 1e programma kijkt continu naar port3 of er iets veranderd waardoor putty deze poort niet meer kan gebruiken.

eigenwijs = ook wijs
EricP

mét CE

Eh... waarom niet? (of is dat een typisch windows probleem?)

Maar goed... dat verschijnsel heb je ook als je alleen de waarden doorstuurt en een specifiek stuk software de legenda ervoor laat plakken...

Kort door de bocht oplossing: maak er een 2de poortje op die laptop bij en hang ze beiden aan je AVR.

Arco

Special Member

Als je de x/y data (200 bytes dus) er direct achteraan stuurt kan ik die in hetzelfde programmaatje wel laten zien...

Eh... waarom niet? (of is dat een typisch windows probleem?)

Een rs232 verbinding is nu eenmaal een point-to-point verbinding, geen bussysteem...

[Bericht gewijzigd door Arco op vrijdag 7 mei 2021 14:17:38 (42%)

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
trix

Golden Member

dat zou inderdaad geweldig zijn, ik zag ook even niet hoe dit op te lossen.

[Bericht gewijzigd door trix op vrijdag 7 mei 2021 14:25:33 (97%)

eigenwijs = ook wijs
EricP

mét CE

Een rs232 verbinding is nu eenmaal een point-to-point verbinding, geen bussysteem...

Ja, en? Dan kun je toch gewoon ff mee kijken wat eroverheen gaat? Heeft niks met point-to-point te maken, maar gewoon met hoe (on)handig je OS er (niet) mee om gaat...

Arco

Special Member

Dit even vlug gemaakt, zou moeten werken denk ik... ;)
Je verstuurt <grafische data> <0xFF> <XY data> (de 0xFF is ervoor om te kunnen zien waar de XY data begint en de grafische data ophoudt)
Data komt in listbox rechts...

[Bericht gewijzigd door Arco op vrijdag 7 mei 2021 15:49:36 (12%)

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
trix

Golden Member

ga ik morgen testen bedankt.

eigenwijs = ook wijs
trix

Golden Member

zo juist dus getest, ik heb na het scheidings teken: 0x64 & 0xC8 is (100 en 200) verstuurd.
deze vind ik terug helemaal onder aan de lijst (zie printscreen).

en als het mag :), kun je de "dubbelklik is scherm leeg" functe weer toevoegen, die wastoch wel erg handig. tnx.

het hoeft trouwens niet X en Y te zijn, het mag gewoon een kollom variabele zijn genummerd 1 2 3 4 enz.
dat heb ik eigenlijk liever, omdat ik ook nog andere variabele wil weergeven
die niets met X en Y van doen hebben.

[Bericht gewijzigd door trix op zaterdag 8 mei 2021 10:54:47 (13%)

eigenwijs = ook wijs