jste všicí se svým kopírováním hotovek na jedno brdo a už to začíná být skoro otravné :/
Příspěvky odeslané z IP adresy 85.71.152.–
/jinak představ si řetězec
"123456A"+konec řádku neboli ENTER - ten se převede do čísel v paměti která je organizovaná
8 bitově jako čísla binárně do 255. Zkonvertujem je raději do decimální soustavy. tedy:
49,50,51,52,53,54,65,13,10,0,0,0,0,0,0...
Na začátku programu nastavíš ukazatel na ty data bude ukazovat na jedničku
neboli číslo 49. Pak v té řadě čísel ještě vidíš 13 a 10 ty představují konec řádku(enter).
instrukcí CPI 13 porovnáváš ten obsah načteného registru A s 13. Tozn. nejřív existuje
instrukce pro načtení do registru A. Pak popořadě krokem prochází všechna čísla.
Ve všech případech je Z=0 (49,50,51,52,53,54,65) Až na konci řádku, který je
představován znakem s obvykle dvěma kódy 13,10 se zde vrátí u první 13ky -> Z=1 a může zareagovat následný podmíněný skok.
cislo 12 jako retezec se ti muze rozlozit do znaku 49 a 50. Cpi 10 porovna znak 10 to je rozdilne od znaku 1 a 2 tudiz bude Z=0 jakoze se nerovna. Priznak Z je od Zero a nastavi se kdyz po virtualnim odecteni zbyde 0 coz v tomhle pripade mimochodem nastane na konci radku ktery se oznaci prave znakem 10+13. Oddelene .....10,13
možná zbytečně složitý, stačí ti nahrát třeba přes mvi c,1 takhle hodnotu že nebylo velké písmeno, nikde neporovnávej počty a jen si ověř, že registr c je rovný 0, když neni tak počítadlo slov zůstane nezměněný. Na začátku nějaký lxi h,vlozene na konci přidat 48 pro vypsání znaku, příp. předtim vydělit deseti..
můžeš použít DM74185?
určitý zapojení s pár takovýma za sebou IO binárního převodníku 8bitů na BCD stav
http://www.utm.edu/~leeb/DM74185.pdf
a pak připojit BCD - konvertor na displej je 74LS47, tam už se vedou defakto jen přímo propojky/spoje..
osobně bych to řešil (sice protože ho mám doma) přes C520D (3x4bity) ten má přesnost na 0..999 a výhodu toho
že se dá pohodlně připojit 74LS47.
trochu složitěji odcituji .návod. od crutschow doporučuje vypořádat se tímto řešením, CITACE:
Another method uses counters. You need a binary up/down counter with jam inputs, a BCD up counter, a BCD to 7-segment LED readout decoder, and a clock (plus some timing logic). The BCD counter and BCD to 7-segment decoder can be combined in one unit if devices such as the CD4026B or CD4033B are used
In operation the binary word is parallel transferred (jammed) to the binary up/down counter (configured to count down). The two counters then start with the same clock
input, the binary counter counting down and the BCD counter counting up from zero. When the down counter reaches zero, the counting is stopped. The BCD counter now contains the value of the binary word in BCD format. This BCD signal drives the BCD to 7-segment LED
drivers to display the output in decimal format.
The number of chips for 8 bits would be one 8-bit counter (or two 4-bit counters), three decade BCD counters, and three BCD to 7-segment converters for the three digit readout, plus the timing logic circuits.
The timing consists of a single pulse (such as generated by a Flip-Flop) to load the data into the binary counter and start the sequence, and logic to detect the zero count and stop the count.
V tom prvnim případě se ti opakuje vnitřek, načteš napřed a pak už ne
načteš
while (je různé od nuly){
opakuješ výpis (na pozici čtení nedosáhne)
}
to druhé
v podmínce se ti načte další číslo:
začátek kódu podmínky
while ((i = scanner.nextInt()) != 0) {
výpis
skok na vyhodnocení podmínky zpět na while
}
když mi zaplatíš skrz PayPal pošlu ti to hotový pro Altair. Jinak nic na tom neni. Někam si šoupneš úvodní znak, někam poznamenáš že byl v průběhu neidentický, pokud skutečně nebyl, pak vypíšeš. Stačí určitě numerický výstup do 99 jedenkráte vydělením desítkou. Mám to tu, jestli máš z ASM kopřivku, nebudeš to nikdy v budoucnu potřebovat - pak svůj zájem projev na mém mailu, za nějaký rozumný obnos to k tobě doputuje. Vyšlo mě to na 78 řádek i mezerama. Fakt se to dá zvládnout - naučením pár základních instrukcí.
škoda, k tomu navíc Windows dělaj při instalaci spoustu *.log souborů do %systemroot% adresáře, ale ono že by to někdy uživatelům obzvlášť usnadnilo život při řešení zákysu :D. Možná použít instalační disk XPček s nějakym pokročilejšim Service Packem 2 nebo 3..
tim assemblerem to celkem jde - je tam vždycky funkce-řádek kódu pod kterou ten souhrn instrukcí patří (když zvolíš správně nejoptimálnějc ty optimalizace), jinak algoritmy obecně zkoušim normálně v obyčejnym Céčku(pod Win).
Přesně. To mi dělá taky, ten debugger je nepoužitelnej, bojuje s optimalizacema. O dost se to zlepšilo, když jsem je vyřadil, ale nechávám si to zobrazit v dalšim okně kde mám výpis kódu převedenej do assembleru. I tak neni schopnej načíst includovaný externí soubory zdrojáku, ať jsou kdekoliv mrší k nim cestu. Už na to nespolíhám, že by se tim našlo/vyřešilo vadný místo...
Něco nového tu mám, nech sa páčí...
určitě to zvládneš překonvertovat do svých maker (připsánim %idefine nebo prejmenovanim a upravou) nebo se dohodneme na nějakých společných, proč ne, ono trochu by to zdržovalo pokud by se to mělo praktikovat nadále takovymhle ukaž mi/ukážu své zdrojáky, (využívající tvá/má makra) :D
ohledně textů neměl jsem makro na víceřádkové řetězce a nebudu ho zatim vytvářet, připadá mi že to bude to poslední co bych psal.. asi spíš vrátit původní a místo lomena je odřádkovat do bezejmeného DB, taky řešení - a k tomu na 15 sekund!
ten bug tam byl teda ohledně pohybu ne jeden ale víc, takže jsem odstranil mimoobrazovkový neviditelný okrajový buffer a snad se na to nedá už nic říct, ještě bitmapu výbuchu k tomu AI nezapomenout !! ;-)
http://coosor.fileave.com/tanky2.zip
jop a v typedefs jsem přidal do BULLETu jen .dobuletu v stejném mustru dd
Tak jsem to patchnul (<?>nevim jestli bylo zapovezeno) jak tu bylo výše zmíněno, ty přejezdy na druhou stranu obrazovky - bug co nepočítal s betonovejma blokama, i když mi to bere ještě rohy, chce to jezdit úhledně přesně + nekonečně střel je na světě :-) (..ač se nezdá maj dobu doletu)
3 hodiny prácičky, než se do toho jeden dostane mohl bych počítat i s delší dobou na začátku, ale psal jsem ten potřebnej kód ne víc jak od sedmi asi...
teď to chce AI :D
http://coosor.fileave.com/proj.exe /je to rozhozený použitím jinýho zázemí maker, předělal jsem jen funkční část, okrasu jsem vynechal
Používáš dlouhý stringy? Že ti to vychází za 255 v délce hledání ve find...
V tom If Porovnáváš string find a ten začíná snad na indexu 1. K nule nemáš přistupovat, tam první znak neni snad v žádný implementaci.
Jde o to jakej používáš KOMPILER, jediný opravdu bezchybný jsou Borlandu. Zkus si změnit v nastavení kompileru OPTIMALIZACE, mě to obvykle u chybujícího a padajícího programu pomůže
To Garret Raziel : To Mixxy : to jsem dělal, je tam napsáno klaunn.txt a pár mezer, viz. můj příspěvek nahoře... jestli je v tom TXT nějaký další text kromě zřejmě mezer musí už být nějak šifrován klíčem to je naprosto jisté nebo snad ne?? Mimochodem neni to - jak jsem to zpracoval - vůči černému podkladu ale i barevnému!
Tak normálně laickej nástin - udělej součet všech tří vektorů pro každou jednotlivou kouli-kruh.
První vektor je pohybovej té koule. Druhej je převrácený vektor na místě dotyku. Tozn. že když padá kulička rovně dolů a je tam něco šikmo 45 stupňů zhora doleva dolu- bral bých výsledný úhel šikmo nahoru doleva. Vznikne ti vektor po tomhle součtu - změněnej z dolů na čistý doleva.
Pak přičteš třetí vektor což je pohybovej vektor druhého objektu jen jeho velikost a počítaná směrem pro místo střetu mínus střed. Zase když do kruhu něco ťukne vpravo dole, začne se pohybovat určitou rychlostí doleva nahoru. Velikost síly bude odchylka (klasickej vzorec pro úhel dvou úseček) směru pohybového vektoru druhého objektu - ku místu střetu objektů. Ta nabyde od 0 do 1, nemůžou do sebe narazit v jinym než max. 90 stupňovym úhlu svého pohybu prostorem vůči bodu střetu! Pro různý velikostní kruhy pak můžeš ještě násobit velikost vektoru.
ËDIT:
Ty hrátky s druhým vektorem (dotyku) jsem řešil poměrně úspěšně takhle:
uh1-dotyk, uh2-pohybovej vektor * v podstatě odečtenej úhel směru je potřeba vynásobit dvakrát
uh1:=arctan(zy/zx);
If zx<0 then uh1:=uh1+Pi;
end;
If vx=0 then begin If vy>0 then uh2:=Pi/2 else uh2:=3*Pi/2; end
else begin
uh2:=arctan(vy/vx);
If vx<0 then uh2:=uh2+Pi;
end;
If (uh1>=3*Pi/2)and(uh2<Pi/2) then
uh1:=uh1-2*Pi else
If (uh2>=3*Pi/2)and(uh1<Pi/2) then
uh2:=uh2-2*Pi;
If abs(uh1-uh2)<=Pi/2 then begin
uh:=uh1-uh2;
pomer:=(Pi+2*uh);
uh2:=uh2+pomer;
If (sila<>0)and(rych<10) then begin
sila:=sila*120;
vx:=round(sila*cos(uh2));
vy:=round(sila*sin(uh2));
Na to snad stačí TextOut a kdyžtak vytvoření vybraného fontu přes CreateFont, to funguje všude, velikost písma si tam taky můžeš zvolit, barvu, vyhlazování..
Na kreslení ploch je Rectangle, barva se volí CreateSolidBrush, objekty s kterými pracuješ navolíš SelectObject.
Nuže.. napíšu ti jediné - že sis ten vzorec pro výpočet korelačního koeficientu nějak ostře nezpůsobně převedla do kódu, takhle se suma nezíská, u všech tří sum bys to měla dát do cyklu a projet si každou hodnotu Xi či Yi v té závorce a to přičítat. Nebo musíš použít něco geniálnějšího, existují různé rychlé zkratky zbavující tě cyklu pro Sumy, ale nevidim že by to byl případ tvých proměnných Násobek //teda pokud nejsem nějak slepej :-)
To Krychlik : jo obalit to do dispose :-)
To pidgin :
Je prazdny protoze tam vadi to var v deklaraci (vnitrek procedury pak zachazi s odkazem ukazatele a meni ho)
procedure vypis(var P:uk);
udelej
procedure vypis(P:uk);
a promenna seznam zustane sama sebou, nebo pouzivej pro vypis tu pomocnou promennou prvek
Kdybych bral ze zadas vytvorit seznam nejmin o 6 prvcich,
tak kdyz chces vypustit treba 4. prvek
var
prvek:Uk; {pomocna promenna ukazujici na prvek seznamu}
i:integer;
begin
{tady ten tvuj kod}
prvek:=seznam; {z tohoto vypustime}
for i:=1 to 4-2 do {odecteme 2 protoze na zacatku odkazujeme uz na prvni prvek (-1) a skoncime o jeden driv (-1) -> funkce odstranuje naslednika}
prvek:=prvek.dalsi;
vypust(prvek);
vypis(seznam); {a nebude tam}
end.
To Garret Raziel : :smile3: napsal jsem na to rychlej prográmek a protáhl jsem tim tu bitmapu, je v tom skryta změť nepoužitelných znaků, až na kousek co je jediný čitelný a potvrzuje steganografii + trochu se bije s těma netextovejma znakama okolo / je tam jakoby jméno textového souboru mezitim
Zkus kdyžtak funkci GETDIBITS místo toho volání scanline obejde to Delphi, je to přímo win api.
nějak takhle:
GetDIBits( parametry:
handle of device context,
handle of bitmap ,
first scan line to set in destination bitmap ,
number of scan lines to copy ,
ukazatel - address of array for bitmap bits ,
address of structure with bitmap data (bi:BITMAPINFO),
RGB or palette index (napr. dib_rgb_colors)
);
var bi:BITMAPINFOHEADER;
bi.biSize := sizeof(BITMAPINFOHEADER);
bi.biWidth := SplashInfo.bmWidth;
bi.biHeight := SplashInfo.bmHeight;
bi.biPlanes := 1;
bi.biBitCount := 24;
bi.biCompression := BI_RGB;
Jen studuj knihy a nápovědy dovíš se tam věci, který ti usnadní život a nebudeš zadržován a zpomalován svou nevědomostí ;-)
já si v nápovědě balíku ME do Netbeans -BasicCustomizationGuide- našel jak si poradit s jejich telefony v konfiguračním souboru položkou touch_screen, taky jsem měl deaktivován dotykovej displej. ha?
Tak pokud bude jediným znakem toho že jednotka byla zabita a je mrtvá to že její unit půjde k *null* potom stačí před osudovým vykreslením používajícím unit dát jeho test na null. Když budeš označovat úmrtí jinam, tak-že se nemá kreslit otestuješ na tom zase před kreslenim = (Units[i].zije==true) painting. Tim chci říct nechej tam ten cykl. A na začátku v případě B nastav všech čtyřicet v initu na Nezijici. Víc polopaticky to už skutečně nenapíšu :-P .
Já to odkomentoval a jede mi to (po kliku na lučištníka - ovšem do pravého horního rohu-asi máš odchytávání souřadnic těžkopádnější- se zobrazí na deset časových jednotek copyright, tedy něco co asi zrovna vidět nechci ale to je jen tvoje představa :-)) ), že by byl nějaký HW problém na tvém mobilu? na emulátoru ti to snad jde ne? žádné klávesy nikde nemačkám
Já studoval Image kreslení na bluej.org příkladech ale neřadil bych to k nejpoučnějšímu, mrkni třeba nejdřív na práci s Image na java.sun.com (doklikej se k tutorialu) a klidně pak vygoogli nějakej example Javy s Canvasem, v nejhoršim případě ti sem něco pastnu, jestli bude čas :D
Moc si se vývojově co si tak připomínám neposunul. Celkem nechápu že ti to nepadá - Po startu na začátku mi to kolabovalo, když se snažíš vykreslovat 40 jednotek a inicializovaný máš první dvě z nich na GameSprite, takže jsem předsunul test na null na patřičné místo do paint, abych se do hry vůbec dostal.
Tvůj problém je snad jasnej - máš zakomentovanou překrytou metodu showNotify() v gamecanvas.java asis chtěl mě/druhé testovat zda si všimnou, tudíž nebyl inicializovanej Timer, nebo jsem si dotaz nasměroval jinam?
Ale co takhle použít nějaký profesionálnější systém zobrazování, můj tip je : nastuduj si Tutorial vykreslování do Image nebo líp BufferedImage a ten pak vykresluj, ať ti to nebliká. U složitějších grafických věcí se přímo v Paintu na g = displej nekreslí.
* taktéž přeji * nemám tu někoho po ruce :D i tak, všim jsem si jistého hendikepu ve střelbě, když jsem se pokoušel o víc donekonečna poletujících nebezpečných vraždících koleček - jako kdyby se autor vyhnul použití polí pro vystřelené projektily, dají se považovat tak trochu za ..jo-jo. :-)
processmessages co vim se dívá do fronty událostí okna, protože máš jenom jeden thread zaseklej v cyklu, tak by nedošlo ke zpracování kódu v obsluze tlačítka a kdekoliv jinde. Sleep je ta opakovaná pauza a uspání aplikace na danej počet milisekund. Dalo se to taky víc vláknama, ale je to zbytečný, všechno i ukončení aplikace se zvládne pomocí komunikace přes proměnný v 1 threadu.
napadá mě to řešit-
pseudokód:
repeat
výpočet
proměnná dosáhla hodnoty then
begin
vypis; // napr. do labelu
pauza:=1;
repeat
application.processmessages; // bez tohoto to nepujde
sleep(100);
until pauza=0;
end;
until konec vypoctu
Obsluha eventu TLACITKA
if zmacknuto then pauza:=0;
---------------------
nebo varianta 2
pseudokód:
mame aktivovany Timer:
Procedure Timer
inc(hodnatatimeru);
Procedure Vypocet;
repeat
výpočet
If hodnotatimeru>100 then
begin
vypis; // napr. do labelu
pauza:=1;
repeat
application.processmessages; // bez tohoto to nepujde
sleep(100);
until pauza=0;
hodnotatimeru:=0;
end;
until konec vypoctu
Obsluha eventu TLACITKA
if zmacknuto then pauza:=0;
nebo podle potřeby mírně osolit a doupravit..
Pěkná prácička.
Snad máš k tomu i stejně slušivý sprite výbuchu ;)
co dáváš v Timerech, InvalidateRect() ? wmpaint ti za tim cos vypsal končí? nejspíš máš pokroucenej vnitřek renderu.
taky je možnost že přijímáš argument do Render jako R_hDC,
-napadá mě že bys měl předávat Rect líp, win API ho chce jako ukazatel : přes ADDR.
člověče nebude to tak že si ho vtipně přemažeš Bitmapou?
wmpaint
invoke BeginPaint, [WP_hWnd],ps
invoke BitBlt, eax,0,0,[dwClientWidth],[dwClientHeight],[hOffDC],0,0,SRCCOPY
invoke EndPaint, [WP_hWnd],ps
render
invoke FillRect, [hOffDC],Rect,[hBckg] ; = oprava
; a cele kresleni
už se těšim na demoverzi :D
kdysi INC i ADD zabíralo na Intelu dva takty procesoru, jestli se to na vícejádrových architekturách u procesorů nějak mění nevim.
v každym případě používám INC zabere míň místa :-)
jakej doublebufferingovej systém používáš je mi záhadou, já normálně přemažu Brushem přes FillRect() a do DC okna vykresluju celou scénu. Každej frame prostě kreslim odznova.
Wavík ti dám. Zkus si z toho nějak odstranit ten šum, jen jsem ten soubor přeformátoval vlastní utilitou. A i kdybych měl specifikaci jak to komprimuje ty složky frekvence stejně bych se do toho kvuli tomuto nepouštěl :D
GetWindowRect neni nutný opakovat,jo, ovšem vůbec hezčí co praktikuju je vykreslovat do vytvořený bitmapy daný velikosti třeba těch 800x600, a pak se přizpůsobíš velikosti okna funkcí StretchBlt. Bitmapu pravděpodobně kvuli problikávání taky vytváříš. Nevýhodou je trošku že to postrádá filtrovací bilineární vychytávky aby to vypadalo líp při některých poměrech stran.
K tomu prvnímu, nepoužívá se obvykle právě na výčet toho zobrazení nějaký druh iterátoru místo pevného přístupu podle Id - RecordEnumeration dbenum = databaze.enumerate(); while(dbenum.hasNextElement()) { dbenum.nextRecord(); }
Mám dojem že používám GetWindowRect,GetClientRect a následně po odečtu přičtením k argumentu u SetWindowPos.
btw v kolika jsi procentech ? ...zhruba :-)
Podle mě neni nic jednoduššího než si udělat proměnnou man místo
boolean -> int a místo true do ní dát prodlevu pro zobrazení třeba 500
v přetížené metodě paint pak ve větvi man dáš man--; (pak podmínka na větší než nula) dýlka zobrazení bude
500xinterval časovače. podobně u ostatních.
to mas jeste ve vystupech celkem dobrej pomer, asi tam nemaj moc slozity vstupy.
a asi bych to psal znova a doufal ze to stihnu :D, jo binarni strom s intervalama bych si na to umel predstavit, ja nejvic kdy potreboval do algoritmu ovsem cistej binarni strom, na intervaly jsem ho delit nemusel, takze chybi hlubsi zkusenost :D
Myslim že by mohlo stačit odstranit lokální proměnnou barvy z Procedury Vypis
a dát ji jako globální, pak se nealokuje na zásobníku ale normálně v datovym segmentu. S ní mi to taky padalo, po změně to jede,
ale !
nevim nevypadá to že bys ten program měl zrovna funkční, zkus takové mé zadání dole a podle
mě ti to vypíše nesmysli, já bych k tomu přistoupil nějakym pyramidovym řešenim, kde
bych pro každý příkaz od prvního odebíral jednotlivé příkazy postupně co následují a nezapomněl osekávat vnitřky, nedělal to najednou pro všechny jako ty, jestli chápeš :-)
bonifac.in
4 5 8
1 8 1
2 3 3
5 6 4
2 3 2
no dej vedet az to budes mit, nebo kde se seknes.
treba klasicky hry Arcanoid, Space invaders, Micro machines.
Tu aplikaci jsem si delal bitmapovy koder do Gifu, tak muzes
neprimo navazat
prohlizecem gifu, neni to nijak slozitej format :-)
kazdy odhaduju na max. 20-30 ruznorodych volani API a tak zhruba tejden prace
Zkoušel bych přes souborový manažer Norton commander, má LPT,COM spojení, i na PC s WinXP se dá pokud má FAT32 nabootovat skrz disktetu do DOSu, kdyby XP blokovaly com port, nebo při troše štěstí pomůže novej Dosbox.
ovsem na seriovem bude rychlost mizerna
Rezistory R19,R20 jak jsem navrhoval jsi už ale snížil ?? mohl jsi zvolit
např. 130ohmů.
Když něco zkratuješ tak proto aby to nesvítilo, lépe se to dá zvládnout
nasazenim čepičky, víc pohodlí pro poznání funkčnosti Ir než ti dá tenhle
program si už neumim představit.
Tlačítkama teď nebudeš volit program ale každé ovládá svit jedné Ir diody, když držíš dioda svítí, pustíš přestane,
tak si s tim vyhraj jak chceš. Na displeji svítí 0 pro Nic, 1 pro Detekci.
Nějak si to mechanicky douprav.
http://olox.chytrak.cz/robotika/p9.asm
Taky si tam doporučuju zkus vyměnit jednu Ir za LED ať to vidíš na vlastní oči
tohle taky postav http://robotika.cz/competitions/robotour2007/proceedings/r-team/cs
V dokumentaci se k Ir praví:
Jelikož infradiody slabe vyzarují svetlo i do stran, infraprijímac
vyhodnocuje príjem, aniž by došlo ke zpetnému odrazu svetla od prekážky. Tento
problém jsem vyrešil navlecením infradiod do cerných smrštovacích bužírek tak, aby
mohlo infracervené svetlo svítit pouze pod malým úhlem (smerem vpred). Rešení je
na Obrázku 9.
Já mám technický dotaz, když na Atmegu přivedeš na port 1ku , na něm je LEDka,
tradičně na +5V anoda, katoda na portu tak musí snad zhasnout, pro rozsvícení potřebujeme instrukci
cbi port,x tak proč je to ve všech ukázkových programech s Ir opačně?
Vyhodnocovat se podle mne má chvíli po té co se rozsvítí, a ne po té co
se počká až skončí její dosvit ne? To chci vedet, TOTO. :smile11:
program sloučením všeho co funguje
http://olox.chytrak.cz/robotika/p8.asm
(to Ir jsem napsal obracene)
1-demo
2-mod6 pro Ir zmeneny
3-jezdi a zastavi se po detekci Ir
4-tykadla
5-nahodna jizda
6-sledovani cary podle tebe
k Ir
v tom pripade sniz rezistory az dolu na min. 40 ohmu! Nemas tam ani pozadovanych 20mA a doporuceno je az 100mA
Moj program3 se zastavil ponevadz jsem nedal 2s pauzu a senzory jsou vybuzene. (4 je tykadlo a tam je to beznadejny :)
Program respektive Mod 6 - opakuji - jsem napsal pro vyzkouseni Vzdalenosti detekce a mas hybat rukou a sledovat 0,1 viz.
citace
6 program je na rozpoznani vzdalenosti detekce senzoru (Ir), takze spust ho, robot nepojede a ty mi nafilmuj kdy na displeji se zmeni 0 v 1 kdyz ho budes priblizovat k nejake krabici - rukou a pak ho oddaluj pro 1 -> 0.
0 -> bez detekce
1 -> detekce
U tveho modu bych doplnil sbi PORTB,0 ; i pro pravou ir led
nebo u mne povol 2 sekundovej delay at to nebere jeste ze vzduchu...
Aha tak potom navrátim Tykadla zpět zhlavy na patu a použij program na nahrání v 17:00.
Jinak u Ir jde o odpory R19,R20 a použil bych pokud je detekce příliš dalekonosná z 160ohmů na 400 např. chce si to pohrát
edit-nebo je R15 bez kontaktu a vyrobils studený spoj a vnitřní odpor SFH5110 neni schopen svým nad 20k odporem vyrobit 1.
Myslel jsem že uděláš kuk do kamery - zklamals ...
Až se mi nechce věřit, že jsi toho robota sám postavil, když jsi v dalších
ohledech tak omezen !!!
Kde je v programu 2 ta čára, máš ho položit přímo na čáru jako v ukázkovém
videu. 4 cm (3.5cm) široká
Když je rozteč mezi senzory 4.5cm tak má čára být prostě o půl cm tenčí.
Čim tenčí bude tim bude robot jezdit víc cikcak a mít tendenci ji přejet protože
obzvlášť tenkou prostě senzor nestihne zaznamenat. Vyrob si laskavě podmínky přesně
stejného charakteru jako na Ukázkovém VIDEU !
Jakmile dáš čáru tlustou stejně nebo víc - jak rozteč sensorů - robot ti nepojede,
tohle ti musim vysvětlovat nebo o co jde ???
Do dráhy uzavřené čáry pak umisti překážku. Kde mas ty 20x20 prekazky, kam ti zmizely?
Proto jsem program pro caru neprepsal a ani nahodou ho prepisovat nebudu dokud neopravis prostredi na kontrastni dvoubarevne.
To tě nenapadlo že v modu 3,4 je funkce jako by sensory byly vybuzené?
Což u tykadel nechápu, ale dobře žes dal video to z tvého prvotního popisu vůbec nebylo patrné
jako ta CARA, zase jsem u ni !
Mod 5 mi nedava smysl je sestaven z podminek modu 3 ma se stale tocit, proc se porad netoci, je ten robot v poradku??
Kdyz je program identicky, pak mi vychazi ze dosah infra senzoru je daleko za ukazkovych 15-25 cm a dosahuje tak pres 2 metry(filmoval jsi moc v priblizeni). Jake jsi pouzival rezistory, nominální?
Jaky mas dosah toho infracerveneho senzoru, je na robotovi na nejakem portu pouzitelna LED dioda, kterou muzes rozsvitit?
Zatim takhle 6 program je na rozpoznani vzdalenosti detekce senzoru (Ir), takze spust ho, robot nepojede a ty mi nafilmuj kdy na displeji se zmeni 0 v 1 kdyz ho budes priblizovat k nejake krabici - rukou a pak ho oddaluj pro 1 -> 0.
0 -> bez detekce
1 -> detekce
Tudíž milý pane programy jsem upravil tak aby senzor vyhodnocoval obráceně což je
nesmysl, vstup od tykadla je při propojení na zemi, to jsme v KOCOURKOVĚ.
http://olox.chytrak.cz/robotika/p7.asm
..kazdou chvili tam mam novou verzi posl. souboru
btw jestli te muzu poprosit o vic sirokouhle filmovani k p7.asm
EDIT: Program 3 u p6.asm jsem koncipoval pro pouziti v arene tvorene obaly cd-romu. viz. 1. video
Bez videa dál nespolupracuju, potřebuju nejen namotivovat ale i vidět to!
Až dáš aktuální video domluvíme se na něčem základnim jako ta ukázková
jízda, je nutné vědět jestli ti
sbi PORTC,1
sbi PORTC,3
aktivuje motory pro pohyb dopředu a nemá to být 0,1 nebo jinak
Sledování čáry přepíšu komplet jinak, nechal jsem tam totiž to tvoje.
Predpokladam ze jsi odmazal na zacatku to rcall Nahod.
Používej avrasm32.exe http://olox.chytrak.cz/robotika/avrasm32.exe z trojkový řady(studia), warning by tě ale neměl zastavit.
nový zdroják kde jsem opravil upsání 1 písmene http://olox.chytrak.cz/robotika/p6.asm
Joj vidět video co to dělá na tuhlec trapně * jednoduchej zdroják bych neodmítl. Abdukcí já si tu předevšim předl, předl - předu len, co z něj asi bude jen? Však se doví, kdo si vyčká, bude z něho košilička jako z vodních bílých pěn...
Dedukcí, když ti funguje sledování čáry, tak můžeš mít problém jen s doladěním - korigováním milimetrů v zážehu motorů u např. toho ohraničeného prostoru obaly od CD? Nebo co.
Já mám chutě dělat přesuny (pohyblivých) překážek a nevymloouuvej se že na to neni robot konstruovanej a proveď hbitě patřičné úpravy. :-)
napsal jsem to znova od bodu obnovy 1 *. Nevim co bys ještě..... -račte mi předvést ony prací programy....úschovných vaků na košiličky je na netu spousta
http://olox.chytrak.cz/robotika/p5.asm
tech.
odstranil jsem pro svou potřebu 2s pauzy
k tomu Nahodnemu programu když aktivujes ty skrtle 2 radky tak pokud narazi na vodici caru prejde na Program Cara
Na to me ale pak napada efektivnejsi pruzkum terenu k hledani cary nez chaoticke cikcak.
Mechanickou část už máš plně hotovou, aby to nebylo slepý babrání v ničem?
Přijde mi to, že ti chybí jasný koncept,
Zastaveni se pred prekazkou je variaci na sledovani cary a nechapu proc by ti
v tomto pripade prestalo zahadne fungovat, mas tam Stuj a Akrobaticke stuj,
to neni provedeno?
K necemu to bude az sem hodis treba foto a reknes ze chces udelat neco z
nasledujiciho (nebo se v tom chces dosavadnim stylem babrat vecne)?
a)Jako vytlačení z kruhu při boji, to by byly potřeba 2 kousky.
b)Arena
Najití cíle(bílý kruh x1,y1), dotlačení pohyblivé věci(nalezená překážka s
uložením x2,y2) k cíli pomocí jednoduchého ukládání
souřadnic x,y (s přesnějším dohledáním) podle směru a délky pohybu.
To základní co robot umí je ve specifikaci onoho Gurustudenta a neni na tom
co dál bastlit. Nejde o to to mermomocí zítra mít ale mít přesně co dělat!
Vpravo2 jako částečné otočení je o ničem, Nahodna jizda postrada opravdovejsi
prvek "nahodnosti", něco jako žádné přesně definované doby zatáčení
ser Delay1
ser Delay2
ldi Delay3,4 -> random
Word hodnota s přičítáním,násobenim,xorovánim a modulo 2 jako po kosntantní
době definovanou změnu pohybu z jízdy vpřed / točení, víc to seskládávej z podprogramů, máš v tom chaos.
Dám si šlofíka, až ti poběží Softice a budeš crackovat něco velkýho, mě ale rozhodně vzbuď..
Jak jsem psal zapomněl jsi na include shell32.inc, shell32.lib.
Masm používá pro volání APIn invoke příkaz
použij invoke ExitProcess, 0 ; tj. exitcode
invoke ShellExecute, 1.parametr, 2.parametr, zde ve správném pořadí.
dál bych tě vyvedl z případného omylu, že se ti povede jen tak injektovat
kód volání ShellExecute do jakéhokoliv programu si zamaneš.
Používají se odskoky na adresy knihoven DLL, SHELL32.DLL, to je ten
převod Call něco na Call adresa, takže když nebude mít program linkovanou
tuto knihovnu dll,
skončíš runtime pádem. A když bude mít linkovanou, skončíš
runtime errorem na jakémkoliv odlišném systému Windows, kde
se adresy APIn s časem bohužel mění.
Řešením je lokalizace import table v PE hlavičce, vytažení Base Kernelu,
který je používán vesměs vždy a použití LoadLibrary,GetProcAddress. Nebo testovat všechny známé Base kernelu, nevim jak je to nejlíp s verzema Visty nebo teda Win7 a jejich prolomenym relokačnim enginem pro umisťování na random místa svých dll.
Bude to chtít trochu té snahy, abys to vytesal do zprovoznitelné podoby. (nebo si zaplatit)
Samo se ti to nenapíše.
Použij API ShellExecute a pomocí série Push předej parametry.
Je otázka kam to píšeš, jestli přímo do .C souboru (pod příkaz __asm) nebo
souboru .asm a použiješ to jako Objektový soubor, nebo to chceš taky jako Exe
z překladače asm jako je Masm32,..
WINAPI je:
HINSTANCE ShellExecute(
HWND hwnd, // handle to parent window
LPCTSTR lpOperation, // pointer to string that specifies operation to perform
LPCTSTR lpFile, // pointer to filename string
LPTSTR lpParameters, // pointer to string that specifies executable-file parameters
LPCTSTR lpDirectory, // pointer to string that specifies default directory
INT nShowCmd // whether file is shown when opened
);
PUSH se provádí (u stdcall) odzadu, je potřeba např. nezapomenout Includovat .inc
Umět instrukci MOV a CALL. Pak další (příjem parametrů ze Stacku-zásobníku) podle toho zda hodláš spouštět stále ten samý
program nebo program proměnný.
Nějaké příklady programů .asm v balíku s překladači ať už masm,tasm,nasm, ti pomůžou.
To dDesmondD :
V situaci kdy tápeš že nevíš který ťápoty jsou tvoje, atd. je léty ověřeným trikem-lékem podplatit porotce ;-) , peníze nejsou jediná možnost, ale když pošleš částku přes PayPal jsem tvým služebníčkem :-)) nebo beru také "unikátní" nevídané, vzácné zboží zaslané na mail. Vyber si jestli ti služby za to stojí, rozebrání odstavce asm to zřejmě (v zájmu z tvé strany) bez anestetik jen tak nebude :D
k editu: po vyčerpání všech ostatních možností se i dDesmondD chová rozumně.
to KIIV:
ále, ta doba :D, utírám slzy co padaj do potoka, su smutný jak ta sehnutá opadaná vrba, že tu nejsó také dotazy, co lóni, ňáká slečna se ptala jak napsat a importovat Céčkovskou variantu printf skrz asm, vypadala že to zvládla po chvilce sama, tam by byla bývala radost se zapojit do diskuze :-) (sem to vlákno až nedávno čet), ale tady umělci, jak pravíš, neví už povětšinou ani co děla MOV. Assembler, DOS je mrtvej já chci hergot post-scifi společnost která sere na komerčnost využití. Má všechno a proto se věnuje plně umění .....nebo aspoň zpátky ty komunisty :D
Jako přísedící jsem notně nervózní co ti neni jasné, otevřel jsem rozpravu nad přidánim instrukce jcxz skokjakopriVelkeSeNerovnaNasobkuMalych, možná aby bylo jasno na čem jsme, rozeber mi tento odstavec *, neboť mám dojmů že jsem už jediný v široširém světě kdo asm rozumí :D
*
nextCh: cmp byte ptr [bx],‘$‘ ; testujeme koncovy znak
je space ; ak bol, tak kontrola posledneho slova a koniec
cmp byte ptr [bx],' ' ; testujeme medzeru = zaciatok/koniec slova
je space
call testChar
inc bx ; dalsi znak
jmp nextCh
; +++++++++ zaciatok/koniec slova +++++++++
space: sub ch,cl ; (pocet velkych) - 2*(pocet malych)
sub ch,cl ; ak vyhovuje, vysledok je 0 (CX=0)
cmp ch,0 ; testujeme ci je spravny pocet malych/velkych
jne clWend ; ak nie, tak skok
pop dx ; obnovime pocitadlo spravnych slov
inc dx ; aktualne slovo vyhovovalo
push dx ; odlozime spat
clWend: cmp byte ptr [bx],'$' ; testujeme koncovy znak
je finish ; ak bol, tak konec analyzy slov
mov cx,0 ; znulujeme pocitadlo znakov
inc bx ; dalsi znak
jmp nextCh
konkrétně část space nám dělá asi tu potíž s mezerama
Máš to vypracované takřka na jedničku, jen zauvažuj nad případem kdy se porovnává
a=b*2
To vychází nejen pro 4,2 ale i 0,0 takže před toto poměřování vlož ještě podmínku, že délka je alespoň jeden znak, neboli různá od nuly
cmp ch,0 ; cmp cl,0 ; na tom nesejde
Jak naražíš neustále na tu obyč poezii tak obdobně obyčejně dorážim já na tebe.
Jinak stačí pochopit
že tady nejsem zaměstnanej aby mne cokoliv nutilo psát nekonečné rady zabalené navíc pro tvůj nejpohodlnější blahobyt,
věnuji se tomu okrajově,
jakou měrou jsi k tomu přispěl ty sám "je ve hvězdách".
souhlasim s tmi, přijde mi to např. u C jako odečet od 10000 možností , kde dvojice nahradim desítkou, následující číslo je na výběr 9x pak 8x, 10*9*8/10000, to násobení u Krychlika 4 by bylo když by záleželo na pořadí a to neni. Ruku do ohně za to nedám ale ani náhodou.
napadlo mě:
function TAbsBSTree.ZpristupniOtce(prvek,hledany:TAbsBSTreeItem):TAbsBSTreeItem; //preorder
begin
Result:=nil;
if (prvek=nil) then
Exit
else if (prvek=hledany) then
Result:=prvek // tohle ale nevraci otce, bych vypustil celou podminku
else if ((prvek.GetLevy=hledany) OR (prvek.GetPravy=hledany)) then
Result:=prvek
else
begin
result:=ZpristupniOtce(prvek.GetLevy,hledany);
If result=nil then
result:=ZpristupniOtce(prvek.GetPravy,hledany);
end;
end;
Například bych se podíval na firewall, kdyby mi to v JehoVistě nešlo. Nebo bych vypsal
na fórum chybovou hlášku.
Jinak mohla by se nám tu přihlásit nějaká oběť na které bychom to spojení vyzkoušeli,
stačilo by nám jen její IP.
Co potřebuješ je nastavit u sebe v chlívku pro IP příjemce svou IP adresu
získáš z cmd ipconfig /all pak až budeš provádět deploy klienta na victim
nastavíš mu svou veřejnou IP z http://whatismyipaddress.com/
Všechno je to v komponentě do kódu nezapisuješ nic, dokud z něj nechceš udělat
purified malicious sw.
Je několik metod, jedna - když znáš vrcholy trojúhelníků
tak je postupně projdeš po směru nebo proti směru hodinových ručiček, na tom nezáleží.
Vezmeš normálový tvar přímek, které tvoří z bodů trojúhelník.
tj. obecně ax+by+c=0
vypočítám a,b,c.
a,b jsou vektory odečtením následujícího vrcholu od předešlého a vynásobením kolmým
vektorem, tozn. (y=x,x=-y)
c získáme po dosazení 1 vybraného z dvou vrcholů.
Celé látka analytické geometrie.
Pak postupně dosazuji z druhého trojúhelníku každý ze 3 vrcholů
pro každou z přímek. Celkem 9 porovnání.
Když výsledek
vždy nabývá po dosazení za X,Y
hodnot ax+by+c>0
v případě že jsi proti směru hod. ručiček, nebo záporného čísla
v protijdoucím směru pro všech devět porovnání je trojúhelník celý vepsán.
Stačí ti tedy hlídat If podmínkou že nedošlo nikdy ke změně ze záporného
na kladný nebo naopak výsledek rovnice a nic víc.
To aadulienkaa : ještě chvíli dloubej a napíšu :)), a nevim v takovémto prostředí - nebude náhodou na obloze víc jasno, když řeknu že já jsem žena a ty muž ? :))
last update from Scotland Yard :D
Ponůkám krajší zábavu, kdo má zájem -- táto rádoby žena je samozřejmě muž, je to tentýž člověk jako JohnAbruzzi, ale protože v cyberprostoru se JohnAbruzzi už celkově vyskytuje tolikrát jako žena - blondýna - je možné že to žena skutečně je kódy kopírující žena bloudivě tápající po fórech, to jsou mi věci :-))
Tak konečná je nejspíš (on kdoví) u chlapa ročníku 83, Juraje, kterej na mě už začíná mít asi svůj prašivej vliv, brrr, dDesmondD, podezření je u andrealovasova a dokud bude živ tak milióny nových zkomolenin :D rodokmenů
Vyber si buď mi napiš jak se vybere třeba znak 3 z řetězce na který ukazuje SI a používáš BX. Jak necháš v reg. BX jen spodní bity pro 0-15...
..a postupně se k tomu dostaneš.
Nebo napiš poutavý odstavec o tom jaké to je být blondýna, když už si to tu vehementně sama nakousla :))
nekončící milodary se tu nerozdávají :))
Milá Multi jazyková tazatelko :-)
definoval bych řetězec
hexa DB '0123456789ABCDEF'
pak před výpisem
mov SI,offset hexa
+
a pak tak krásně jak si rotovala a bitově maskovala osmičkově jen ANDuj 16ově
výsledek si místo v DL ukládej nejdřív do BX abys ho takto přičetla:
mov dl,[si+bx]
Int vypis
A něco takového to být nemá?
int Hledaj( int PocetZ , int hledane )
{
int i;
for( i = 0; i < PocetZ; i++ )
{
if (atoi(g_Param[i]->Cislo)==hledane) {
printf( "[%d] %s\t %s\t\t %s %s %s\n", i,
g_Param[i]->Priezvisko,
g_Param[i]->Meno,
g_Param[i]->Rocnik,
g_Param[i]->Odbor,
g_Param[i]->Cislo);
return i;
}
}
return -1;
}
EDIT: udelal jsem to 2 parametrove, nebo by slo mit globalni promennou pocetZ, nebo testovat zda je g_Param[i]==NULL.
Připadne mi to jako bys napřed nakreslil křivku a pak vynášel hodnoty :-)
Valnou většinu svého programu máš nesprávně střílením na terč soupeře...
ByteToString PROC- přijímá parametry ze zásobníku, které se neobtěžuješ předávat
je špatně i funkčně
pokud se v tom motáš udělej raději (hodnota v AL, nemusí se Pushovat):
mov bx,100
@1:
xor ah,ah
div bl
push ax
mov ah,2
mov dl,al
add dl,30h
int 21h
mov ax,bx
mov bl,10
div bl
mov bl,al
pop ax
mov al,ah
cmp bl,1
jae @1
Dál jádro programu porovnává Wordy místo Bytů. To že ti to porovnává na správném místě je zázrak toho typu, že terč protivníka se také po dostřelech sčítá. Tím jsem chtěl říci trefuj se k sobě odstraň BX z adresování SI+BX a nespoléhej na 0 offset (samozřejmě BYTE PTR)