Portál AbcLinuxu, 24. dubna 2024 12:04


Dotaz: Jak monitorovat sériový port?

pdp7 avatar 24.11.2021 08:34 pdp7 | skóre: 33 | blog: Mravenec_v_LCD_monitoru | Zákupy u České lípy
Jak monitorovat sériový port?
Přečteno: 847×
Odpovědět | Admin
Mám program Stellarium co má v sobě modul na ovládání hvězdářského dalekohledu a potřeboval bych vědět co posílá na sériový port za příkazy. Pokud pustím nějaký monitorovací program tak mi to zablokuje a ve Stellariu se k tomu portu nepřipojím. Můžu dejme tomu vytvořit další virtuální port a spárovat to s tím co je nastavený ve Stellariu. Tam pak vidím, že posílá #:GR# (stále dokola), ale to nemůže být všechno protože Arduino které k tomu mám připojené mi hýbe s krokáči (vizuálně nejspíš správně). Musí to posílat i nějaké čísla jako souřadnice ale jakto, že to nevidím? Jednou se mi to i objevilo (se značným zpožděním) ale pak už ne. Ty sériové porty nejsou reálné ale emulované na USB nemůže tohle dělat ty latence?
"První" komunita sdílející software
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

Gréta avatar 24.11.2021 11:50 Gréta | skóre: 36 | blog: Grétin blogísek | 🇮🇱==❤️ , 🇵🇸==💩 , 🇪🇺==☭
Rozbalit Rozbalit vše Re: Jak monitorovat sériový port?
Odpovědět | | Sbalit | Link | Blokovat | Admin

nnnóóóóóóóóó jestli to jakoby nemáš nějakej teleskop na šmírování nahatejch dětí ;D ;D tak stellarium používá LX200 teleskopovej komunikační protokol hele :D ;D

tutorial stellarium + arduino třeba tady hele :D ;D

While connected to Arduino, periodically Stellarium sends 2 strings: ":GR#" - ready to receive RA and ":GD#" - to receive DEC. The code checks this strings and then sends, to the serial port, the corresponding string with the current right ascension (RA) and declination (DEC).

oslavná píseň na pana soudruha generalisima prezidentčíka Petra Pavla Pávka 🎶🫡🦚🎶
pdp7 avatar 25.11.2021 08:23 pdp7 | skóre: 33 | blog: Mravenec_v_LCD_monitoru | Zákupy u České lípy
Rozbalit Rozbalit vše Re: Jak monitorovat sériový port?
Příloha:
Díky. Když koukám na ten protokol a příkaz pro nastavení deklinace (respektive reportování z Arduina zpátky do PC) tak mi tam nesedí tohle

viz. příloha

Ani tomu pořádně nerozumím, stupně musí být větší než nula, pak ?otazník? plus už nepobírám. A taky mi tam chybí ta to s hvězdička která tam asi má být. Co to je ten %c? Integer? A to to vypíše do portu v tomhle případě? Kód jsem nepsal, ale to vám asi došlo.
pdp7 avatar 25.11.2021 08:58 pdp7 | skóre: 33 | blog: Mravenec_v_LCD_monitoru | Zákupy u České lípy
Rozbalit Rozbalit vše Re: Jak monitorovat sériový port?
A to 223 je co?
25.11.2021 09:17 X
Rozbalit Rozbalit vše Re: Jak monitorovat sériový port?
deg > 0 ? '+' : '-'
je ternatrni operator, ktery prida znak '+', nebo '-', pokud je hodnota deg kladna, nebo zaporna. Hodnota 223 je znak pro stupne '°'.
pdp7 avatar 25.11.2021 09:44 pdp7 | skóre: 33 | blog: Mravenec_v_LCD_monitoru | Zákupy u České lípy
Rozbalit Rozbalit vše Re: Jak monitorovat sériový port?
A ta 223 tedy platí pro to druhé %c že?
Gréta avatar 25.11.2021 12:08 Gréta | skóre: 36 | blog: Grétin blogísek | 🇮🇱==❤️ , 🇵🇸==💩 , 🇪🇺==☭
Rozbalit Rozbalit vše Re: Jak monitorovat sériový port?

jo :D ;D

někdo asi jako hloupě machroval nebo hoto jako nenapadlo ale myslimže je bezpečný tam misto toho čísla napsat normálně ten symbol '°' :D ;D

Gréta avatar 25.11.2021 12:12 Gréta | skóre: 36 | blog: Grétin blogísek | 🇮🇱==❤️ , 🇵🇸==💩 , 🇪🇺==☭
Rozbalit Rozbalit vše Re: Jak monitorovat sériový port?

ternární voperátor mužeš +- chápat jakože tam je jakoby napsanej takovejdle if někde

char c = '';
if( deg > 0)
{
    c = '+';
}
else
{
    c = '-';
}

sprintf(txDEC, "%c%02d%c%02d:%02d#", c, ........
25.11.2021 20:10 ehmmm
Rozbalit Rozbalit vše Re: Jak monitorovat sériový port?
Odpovědět | | Sbalit | Link | Blokovat | Admin
Skoda, ze jste sklouzli k diskuzi o protokolu.

Me by to odposlouchavani taky zajimalo.

Ja mam na rs232 odposlouchavaci kabel se dvema odbockama (pro kazdy smer jednu). Ten se pripoji mezi dve odposlouchavan zarizeni a odbocky se zapoji do dalsich dvou portu. A ve Windows jsem si kdysi napsal program, ktery me zobrazi data z tech dvou portu ruznymi barvami.

Ale zrovna v Linuxu jsem to zatim nezkoumal.
pdp7 avatar 25.11.2021 20:51 pdp7 | skóre: 33 | blog: Mravenec_v_LCD_monitoru | Zákupy u České lípy
Rozbalit Rozbalit vše Re: Jak monitorovat sériový port?
Příloha:
Asi to nedám dohromady, pokud by tu někdo měl arduino mega nebo due aby si to mohl ověřit, jsem ochoten to zaplatit pokud by mi to zprovoznil. Z nějakého důvodu to běží na Stellariu 0.18.1 a výš už ne, ale i tak mám problém se zaměřením čehokoliv co má v deklinaci hodnotu do mínusu... prostě to tam nedojede. A taky tracking tzn. sledování objektu podle otáčení země, dělá to pokouskách, vůbec by jsem se nezlobil kdyby to šlo kontinuálně nebo aspoň obnovovat tu pozici klidně častějc po menších částech.
pdp7 avatar 26.11.2021 16:22 pdp7 | skóre: 33 | blog: Mravenec_v_LCD_monitoru | Zákupy u České lípy
Rozbalit Rozbalit vše Re: Jak monitorovat sériový port?
// Reports the current declination
void getDeclination(Mount &scope) {
	const double pos = scope.getCurrentPosition().declination;

	const int deg = static_cast[int](pos);
	const int mins = static_cast[int]((pos - deg) * 60);
	const int secs = static_cast[int]((pos - (deg + mins / 60.)) * 3600);

	sprintf(txDEC, "%c%02d%c%02d:%02d#", deg > 0 ? '+' : '-', deg, 42, mins, secs);

        Serial.print(txDEC);
}
prosím pomoc, ta funkce sprintf v tomto tvaru vyhodí údaj v téhle podobě --49*-16:-30# ale to je špatně má to být takto -49*16:30# jen s jedním mínusem na začátku (nebo plusem - ale s plusem to chodí dobře), jak to mám upravit?
26.11.2021 16:32 MM
Rozbalit Rozbalit vše Re: Jak monitorovat sériový port?
Ahoj, zkusil bych
sprintf(txDEC, "%s%02d%c%02d:%02d#", deg > 0 ? "+" : "", deg, 42, mins, secs);
26.11.2021 16:36 MM
Rozbalit Rozbalit vše Re: Jak monitorovat sériový port?
nebo snad i
sprintf(txDEC, "%+03d%c%02d:%02d#", deg, 42, mins, secs);
pdp7 avatar 26.11.2021 17:00 pdp7 | skóre: 33 | blog: Mravenec_v_LCD_monitoru | Zákupy u České lípy
Rozbalit Rozbalit vše Re: Jak monitorovat sériový port?
V obou případech zmizel ten jeden mínus na uplném začátku, všude však zůstávají záporná čísla.
26.11.2021 17:21 MM
Rozbalit Rozbalit vše Re: Jak monitorovat sériový port?
aha, špatně jsem to pochopil... Už chápu - ak tedy...
sprintf(txDEC, "%+03d%c%02d:%02d#", deg, 42, mins < 0 ? -mins : mins, secs < 0 ? -secs : secs);
a nebo asi lepší
if (deg < 0) 
  sprintf(txDEC, "%+03d%c%02d:%02d#", deg, 42, -mins, -secs);
else
  sprintf(txDEC, "%+03d%c%02d:%02d#", deg, 42, mins, secs);
pdp7 avatar 26.11.2021 18:05 pdp7 | skóre: 33 | blog: Mravenec_v_LCD_monitoru | Zákupy u České lípy
Rozbalit Rozbalit vše Re: Jak monitorovat sériový port?
Zasloužíš odmněnu! Tady se pozná kdo umí, děkuji. Nabízím pětikilo :)
Gréta avatar 26.11.2021 18:48 Gréta | skóre: 36 | blog: Grétin blogísek | 🇮🇱==❤️ , 🇵🇸==💩 , 🇪🇺==☭
Rozbalit Rozbalit vše Re: Jak monitorovat sériový port?

Z nějakého důvodu to běží na Stellariu 0.18.1 a výš už ne

a teďko to už funguje?? :O :O

dělals něco s configem hele a jel podle toho návodu v readme?? :O :O

Gréta avatar 26.11.2021 18:44 Gréta | skóre: 36 | blog: Grétin blogísek | 🇮🇱==❤️ , 🇵🇸==💩 , 🇪🇺==☭
Rozbalit Rozbalit vše Re: Jak monitorovat sériový port?

slsniff hele třeba :O ;D

pdp7 avatar 26.11.2021 19:53 pdp7 | skóre: 33 | blog: Mravenec_v_LCD_monitoru | Zákupy u České lípy
Rozbalit Rozbalit vše Re: Jak monitorovat sériový port?
Situace se teď má tak, že v tý starší verzi to běží všechno přesně jak má. Začalo se to hýbat i v nový (narozdíl od předchozího stavu) jenom tak nějak jinam než má. Ale tam už nevím co tomu vadí. Pokud mu pošlu :Sd-DD*MM:SS# string (podle zápisu v protokolu) tak mi vrátí 1 jako že to vzal. Na můj dotaz :GD# mi odpoví správným formátem (jak plus tak mínus), akorát bez toho :Sd Já mám dlouhý vedení tak si teď tady hádám kde má být to :Sd jestli ho tam stačí posílat do dalekohledu (arduina) nebo má být i v jeho odpovědi. Nemám na to prostě palici... místo mozku lejno :D
pdp7 avatar 26.11.2021 20:09 pdp7 | skóre: 33 | blog: Mravenec_v_LCD_monitoru | Zákupy u České lípy
Rozbalit Rozbalit vše Re: Jak monitorovat sériový port?
V config.h jsem dal baudrate 9600, nějaký čísla pro počet kroků (momentálně nepodstatný, záleží na převodu) a zakomentoval jsem debug hlášky aby to nelezlo do Stellaria. Jo a ještě jsem zvolil typ arduina.
26.11.2021 22:25 MM
Rozbalit Rozbalit vše Re: Jak monitorovat sériový port?
Podle všeho jak najde "Sd" tak ve funkci setDeclination vrátí rovnou jedničku, i kdyby tomu dál nerozuměl - 1. znak za Sd bere jako znaménko, pak 2 znaky deg, pak ignoruje 1 znak pak 2 znaky minuty, ignoruje 1 znak a 2 znaky sekundy a uloží si to všechno jako desetinné číslo + jestli je to kladné nebo záporné - kam se pak asi snaží motorama dojet
pdp7 avatar 26.11.2021 23:10 pdp7 | skóre: 33 | blog: Mravenec_v_LCD_monitoru | Zákupy u České lípy
Rozbalit Rozbalit vše Re: Jak monitorovat sériový port?
On totiž ten plugin Stellaria pro ovládání dalekohledu (Meade LX-200) prošel nějakou změnou kde došlo k odstranění mezery mezi :Sd a těmi koordináty, která nejspíš v té staré verzi je. Ale kde to mám v těch zdrojácích hledat, snažil jsem se a našel kulový :( Orientuju se v tom asi jak uklízečka v účetnictví.
pdp7 avatar 27.11.2021 20:58 pdp7 | skóre: 33 | blog: Mravenec_v_LCD_monitoru | Zákupy u České lípy
Rozbalit Rozbalit vše Re: Jak monitorovat sériový port?
Udělal jsem si takový testovací otočný stolek a zjistil, že to chodí blbě, třeba mezi Polárkou a Vegou je ve skutečnosti malý rozdíl ve výšce a mě se to mění nejmíň o 35 stupňů :(
Gréta avatar 28.11.2021 01:41 Gréta | skóre: 36 | blog: Grétin blogísek | 🇮🇱==❤️ , 🇵🇸==💩 , 🇪🇺==☭
Rozbalit Rozbalit vše Re: Jak monitorovat sériový port?

nevim kde naplanetě se skováváš před interpólem :D :D ale pro prahu vidim pro tvuj čas pro vegu deklinaci +-38° noa pro polárku těch +-89° takže by to imho asi jako mělo lítat až vo těch 51° :D ;D

pdp7 avatar 28.11.2021 18:47 pdp7 | skóre: 33 | blog: Mravenec_v_LCD_monitoru | Zákupy u České lípy
Rozbalit Rozbalit vše Re: Jak monitorovat sériový port?
Viz. lítání polárky s vegou, jsem totiž játro :( Prográmek v arduinu má vlastní "hodiny" pokud GPSka nejede (jsem pod plechovou střechou) a liší se to s časem ve Stellariu tak to pak logicky nemůže sedět :D
Gréta avatar 28.11.2021 01:38 Gréta | skóre: 36 | blog: Grétin blogísek | 🇮🇱==❤️ , 🇵🇸==💩 , 🇪🇺==☭
Rozbalit Rozbalit vše Re: Jak monitorovat sériový port?

kde to mám v těch zdrojácích hledat, snažil jsem se a našel kulový :(

v souboru conversion.cpp hele :D ;D

ve funkci parseCommands hele si to kouká v if podmínkách na první dva/tři znaky toho co tomu přišlo po sériový šňůře noa podle toho jakoby volá různý ty další funkce co si vyzobnou a naparsujou další věci co potřebujou :D ;D

:Sd jakože nastavení declinace se dělá pozóóóór velký překvápko ve funcki setDeclination hele :D :D

odstranění mezery mezi :Sd a těmi koordináty, která nejspíš v té staré verzi je

myslimže ten arduino program vočekává ten :Sd příkaz bez mezer

hele jak to tady maj taky ukázaný :O ;D

pdp7 avatar 28.11.2021 11:24 pdp7 | skóre: 33 | blog: Mravenec_v_LCD_monitoru | Zákupy u České lípy
Rozbalit Rozbalit vše Re: Jak monitorovat sériový port?
Máš pravdu, ale proč tam je ta blbá čárka?
Gréta avatar 28.11.2021 12:03 Gréta | skóre: 36 | blog: Grétin blogísek | 🇮🇱==❤️ , 🇵🇸==💩 , 🇪🇺==☭
Rozbalit Rozbalit vše Re: Jak monitorovat sériový port?

lol už to asi jako vidim :D :D

stellarium plugin na řízení teleskopu tam žádnou čárku nedělá a navíc tam předtim asi jako byla nějaká mezera kterou někdo vykomentoval hele :O :O :D ;D

zkus to pole v tom souboru conversion.cpp popostrčit vo tu mezeru/index vo jedničku takže pro tu setDeclination takle třeba


	// Whether the coordinates are positive (1) or negative (-1)
	const int multi = (receivedChars[2] == '+') ? 1 : -1;

	// Parse the coordinates part of the command to integers
	const int deg = multi_char_to_int(receivedChars[3], receivedChars[4]);
	const int mins = multi_char_to_int(receivedChars[6], receivedChars[7]);
	const int secs = multi_char_to_int(receivedChars[9], receivedChars[10]);

podobně pro ty jiný funkce kde je ta mezera takže asi i pro rektascenzi :D ;D

pdp7 avatar 28.11.2021 13:24 pdp7 | skóre: 33 | blog: Mravenec_v_LCD_monitoru | Zákupy u České lípy
Rozbalit Rozbalit vše Re: Jak monitorovat sériový port?
Začínám tě mít rád :) Normálně mi to díky tobě docvakává :D To se počítá od nuly????
pdp7 avatar 28.11.2021 16:00 pdp7 | skóre: 33 | blog: Mravenec_v_LCD_monitoru | Zákupy u České lípy
Rozbalit Rozbalit vše Re: Jak monitorovat sériový port?
Maká to!
Gréta avatar 29.11.2021 12:11 Gréta | skóre: 36 | blog: Grétin blogísek | 🇮🇱==❤️ , 🇵🇸==💩 , 🇪🇺==☭
Rozbalit Rozbalit vše Re: Jak monitorovat sériový port?
Gréta avatar 29.11.2021 12:11 Gréta | skóre: 36 | blog: Grétin blogísek | 🇮🇱==❤️ , 🇵🇸==💩 , 🇪🇺==☭
Rozbalit Rozbalit vše Re: Jak monitorovat sériový port?
28.11.2021 17:27 R
Rozbalit Rozbalit vše Re: Jak monitorovat sériový port?
Ked program, ktoreho komunikaciu treba sledovat, bezi vo Windows, tak najjednoduchsie riesenie je program PortMon. Ten loguje vsetky operacie aj s casovanim, co je niekedy dolezite.

V inych pripadoch som to robil tiez paralelnym pripojenim na RX dalsich portov. Ale program sa mi na to pisat fakt nechcelo. Staci si spustit dva minicomy.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.