#4 liborb
A jak zavolat to překreslení pro komponentu Image
Příspěvky odeslané z IP adresy 81.30.255.–
Co si přesně slibuji od řádku: Form1.Image1.Picture:=nil;No zkoušel jsem do jednoho buttonu dat
A s tym vlaknem furt dokola.
ImageList1.GetBitmap(0, Image1.Picture.Bitmap);
a do druheho
ImageList1.GetBitmap(1, Image1.Picture.Bitmap);
Prvni kliknuti na button funguje, dalši už ne,nepřekresluje se to.
Tak jsem zkoušel s nil před každym přikazem a pak to funguje.
Jiny zpusob neznam.
Čet jsem na Delphi.cz že je prasarna zastavovat vlakno přikazem sleep, pry to zatěžuje procak,tak mně napadlo toto.
Zdravím.
Snažim se na form umistit nějaky ten gombik, ktery by mně informoval zda jsem připojen k netu.
Něco takoveho.
procedure TForm1.Timer2Timer(Sender: TObject);
begin
If PingTime('173.194.35.152')= -1 then
begin
Image1.Picture:=nil;
ImageList.GetBitmap(7, Image1.Picture.Bitmap);
end
Else
begin
Image1.Picture:=nil;
ImageList.GetBitmap(6, Image1.Picture.Bitmap);
end;
end;
Funguje to jak ma, ale pokud net nefunguje, program laguje.
Dočet jsem se na netu o vlaknech jako funkce a zkoušim.
function StavPripojeniThread(Param: Pointer): Longint;
begin
try
If PingTime('173.194.35.152')= -1 then
begin
Form1.Image1.Picture:=nil;
Form1.ImageList.GetBitmap(7, Form1.Image1.Picture.Bitmap);
end
Else
begin
Form1.Image1.Picture:=nil;
Form1.ImageList.GetBitmap(6, Form1.Image1.Picture.Bitmap);
end;
except
end;
//
Result:=0;
end;
A volam funkci v timeru.
thh:=BeginThread(nil,0,@StavPripojeniThread,nil,0,thid);
if (thh<>0) then begin CloseHandle(thh);
end;
Take to funguje ale i když je nez furt funkční, přidělena ikona pro Image1 blika.
Ne že by to jen probliklo při mazazani Image1.Picture:=nil;
Ale při jednom pruchodu je vidět a při dalšim zmizne.
Kde muže byt kopanec.
#3 Sniper
Pomohlo.Děkují.
Měl bych ještě jeden dotaz k vlaknum a abych nespamoval a nezakladal nove tak to zkusim tady.
Mam v 1 unitě 2 vlakna.
ZkontrolujVlakno = class(TThread)
private
Kontrolovanaadresa: string;
cisloradku: integer;
protected
procedure Execute; override;
procedure Zapis;
procedure pingni;
procedure zkontroluj;
end;
ZkontrolujRychleVlakno = class(TThread)
private
Kontrolovanaadresa: string;
cisloradku: integer;
protected
end;
Potřeboval bych s vlakna ZkontrolujRychle přistupovat k proceduram ktere jsou ve vlaknu ZkontrolujVlakno (Zapis,pingni,zkontroluj)
Nebo vysvětlim jinak.
2 vlakna
ZkontrolujVlakno.Execute;
ZkontrolujRychleVlakno.Execute;
Vžy běži jenom jedno.
Chci docilit aby procedury Zapis,pingni,zkontroluj využivali obě vlakna
Zdravim.
Jak to je s rozblikanim te ikony.
http://www.zive.cz/…default.aspx
begin
flashwindow(application.handle,true);
sleep(500);
flashwindow(application.handle,false);
end;
Toto vypada že je pro nižši verze delphi a mělo by to byt třeba v timeru.
V delphi XE2 stači dat flashwindow(application.handle,true) třeba do buttonu a blika to
V dalšim buttonu se da blikani vypnout flashwindow(application.handle,false);
Problem je ře když chci blikani vypnout a trefim se zrovna, když je ikona rozsvicena, tak blikani se vypne ale ikona furt sviti.
Jak zjistim zda sviti nebo ne.
A pomer ma byt jaky typ proměnné.
Ja už snad vyzkoušel vše a bud to nesežere toto "pomer := Image1.Height / Image1.width;"
nebo toto '''Image1.width := 300 / pomer;'
procedure TForm1.ListBox1Click(Sender: TObject);
var cesta,a:string;
pomer:Single;
begin
Image1.AutoSize := true;
a:=ListBox1.Items[ListBox1.ItemIndex];
cesta := '.\'+ a +'\Image.jpg' ;
If FileExists(Cesta)= true then Image1.Picture.LoadFromFile(cesta) else Image1.Picture:=nil;
if (Image1.Height > 300) or (Image1.width > 600) then
begin
pomer := Image1.Height / Image1.width;
Image1.Height := 300;
Image1.width := 300 / pomer;
end;
Zdravím.
Poradte jak na to.
Přes Listbox načitam do Image obrazky
chci docilit tohoto.
pokud je obrazek menši jak Image1.Height 300 a menši jak Image1.width 600 tak se normalně načte a AutoSize := true.
Pokud je však větši tak se velikost upravi tak aby Image1.Height nepřesahlo 300 a šiřka by se opravile poměru ;
Nevim jak docilim toho aby zustal poměrově stejny.
Moh by ste mi lepa vysvětlit to
"který vložíš do nějaké události, která třeba dělá teploměr."
Application.ProcessMessages jsem už zkoušel nacpat do te procedury co je nahoře a nic.
Cpat to do vlakna mi nepřipada moc rozumne.
Stejnak by muselo to hlavní vlakno čekat, zda se to v tom vlaknu stahne.
No mi nevadi že chvili trva to stahovaní.
Mi vadi že když se to stahuje a kliknu na form, začne kurzor myši točit a na liště vyskoči že program neodpovida.
Mi by stačilo aby se zobrazila zprava přes ShowMessage.
Čekej,stahuji aktuakizace a po stažení se sama ukončila.
A nějak ošetřit to "kurzor myši točit a na liště vyskoči že program neodpovida"
Zdravím.
Davam to do FormCreate.
Co je špatně že to nefunguje.
http://www.delphipages.com/…owthread.php?…
ShowWindow (Application.Handle, SW_HIDE);
SetWindowLong (Application.Handle, GWL_EXSTYLE, {GetWindowLong (Application.Handle, GWL_EXSTYLE) nebo} WS_EX_TOOLWINDOW);
Tak jsem vyzkoušel.
Fungovat to funguje ale neni to ono.
Text neni te barvy co nastavim font.color ale trochu je tam odstin te barvy form.
Pokud mam bily text a světle pozadi plochy jde kolem pisma vidět stin v darvě form.
To same pokud mam text černy a tmave pozadi.
Udělal jsem to tak jak jste napsal.
Ale nechal NewWindowRgn
A text dal do komponenty label.
Je to užasne
Dik za nakopnutí.
I když jsem se pomoci nedočkal, přece to nevzdavam.
Mohl by mně alespon někdo nakopnout kde dělam chybu.
Takto zjistim šiřku sloupce X:= StringGrid1.ColWidths[1];
Zrušil jsem vykreslovaní přes CV.FillRect(Rect) a chci vykreslit bunku ručně.
StringGrid1.Canvas.Rectangle(rect.left-5,rect.Top -1,rect.left+StringGrid1.ColWidths[ARow]-3,rect.Top+stringGrid1.DefaultRowHeight);
A tu je to cele
begin
if (ARow > 0) and (ACol > 0) then
Begin
CV := TStringGrid(Sender).Canvas;
sCellString := TStringGrid(Sender).Cells[ACol, ARow];
case ACol of
1,2,4:
if (gdSelected in State) or (gdFocused in State) then
begin
CV.Font.Color := clblack;
CV.Brush.Color := 65535; //žluta
StringGrid1.Canvas.Rectangle(rect.left-5,rect.Top -1,rect.left+StringGrid1.ColWidths[ARow]-3,rect.Top+stringGrid1.DefaultRowHeight);
CV.TextOut(Rect.Left + 2, Rect.Top + 2, sCellString);
end
else
begin
CV.Font.Color := clblack;
CV.Brush.Color := 65441; //Zelena
StringGrid1.Canvas.Rectangle(rect.left-5,rect.Top -1,rect.left+StringGrid1.ColWidths[ARow]-3,rect.Top+stringGrid1.DefaultRowHeight);
CV.TextOut(Rect.Left + 2, Rect.Top + 2, sCellString);
end;
A vysledek je tady http://i49.tinypic.com/357mz51.jpg
Neporadí někdo jak vykreslit buňku v klasickém StringGridu aby tam nebyli ty bile mezery.
http://oi39.tinypic.com/23uotbo.jpg
Toto mi děla ty bile mezery
case ACol of 1:
if (gdSelected in State) or (gdFocused in State) then begin
CV.Font.Color := clblack;
CV.Brush.Color := 65535; //žluta
CV.FillRect(Rect);
CV.TextOut(Rect.Left + 2, Rect.Top + 2, sCellString);
end
else
begin
CV.Font.Color := clblack;
CV.Brush.Color := 12632256; //šeda
CV.FillRect(Rect);
CV.TextOut(Rect.Left + 2, Rect.Top + 2, sCellString);
end;
wget -r -N http://10.154.11.11/data/
Proč to nestahne jen adresař data.
Vytvoři to adresař 10.154.11.11 a vněm je teprve adresař data.
Proč to taha i systemove soubory
Toto jsem našel v helpu
wget-r-jpg http://www.someurl.com/some_dir/
Ma to stahniut jen jpg
toto se mu nelibi
wget -r -N -txt http://10.154.11.11/data/
Zdravím.
Potřebuji to stahnout se servru,tak jsem to dal tedy tady
V adresaři, kde je wget je adresař data.
Na HTTP servru je take adresař data
Da se nastavit wget, tak aby s HTTP servrru, s toho adresaže data stahl do adresaře data co je na HD jen ty soubory, ktere maji jine datum změněno.
Jeden soubor stahnu v poho wget http://10.154.11.11/data/data.ini
Pokus o stažení celeho adresaře DATA zklamal wget -r http://10.154.11.11/data/
Vytvoři mi to na HD adresař 10.154.11.11 a do něj nacpe vše co je na servru.
A jak to dostat do XE2 by někdo neporadil.
Jsou to moje 2 Componenty co budu instalovat.
AlphaControls jsem zvlad ale tady nevim jak na to a zda to vubec podporuje XE2.
Na strance pro stažení je
Support all Delphi 7 to Delphi XE and BCB version 2006 to XE
Nevím ktery dpk soubor otevřit ??? pro XE2
Zdraví začatečnik.
Našel jsem na netu sampl co použiva knihovnu Icmp.dll
Nějak se mi nedaři ji přidat do Delphi.
Když dam instal component - import component - Import a type Libray - add a ukažu mu Icmp.dll co je ve windows - system32 tak to vyhodí error "chyba při načitaní knihovny dll"
Zkoušel jsem tuto knihovnu nakopirovat do adresaře lib v delphi a přidat cestu tam, v domění že si ji v adresaři windows system hlida a stejny vysledek.
Kde dělam chybu ??
Zdravím.
I když jsem lama a s Delphi si hraji jen par měsíců, nainstalovat komponentu AlphaControlsLite jsem zvládl.
Už 3 dny se trápím s komponentou EmbeddedWebBrowser.
http://www.bsalsa.com/
Bud dělám někde kopanec nebo XE2 nepodporuje.
Na stránkách píšou.
Podporuje všechny verze Delphi od D5 do Delphi XE.
A ještě lepši je, že na jejich foru si bez registrace nevrzneš a ta je zakázaná
Sorry, registration has been disabled by the administrator.
Asi měl špatnou náladu.
Nemá někdo zkušenosti s touto komponentou a nainstalovanou na XE2.
Nebo muže mi někdo doporučit nějakou dobrou free komponentu pro WebBrowser.
#12 liborb
Hm.Taka kravina a mně to nenapadlo.
Dalši problem.
Program šlape a jsem spokojen.
Tu tabulku mam udělanou ve Win 7.
Vše je ok,
Když to však spustim ve Win XP, tak text do buněk nevleze i když ve win 7 jsou bunky nastavene tak, že je za textem ještě mezera.
Form1.width je 920, takže necela polovina šiřky obrazovky.
Proč ???????
A co to Turbo Delphi 10.0
To mam a i bych si trouf, kdyby mně někdo nakop.
Tak pokud nemam C++ a neumím s ním, tak jem zase na začatku
#23 remmidemmi
No třeba IE nabidne vice možnosti.
Otevřit,uložit.
A blb co klikne na otevřit a nevi vo co gou, tak si za škody zpusobene v PC muže sam.
Pokud mu to zformatuje HD, tak si pdruhe da pozor na co kloka.
Liborb.
V čem to bylo zkompromovano.
Velka bezpečnostni rizika ???
Chci udělat tabilku s našimi wifi AP a pokud jede AP jen va nějakem radiu tak tam dat odkaz a pokud pojede v Mikrotiku tak spustit winbox.
Psal jsem že to nepojede na žadnem servru.
Bude to jen HTML v mem počitači a i když to někdo čorkne tak stejnak nezna hesla.
Zkoušel jem to v excelu, ale ten při spoušti hyperodlaz na AP blbne při přihlašovani
EE.
Ja to myslel jinak.
Udělat normalní klasickou HTML, ktera by jela ve všech prohližečich.
Do ni strčit odkaz na dalši HTML, ktera by spustila nějake pop okno v IE s dotazem.
"Opravdu chcete soustit program"
Řekl bych, že v klasickém prohlížeči to bez potvrzení nepůjde. Třeba takový FF si na tom vyloženě zaklád
No vubec by mi nevadilo kdyby vyskočilo nějake to okno.
Prohližeč se pokouši spustit program ******
Chcete ho opravdu spustit.
Ale i takove řešeni jsem nikde nenašel.
Kdysi jsem kupoval nějaky časopis tykajici se PC, kde bylo i CD s demo programy, hry, atd.
Po vložení se spustila HTML stranka, dalo se listovat a přimo na stance bylo " spustit nebo nainstalovat".
Nějak to musi jit.
Umim trochu anglicky ale technicke věci a ještě ohledně programovani, ktere skoro neumím asi nezvladnu a neochopím.
Tak to funguj.
Problem byl na me straně.
Ale v IE musim 2 x potvrdit že ho chci spustit a Firefox nabidne jen uložit.
Pak musim do spravce stahovaní a tam ho spustit.
To není vubec dobre
#2 null_while
Nějak to nefunguje
<a rel="nofollow" href="file:///d:/Putty.exe ">Putty</a>
Vyskoči okno Stažení souboru.
Hned na to dotaz Stažení souboru - upozornění zabezpečení
Spustit - uložit - storno
Když dam spustit tak vyskoči explorer
http://shell.windows.com/…Fallback.asp?…
Zdravím.
Jsem uplny začatečnik, pomužete.
Da se spustit exe soubor přes HTML stranku.
HTML mebude na žadnem servru.
Bude v mem PC
Exe soubor bude ve stejnem adresaři jako HTML.
Zdravím.
Na změnu velikosti okna používám.
mode con cols=x
mode con lines=y
Při spuštění bataku se však první zobrazí default velikost a pak se teprve upraví na zadanou.
Je nějaký jiný způsob jak na to aby to probliknuti nebylo vidět.
Jak vycentrovat okno cmd aby bylo vprostřed obrazovky ??????
bohetik napsal:
To Vasil : Jen nějaké odakzy.
Něco v .pdf
http://members.cox.net/alexpoet/downloads/
Forum
http://forum.xbmc.org/forumdisplay.php?f=32
Jinak jsem našel že si dost aktivní.
http://forum.builder.cz/read.php?22,3324563,3324563
Zkus hledat něco jistě najdeš. :smile1:
Hm.
Ahgličtina neni mou silnou strankou.
Hlady bych neumřel.
Vysvětlit šikovne blondynce že bych ji rad přefik bych take zvlad
Ale technicke věci bude problem.
Přesto dik moc.
Zkusim.
Jus kluci.
Použivam program XBMC media center ve kterem se dělaji pluginy v Python
Nezkoušel tu někdo udělat nějaky plugin nebo nevi někdo jak na to.
A nějaka rada jak docilit aby to šlo rychleji ????.
Už dlouho řešim problem s přepinaním IP a vyzkoušel jsem snad všechny free i placene programy.
Zatim nejrychlejši je NetProfilesSetup 2.1.8 ale bohužel nejde nastavit vice IP ale ta rychlost je užasna.
Autor na stankach piše že program dělal přes SharpDevelop (C #, VB.NET).
http://code.google.com/p/netprofiles/
Zatim použivam Switchboard.
Dovede přidat i vice IP ale nedokaže to pokud je lanka neaktivni.
A ta rychlost take nic moc.
Přs klavesnici ho i občas předběhnu.
Zdravím.
Poradite jak překopirovat soubor do adresaře po spuštěni.
Ja to vyřešil takto.
copy Test.exe "%UserProfile%\Nabídka Start\Programy\Po spuštění\Test.exe"
Problem je že všichni nemaj česke winy
Jus.
Da se nějak zbavit hlašek v bataku, když měnim nastavení registru přes reg add
I když je použit přikaz @Echo Off tak to stejně hlasi
Operace byla dokončena úspěšně.
Jak se toho zbavit ????
Zdravím.
Tady jsou 2 přiklady jak nastavit IP.
Jak docilim toho aby skript sam zjistil co je v PC za system a pak do něj nastavil IP
Windows XP
netsh interface ip set address name=“Připojení k místní síti“ static 10.0.5.3 255.255.255.248 10.0.5.1 1
netsh interface ip set dns name=“Připojení k místní síti“ static 10.0.5.1 primary
netsh interface ip add dns name=“Připojení k místní síti“ 10.0.0.100 2
ipconfig /flushdns
Vista
netsh interface ipv4 set address name=“Připojení k místní síti“ static 10.0.5.3 255.255.255.248 10.0.5.1 1
netsh interface ipv4 set dnsserver name=“Připojení k místní síti“ static 10.0.5.1 primary
netsh interface ipv4 add dnsserver name=“Připojení k místní síti“ 10.0.0.100 index=2
ipconfig /flushdns
Zdravím a prosim o radu.
Mam nainstalovany program FileZilla server
Tento program se spoušti přes zastupce.
Když kliknu na zstupce a dam vlastnosti tak je tam cil
"D:\Program Files\FileZilla Server\FileZilla server.exe" /start
"D:\Program Files\FileZilla Server\FileZilla server.exe" /stop
Jak to spustim přes CMD
Zkoušel jsem toto a nefunguje
start D:\Program Files\FileZilla Server\FileZilla server.exe /start
start "D:\Program Files\FileZilla Server\FileZilla server.exe" /start
Zdravím.
Da se nějak nastavit proxy server ve firefox přes CMD.
Pokud to zadam ručně tak se to uklada do souboru prefs.js
Cela cesta je c:\Program Files\Mozilla Firefox\defaults\profile\prefs.js
Problem je že prohližeč muže mit každy nainstalovan někde jinde.
Nejvic se mi libilo to od Zdendy ale když jsem to zkoušel převest do exe pomoci Bat To Exe Converter nebo Advanced BAT to EXE Converter tak to nejde.
To od Liborab
subst R: .
R:\PROGRAMY\PsPad\PsPad.exe R:\seznamy\mujseznam
Take neni moc dobre.Vytvaři virtual disk R.
Když použiji ten prvni napad od liborab nebo to co jsem tu dal ja tak dejde CMD ukončit pomoci přikazu exit.
Proč.
.\PROGRAMY\PsPad\PsPad.exe .\seznamy\mujseznam
Nebo
%cd%\PROGRAMY\PsPad\PSPad.exe
Ještě dotaz.
V adresaři seznamy mam adresař total commander a vněm program total commander.
Když ho chci spustit %~d0\programy\Total commander\TOTALCMD.EXE tak to nejde.
Když adresař Total commander přejmenuji a vynecham tu mezeru Totalcommander je vše OK
%~d0\programy\Totalcommander\TOTALCMD.EXE
Zkoušel jsem dat misto mezery znak % a nic
Tady to ma normalně
http://programujte.com/?akce=clanek&cl=2006032802-prikazova-radka-%96-3-lekce
Správné jméno souboru
c:\Program Files\Microsoft Office\OFFICE11\WINWORD.EXE
Kde je zakopan pes ?????
Kde dělam chybu ????
liborb napsal:
Kdysi jsme řešívali problémy s aplikacemi, které vyžadovali běžet z určitého místa příkazem subst. V tvém případě možná bude stačit používat relativní cesty.
Nějak to nefunguje nebo jsem to špatně pochopil.
Prosil bych ten přikaz upřesnit.
script ma jmeno PsPad.bat
On třeba PsPad jde spustit na disku, kde se furt měni pismeno disku takto
%cd%\PROGRAMY\PsPad\PSPad.exe
Ale jak mu vysvětlit že ma po spuštěni otevřit soubor mujseznam
Zdravím chytre hlavy a prosim o radu.
Mam na FlashDisku adresař seznamy a v něm soubor mujseznam.
Na tom samem FlashDisku je adresař PROGRAMY, ve kteram je podadresař PsPad a vněm soubor PSPad.exe
Jelikož je použivan FlashDisk na mnoha PC a tim padem je pismeno disku vždy jine, musim vždy znovu zadavat v PSPadu cestu k souboru.
Chtěl bych udělat v kořenovem adresaři spouštěč ktery by vše vyřešil.
Poradite,pomužete.
liborb napsal:
Je to projekt pro Visual Studio, takže bude asi nejlepší to vzít přes něj :) http://www.microsoft.com/express/.
Tak jsem koukal na forum programu.
Zas tak jednoduche to není
http://forum.filezilla-project.org/viewtopic.php?f=3&t=1227
Řek bych že lama jako ja se nechyta :smile10:
Visual basic a delphi trochu zvladam tak jsem si myslel že to zas nebude tak složite.
Když už máš server, tak si "nasdílíš" co a jak chceš. Tohle je to poslední, co by bylo složité.
A co tak take trochu pomoc, když je to tak jednoduche.
Rad bych aby to ftp zjistilo kolik je v PC disku a zasdilelo je.
Prostě portable FTP spustitelne na flashDisku.
http://synapse.ararat.cz/files/contrib/ftpserv.zip
.
Zdravim všechny tady a prosím o pomoc.
Jsem začatečnik a rad bych nějaky FTP server.
Nejrychlejši zpusob pro mně je použit již vytvořene knihovny od Synapse.
Jelikož jsem ten začatečnik tak nezvladnu aby ten FTP server dovedl sdilet vice disku najednou a určitě to bude dost složite.
Proto mně napadlo zda by šlo k tomu FTP servru přiřazovat disky pomoci přikazu za exe.
Třeba takto Ftp server.exe /C
Pomužete, poradite
http://synapse.ararat.cz
Zdravim, řeším problém kdy mám seznam v seznamu.. př.
<ul class = 'clickable-list'>
<li>a</li>
<li>
<ul>
<li>b</li>
<li>b</li>
<li>b</li>
<li>b</li>
</ul>
</li>
<li>a</li>
<li>a</li>
<li>a</li>
<li>a</li>
</ul>
a v jquery potom potřebuju když kliknu přímo na b tak pokud napíšu $(this).val() tak abych získal přímo hodnotu b... díky
Funguje, ale nějak nemohu upravit tu cestu k souboru.
Jde mi o toto.
Na flashdisku v kořenovem adresaři bude tento program jako spouštěč.
Chci aby mi spustil program třeba xxx.exe v adresaři "program" na tom samem flashdisku.
Zkoušel jsem to pomoci ExtractFilePath(application.ExeName) ale nějak to nefunguje.
Zdravím a prosím o radu.
Tady je VBS spript
http://gallery.technet.microsoft.com/ScriptCenter/en-us/8bbed56f-a7aa-491f-a296-687dd96098a3
Takto to jde ve JScript
var WindowStyle_Hidden = 0
var objShell = WScript.CreateObject("WScript.Shell")
var result = objShell.Run("notepad.exe", WindowStyle_Hidden)
Tady se zase baví o řešení v c++ a vbs
http://forum.codecall.net/c-c/5361-need-help-writing-program-hide-cmd-windows.html
Jak na to v Delphi
Zdravím a prosím o pomoc.
Tady je VSB script, který spusti notepad v hide režimu.
http://gallery.technet.microsoft.com/ScriptCenter/en-us/8bbed56f-a7aa-491f-a296-687dd96098a3
Jak spustit timto zpusobem program třeba test.exe , ktery je uloženy na flash disku ve stejnem adresaři jako script.
Ve VBS script nemam žadne zkušenosti ale přikazy ve VB App.Path , App.dir nějak nefunguji
@Deko
nejak mi nesedi tve pocty chipu a procesoru. Pokud se dobre divam do DS od TDA, tak ma jen jedinou adresu, takze pokud si das 2 chipy se stejnou adresou na jednu sbernici, bude dochazet ke kolizim. (beru to z tveho popisu ze chces pouzit 3ks, cili 2 na M16 a jeten na dalsim) A ver mi ze dochazi, mam to vyzkouseno. Takze pokud ti muzu doporucit napis si vlastni rutinu pro I2C ovladani a dej kazdy svab na jine piny. Mam dojem ze by se dal pouzit jeden datovy pro vsechny a 3 hodinove pro kazdy chip. Neni to nic sloziteho. Po prostudovani DS k TDA zjistis jak ma byt casovani, jaky je protokol, kdy chodi ack (nemusis ho kontrolovat, ale musis udelat hodinovy pulz).
TDA neni nachylne na frekvenci hodinovych pulzu, takze se nemusis bat pokud netrefis presnych 100kHz. Ja jsem fungoval az nekde do 123kHz. Navic TDA je "jednosmerne" cili do nej jenom zapisujes data. Takze si nemusis delat hlavu se ctenim v rutinach, pouze odeslani.
Rutinu muzes psat klidne blbe stylem nahod, pockej, shod, pockej. Jestli najdu nekde svou rutinu pro I2C master tak ti ji poslu, ale bude v C
Ja zatim nepotreboval extra presne smycky.
Kdyz jsem delal znamemu cyklovac steracu (programovatelny) tak jsem udelal jednoduchy cyklus f0r (cas=0;cas<nastavenadoba;cas++); a bylo
Kdyz jsem si chvili hral s DS18B20, tak jsem pouzil fintu s UARTem na 115200, plus jeden dalsi pin, ktery povoloval komunikaci s dallasem, abych do nej nepoustel normalni seriovou komunikaci. Pak jsem komunikaci s dallasem resil tak samo, ale se sw emulaci uartu na jinem pinu
Tak jsem to rozlousknul.
Chybu zpusobila vadna elektronka E13 z naseho podniko Katoda Olomoc. Tato elektronka se vklada mezi zidli a klavesnici.
Blbec jsem pri vyberu hodnoty posilane na port pro aktivaci civek, posilal jenom 7 hodnot misto 8. Coz v mechanice znamena 6 pulkroku a 1 celokrok (=2 pulkroky), ovsem pocitano jako 7 kroku v programu, takze na jednu stranu to chodilo v poradku, na druhou to prave pridavalo.
Ale ze mi to trvalo najit, cele 2 mesice.
Nakonec jsem z puvodniho programu pomazal vse krome funkci generujici hodnotu spinani civek a tam jsem to nasel.
Ponauceni: Vykaslat se uz na ten pascal :D
Docela blba otazka. Co takhle nastinit co to ma provadet? Od toho se bude odvijet jejich vykon, rychlost, atd a hlavne jejich cena.
Krokove motory se daji sehnat ruzne, at uz ze starych 5,25" mechanik, cd/dvd, nebo treba v GM, Microcon i na aukru lze sehnat.
To KIIV : krokace se ridi aji pwm ;), toho vyuzivaji profi drivery
ridi to pwm a jeste regulujou napeti zdroje, ale to jen tak na okraj
zjistit to asi pujde tezko
mam suplerou zmerene ze je to o cca 1,4mm +- sirka tuhy a faktor tresouci se ruky
coz by odpovidalo jedne otacce, pri stoupani 1,5mm
zkusim to jeste nejak natvrdo omezit
to nehrozi
dela to pri kterekoliv rychlosti
navic krokace neridim pwm, takze pokud do nich nahustim moc rychle zmeny, tak se kousnou a jenom bzuci, pri extra rychle zmene se dokonce toci naopak, ted mam tak stredni rychlost - cca 2ot/s
kroky neztraci, spis delaji navic
jtag pozuit nemuzu, blbec jsem si na jtag piny osadil koncove spinace
hodnoty jsem si ukladal do eeprom, takze jsem zjistil, ze vypocty provadi spravne
To KIIV :
Jo to uz jsem delal taky, ale nechapu proc to ulozi do int, kdyz to ma byt long
ovsem jsem v koncich
vsechny promenne jsem dal na stejny typ, nejdriv long, potom uint32_t, mensi nemuzu, 16bitovy je malo. Budu delat az 160k kroku motoru.
A porad to dela jednu a tu samou vec pritom jsem si 100% jist ze vzorec pro vypocty je spravny
Zajimave je ze pri simulaci v avrstudiu to jede normalne
To KIIV :
tak jsem to predelal na long a v podstate zadny uspech, jsem tam kde jsem byl. Ale aspon jsem zjistil, ze kombinace int a long nefunguje.
Mel jsem long=long * int, a vysledek byl v int, nevim jestli to je chyba kompilatoru.
Budu muset jeste zapatrat. Ale je to divne.
Tak jsem to zkusil jinak. Protoze pouzivam float, prekopal jsem vsecko na float. Rozjelo se to komplet. Zitra zkusim pouzit fintu co jsem provozoval na J2ME, kde nejsou floaty. Vynasobit desetinne cisla 1000, vlastne vsecko, a pak by to melo sedet i s longama
Zdar lidi,
prosim pomozte. Postavil jsem si takovy maly cnc ploter na plosnaky. HW stranka je relativne vyresena.
Jen pro info. Je tam 6 koncaku a 3 krokove motory se 4 fazemi. Ale mam problem se SW.
Udelal jsem si HPGL radic, abych mohl kreslit primo z eagle. Jenze mam takovy problem. Polohu pera mam v promenne typu long, ktera znamena pocet kroku od nuly. Tudiz si souradnice z eaglu (mils) prepocitavam na pocet kroku. Beru v uvahu pocet kroku na otacku a stoupani zavitu. Problem je v tom, ze v AVR studiu pri krokovani programu je vse v poradku, v realite je to vsak jinak. Pri pohybu na jednu stranu to napocita vic kroku, pri pohybu na opacnou stranu to napocita min. Muze to byt tim ze pouzivam vice typu promennych pro jednu operaci?
Napriklad long=long*char*float?
Zkousel jsem to i s pretypovanim ale nic nepomohlo.
Prikladam kousek kodu
#define mils 39.3700787 //1mm=39.3701mils
#define stoupx 1.5 //stoupani zavitovky
#define stoupy 1.5
#define stoupaniX stoupx*mils; //stoupani zavitu 1,5, posun v mils pri jedne otocce 1mm=39.3701mils 1.325
#define stoupaniY stoupy*mils;
#define kroky_otX 400 //pocet kroku na otacku pro X motor
#define kroky_otY 400
void peroxy(unsigned int pcilx, unsigned int pcily,unsigned char milsy)
{
//nastaveni pera na pozadovanou polohu primocarym pohybem
//souradnice sx,sy jsou v mils pokud mils=1, jinak jsou souradnice v krocich
//1mm = 39,3701 mils
//tan vraci hodnotu v radianech, prepocet na stupne je radian*180/M_PI
startx=perox; //vychozi pozice pera pred posunem
starty=peroy;
if(milsy==1){cilx=kroky_otX / stoupaniX * pcilx;} //pozadovana pozice pera pred posunem
else{cilx=pcilx;}
if(milsy==1){cily=kroky_otY / stoupaniY * pcily;}
else{cily=pcily;}
delkax=abs(startx-cilx);
delkay=abs(starty-cily);
konectoceni=0; //promenna urcujici dosazeni konecne hodnoty
//vypocet uhlu ve kterem se budu pohybovat a podle toho budu pocitat souradnice po kazdem kroku osy X
if(delkax>0)
{
px=delkax;
py=delkay;
uhel=atan(py/px)*180/M_PI;
}
else
{
uhel=90;
}
//samotny pohyb pera
while(konectoceni==0)
{
if(uhel==90)
{//pohyb ve svislem smeru, po ose Y
while(peroy>cily)
{
motory=krokdolu();
peroy--;
cekej();
PORTA=motorx+motory;
}
while(peroy<cily)
{
motory=kroknahoru();
peroy++;
cekej();
PORTA=motorx+motory;
}
}//if uhel==90
else
{//pohyb pod uhlem
if(perox>cilx)
{
motorx=krokvlevo();
perox--;
}//if perox>cilx
if(perox<cilx)
{
motorx=krokvpravo();
perox++;
}//if(perox<cilx)
krx=abs(startx-perox);
kry=abs(krx*tan(uhel*M_PI/180)); //kolik kroku musim udelat pri aktualni pozici X
if((perox!=cilx)&&(peroy<cily))
{
while((starty+kry)>peroy)
{
motory=kroknahoru();
peroy++;
if(abs(starty+kry-peroy)>1)
{
PORTA=motorx+motory;
cekej();
}
}
}//if peroy<cily
if((perox!=cilx)&&(peroy>cily))
{
while((starty-kry)<peroy)
{
motory=krokdolu();
peroy--;
if(abs(starty+kry-peroy)>1)
{
PORTA=motorx+motory;
cekej();
}
}
}//if peroy>cily
PORTA=motorx+motory; //aktivace civek motoru
cekej();
}//uhel<90
if((perox==cilx)&&(peroy==cily)){konectoceni=1;}
}//while konectoceni
}//void peroxy
Pak mam dalsi problem, sem tam kdyz udelam nejake upravy v programu, tak musim nektere promenne zadefinovat jako volatile, jinak je zniceho nic zacne ignorovat. Treba v cekaci smycce kde menim hodnotu jedne prodlevove promenne (mam v planu pouzivat v budoucnu vice rychlosti pohybu a rampy).
Prosim poradte proc to treba misto 12 000 kroku spocita jenom 11 000 nebo naopak 14 000
tady : http://www.alza.cz/graficka-karta-msi-nx7600gt-td512z-512mb-ddr2-800mhz-nvidia-geforce-7600gt-560mhz-agp-8x-128bit-dvi-pasivni-chlazeni-d74986.htm