ÄúÏÖÔÚµÄλÖÃÊÇ£º Èí¼þ > ¿ª·¢ÕßÍøÂç > ÕýÎÄ
¡¤ËٳɵçÄÔ¾«Ó¢£¨°ü·ÖÅ䣩°×Áì¸ßнһ×å´ÓÕâÀ↑ʼ



-JavaÌ×½Ó×Ö±à³Ì£¨Ï£©
-MediaStudio Pro 6.5½Ì³Ì
-Èý¿îÐ¶ÔØÈí¼þ×îÐÂÊÔÓÃ
-»ùÓÚVisual C++µÄWinsock APIÑо¿

²ÉÓöàÏ߳̽øÐÐÊý¾Ý²É¼¯
2000-07-04¡¤ ¡¤-¡¤¡¤yesky

p>---- Êý¾Ý²É¼¯¼¼ÊõÔÚ¹¤Òµ¿ØÖƼ°×Ô¶¯»¯µÈÁìÓòÖз¢»Ó×ÅÖØÒªµÄ×÷Óá£Êý¾Ý²É¼¯µÄÒ»°ã¹ý³ÌÊÇÕâÑùµÄ£º¢ÙÏò²É¼¯¿¨·¢³öͨµÀÑ¡ÔñÖ¸Áî¡£¢ÚÑ¡ÔñÒª²É¼¯µÄͨµÀºÅ¡£¢ÛÆô¶¯A/Dת»»¡£¢ÜµÈ´ý£¬Ö±µ½×ª»»Íê³É¡£¢Ý´Ó²É¼¯¿¨¶Á³öÊý¾Ý¡£¶ÔÓÚ¶àͨµÀµÄ²É¼¯£¬ÔÚ³ÌÐòµÄÉè¼ÆÖУ¬Ò»°ã²ÉÓõÄÁ½ÖÖ·½·¨¡£²éѯ·¨»òÖжϷ¨¡£Ëùν²éѯ·½·¨¾ÍÊDzÉÓÃÒ»¸öÑ­»·£¬ÒÀ´Î²É¼¯¸÷¸öÊý¾ÝͨµÀ¡£²éѯ·¨µÄÓŵãÊdzÌÐò¼òµ¥£¬Ò×ÓÚʵÏÖ£»È±µãÊDzɼ¯¹ý³ÌÖУ¬CPU¶àÊýʱ¼äÊÇÔڵȴý£¬Ôì³É×ÊÔ´µÄÀË·Ñ¡£ÖжϷ¨ÊDzÉÓÃÓ²¼þÖжϵÄÐÎʽ¡ª¡ªÏÈÆô¶¯A/Dת»»£¬ÔÚת»»½áÊøÊ±·¢³öÒ»ÖжÏÐźšª¡ªCPUÏìÓ¦²É¼¯¿¨µÄÖжÏʱ¶Á³öËù²É¼¯µÄÊý¾Ý¡£ÕâÑù£¬Ôڵȴýת»»µÄʱ¼äÀCPU¿ÉÒÔ½øÐÐÆäËûµÄ¼ÆË㹤×÷£¬¶ø²»Óô¦Óڵȴý״̬¡£ÖжϷ¨µÄÓŵãÊÇ×ÊÔ´Äܳä·ÖÀûÓ㻵«ÊdzÌÐòÉè¼Æ¸´ÔÓ£¬ÓÈÆäÊǵ±ÏµÍ³µÄÓ²¼þÖжÏ×ÊÔ´½ôÕÅʱ£¬ºÜÈÝÒ×Ôì³ÉÖжϳåÍ»£»ÁíÍ⣬ÔÚWindows»òWin95µÈ²Ù×÷ϵͳÖУ¬²»ÔÊÐíÓû§°²×°Öжϴ¦Àí³ÌÐòʱ£¬ÔòÎÞ·¨ÊµÏÖ¡£

---- ÒÔÉÏÌÖÂÛµÄÁ½ÖÖ·½·¨¶¼ÊÇÔÚDOSÏµķ½·¨£»ÔÚWin95Ï£¬ÏÖÔÚÓÐÁËÒ»¸ö¸üºÃµÄ·½·¨¡ª¡ª¶àÏ̼߳¼Êõ¡£ÏÖÔÚ£¬ÎÒÃÇ¿ÉÒÔÀûÓöàÏ̼߳¼ÊõÀ´½øÐÐÊý¾Ý²É¼¯¡£

---- 1. ²ÉÓöàÏ߳̽øÐÐÊý¾Ý²É¼¯µÄÓŵã

---- Win95/98×îÈÃÈËϲ°®µÄ³ýÁËÆ¯ÁÁµÄ½çÃæÒÔÍ⣬¾ÍÊǶàÏß³ÌÓë¶àÈÎÎñÁË¡£DOS»·¾³ÖУ¬Ö´ÐÐÖеijÌÐò¿ÉÒÔ¶Àռȫ²¿µÄ×ÊÔ´£»ÔÚWindows»·¾³ÖУ¬ËäÈ»ËüÊÇÒ»¸öÂԾ߳ûÐεĶàÈÎÎñ»·¾³£¬µ«ÊÇÖ»ÒªÄãϲ»¶£¬ÄãµÄ³ÌÐòÈÔÈ»¿ÉÒÔÕÆÎÕËùÓеÄCPUʱ¼ä¡£µ«ÊÇ£¬ÔÚWindows 95ÒÔ¼°Windows NTÖУ¬Ò»¸ö³ÌÐòÎÞ·¨¶ÀÕ¼ËùÓеÄCPUÖ´ÐÐʱ¼ä¡£¶øÇÒ£¬Ò»¸ö³ÌÐòÒ²²»ÊÇ´ÓÍ·µ½Î²Ò»ÌõÏß¡£Ïà·´£¬Ò»¸ö³ÌÐòÔÚÖ´ÐÐÖпÉÒÔ·ÖΪ¶à¸ö³ÌÐòƬ¶Î£¬Í¬Ê±Ö´ÐС£ÕâЩÄÜͬʱִÐеijÌÐòƬ¶Î³ÆÎªÏ̡߳£ÔÚWindows 95ÒÔ¼°Windows NTÖУ¬²Ù×÷ϵͳͬһʱ¼ä¿ÉÒÔÂÖÁ÷Ö´Ðжà¸ö³ÌÐò£¬Õâ¾ÍÊǶàÈÎÎñ¡£

---- ²ÉÓöàÏ߳̽øÐÐÊý¾Ý²É¼¯¿ÉÒÔÓÐЧµØ¼Ó¿ì³ÌÐòµÄ·´Ó¦ËÙ¶È¡¢Ôö¼ÓÖ´ÐеÄЧÂÊ¡£Ò»°ãµÄ³ÌÐòÖж¼Òª´¦ÀíÓû§µÄÊäÈ룬µ«Óû§µÄÊäÈëËÙ¶ÈÓëCPUµÄÖ´ÐÐËÙ¶ÈÏà±È¾ÍÏò×ß·Óë×ö·É»úÒ»Ñù¡£ÕâÑù£¬CPU¾Í½«ÀË·Ñ´óÁ¿µÄʱ¼äÓÃÀ´µÈ´ýÓû§µÄÊäÈ루ÈçÔÚDOS»·¾³ÖУ©¡£Èç¹û²ÉÓöàỊ̈߳¬ÄÇô¾Í¿ÉÒÔÓÃÒ»¸öÏ̵߳ȴýÓû§µÄÊäÈ룻ÁíÒ»¸öÏ߳̽øÐÐÊý¾Ý´¦Àí»òÆäËûµÄ¹¤×÷¡£¶ÔÓÚÊý¾Ý²É¼¯³ÌÐò£¬¿ÉÒÔÓÃÒ»¸öµ¥¶ÀµÄÏ߳̽øÐÐÊý¾Ý²É¼¯¡£ÕâÑù£¬ÄÜ×î´óÏ޶ȵı£Ö¤ ¯µÄʵʱÐÔ£¬¶øÁíÍâµÄÏß³ÌͬʱÓÖÄܼ°Ê±µØÏìÓ¦Óû§µÄ²Ù×÷»ò½øÐÐÊý¾Ý´¦Àí¡£·ñÔò£¬³ÌÐòÔڲɼ¯Êý¾Ýʱ¾Í²»ÄÜÏìÓ¦Óû§µÄ²Ù×÷£»ÔÚÏìÓ¦Óû§²Ù×÷ʱ¾Í²»ÄܽøÐÐÊý¾Ý²É¼¯¡£ÓÈÆäµ±²É¼¯µÄÊý¾ÝÁ¿ºÜ´ó£¬Êý¾Ý´¦ÀíÈÎÎñºÜÖØÊ±£¬Èç¹û²»²ÉÓöàỊ̈߳¬²É¼¯Ê±µÄÂþ³¤µÄµÈ´ýÊǺÜÈÃÈ˽ÓÊܵġ£

---- µ«ÊÇ£¬¶àÏß³ÌÒª±ÈÆÕͨ³ÌÐòÉè¼Æ¸´ÔӵöࡣÓÉÓÚÈÎһʱ¿Ì¶¼¿ÉÄÜÓжà¸öÏß³ÌͬʱִÐУ¬ËùÒÔ£¬Ðí¶àµÄ±äÁ¿¡¢Êý¾Ý¶¼¿ÉÄܻᱻÆäËûÏß³ÌËùÐ޸ġ£Õâ¾ÍÊǶàÏ̳߳ÌÐòÖÐ×î¹Ø¼üµÄÏ̼߳äµÄͬ²½¿ØÖÆÎÊÌâ¡£

---- 2. ¶àÏ߳̽øÐÐÊý¾Ý²É¼¯Ó¦½â¾öµÄÎÊÌâ

---- Æäʵ£¬¶àÏ̳߳ÌÐòÉè¼Æ¸´ÔÓÊÇÔÝʱµÄ£»Èç¹û£¬Äã²ÉÓô«Í³µÄC½øÐжàÏ̵߳ÄÉè¼Æ£¬ÄÇôÄã±ØÐë×Ô¼º¿ØÖÆÏ̼߳äµÄͬ²½¡£Äǽ«ÊǺܸ´Ôӵġ£µ«ÊÇ£¬Èç¹ûÀûÓÃÃæÏò¶ÔÏóµÄÉè¼Æ·½·¨£¬²ÉÓÃDelphi½øÐжàÏ̳߳ÌÐòÉè¼Æ£¬ÎÊÌâ¾Í¼òµ¥¶àÁË¡£ÕâÊÇÒòΪ£¬DelphiÒѽ«¶àÏ̵߳ĸ´ÔÓÐÔÌæÎÒÃÇ´¦ÀíÁË£¬ÎÒÃÇËùÒª×öµÄ¾ÍÊǼ̳С£

---- ¾ßÌåµØËµ£¬¶àÏß³ÌÊý¾Ý²É¼¯ÐèÒªÍê³ÉÒÔϹ¤×÷£º

---- ¢Ù ´ÓTThreadÀàÅÉÉúÒ»¸ö×Ô¼ºµÄÀàSampleThread¡£Õâ¾ÍÊÇÎÒÃÇÓÃÓÚÊý¾Ý²É¼¯µÄÀà¡£½øÐвɼ¯Ê±£¬Ö»ÐèÒª¼òµ¥µØ´´½¨Ò»¸öSampleThreadµÄʵÀý¡£

---- ¢Ú ÖØÔØ³¬ÀàTThreadµÄExecute·½·¨¡£ÔÚÕâÒ»·½·¨Öн«¾ßÌ嵨ִÐÐÊý¾Ý²É¼¯ÈÎÎñ¡£

---- ¢Û Èç¹ûÏ£ÍûÒ»±ß²É¼¯Ò»±ßÏÔʾ£¬¾ÍÔÚ±àд¼¸¸öÓÃÓÚÏÔʾ²É¼¯½ø¶ÈµÄ¹ý³Ì£¬¹©Execute·½·¨µ÷Óá£

---- TThreadÀàÖÐ×î³£ÓõÄÊôÐÔ/·½·¨ÈçÏ£º

Create·½·¨£ºconstructor Create
(CreateSuspended: Boolean);

---- ÆäÖÐCreateSuspended²ÎÊýÈ·¶¨Ïß³ÌÔÚ´´½¨Ê±ÊÇ·ñÁ¢¼´Ö´ÐС£Èç¹ûΪTrue£¬ÐÂÏß³ÌÔÚ´´½¨ºó±»¹ÒÆð£»Èç¹ûΪFalse£¬Ïß³ÌÔÚ´´½¨ºóÁ¢¼´Ö´ÐС£

FreeOnTerminateÊôÐÔ£º
property FreeOnTerminate: Boolean;

---- ¸ÃÊôÐÔÈ·¶¨³ÌÐòÔ±ÊÇ·ñ¸ºÔð³·Ïû¸ÃÏ̡߳£Èç¹û¸ÃÊôÐÔΪTrue£¬VCL½«ÔÚ¸ÃÏß³ÌÖÕֹʱ×Ô¶¯³·ÏûÏ̶߳ÔÏó¡£ËüµÄȱʡֵΪFalse¡£

OnTerminateÊôÐÔ£º
property OnTerminate: TNotifyEvent;

---- ¸ÃÊôÐÔÖ¸¶¨Ò»¸öµ±Ïß³ÌÖÕֹʱ·¢ÉúµÄʼþ¡£

---- ÏÂÃæ¿´Ò»¸ö¾ßÌåµÄÀý×Ó£º

---- 3. ¶àÏß³ÌÊý¾Ý²É¼¯µÄʵÏÖ

---- ÕâÊDZÊÕß¿ª·¢µÄÒ»¸ö²â³éÓÍ»ú¹¦Í¼µÄ³ÌÐò¡£ËüµÄ¹¦ÄÜÊDzɼ¯³éÓÍ»úÐüµãµÄÔØºÉ¼°Î»ÒÆÊý¾Ý£¬¾­¹ý´¦Àíºó×ö³ö³éÓÍ»úµÄ¹¦Í¼¡£Í¼1(ÂÔ)ËùʾÊÇÊý¾Ý²É¼¯Ê±µÄ½çÃæ¡£µã¡°²É¼¯Êý¾Ý¡±°´Å¥ºó£¬³ÌÐò½«´´½¨Ò»ÐµÄỊ̈߳¬²¢ÉèÖÃÆäÊôÐÔ¡£ÕâÒ»ÐÂÏ߳̽«Íê³ÉÊý¾Ý²É¼¯ÈÎÎñ¡£³ÌÐòÈçÏ£º

Procedure TsampleForm.
DoSampleBtnClick(Sender: TObject);
Begin
 ReDrawBtn.Enabled := True;
 DoSampleBtn.Enabled := False;
 FFTBtn.Enabled := True;
 TheSampler := SampleThread.Create(False);
 ´´½¨²É¼¯Ïß³Ì
 TheSampler.OnTerminate := FFTBtnClick; 
 ²É¼¯Íê³ÉºóÒªÖ´ÐеÄÈÎÎñ
 TheSampler.FreeOnTerminate := True; 
 ²É¼¯Íê³Éºó³·Ïû
End;

---- ²É¼¯Ï̵߳ÄÀඨÒåÈçÏ£º

Type
 SampleThread = class(TThread)
 Public
function AdRead(ach: byte): integer; safecall;
¶ÁA/D¿¨µÄº¯Êý
procedure UpdateCaption;
ÏÔʾ²É¼¯ËùÓÃʱ¼ä
 private
 { Private declarations }
 protected
 thes, thep: real;
 dt: real;
 id: integer;
 st, ed: LongInt;
procedure Execute; override;
ÕâÊǹؼü¡£
 End;

---- ÔÚÕâ¸öÀàÖж¨ÒåÁËÒ»¸öº¯ÊýAdReadÓÃÓÚ²Ù×÷A/D¿¨£¬Á½¸ö¹ý³ÌÓÃÓÚÏÔʾ²É¼¯µÄ½ø¶ÈÓëËùÓÃʱ¼ä¡£ÐèҪעÒâµÄÊÇAdReadº¯ÊýÊÇÓûã±àдµÄ£¬²ÎÊýµ÷Óøñʽ±ØÐëÊÇsafecall¡£

---- ¹Ø¼üµÄÖØÔØ·½·¨ExecuteµÄ´úÂëÈçÏ£º

Procedure SampleThread.Execute;
Begin
 StartTicker := GetTickCount; 
 id := 0;
 Repeat
thes := Adread(15) * ad2mv * mv2l;
²É¼¯µÚ15ͨµÀ
thep := Adread(3) * ad2mv * mv2n; 
²É¼¯µÚ3ͨµÀ
 dt := GetTickCount - StartTicker;
 sarray[id] := thes;
 parray[id] := thep;
 tarray[id] := dt;
 inc(id);
Synchronize(UpdateCaption); 
×¢Ò⣺ÏÔʾ²É¼¯½ø¶È
 Until id >=4096;
 ed := GetTickCount;
 Synchronize(ShowCostTime); 
 ×¢Ò⣺ÏÔʾËùÓÃʱ¼ä
end;

---- ´ÓÒÔÉÏ´úÂëÖпɼû£¬ExecuteÓëÒ»°ãµÄ´úÂë²¢ÎÞ±¾ÖÊÇø±ð¡£½öÓеÄÇø±ðÊÇÏÔʾ²É¼¯½ø¶ÈºÍÏÔʾËùÓÃʱ¼äʱ£¬²»ÄÜÖ±½Óµ÷Óø÷×ԵĹý³Ì£¬¶øÊÇͨ¹ýµ÷ÓÃSynchronize¼ä½ÓµØµ÷Óá£ÕâÑù×÷ÊÇΪÁ˱£³Ö½ø³Ì¼äµÄͬ²½¡£

---- 4. ½áÂÛ

---- ÒÔÉϵijÌÐò²ÉÓÃDelphi 4.0±à³Ì£¬ÔÚAMD-K6-2/300ÉÏʵÏÖ¡£²âÊÔ½á¹ûÊÇÕâÑùµÄ£º²ÉÓöàỊ̈߳¬²É¼¯4096¸öµãÒ»°ãºÄÓÃ10¡«14sµÄʱ¼ä£»Èç¹û²»²ÉÓöàÏß³ÌÔòÐèÒª1·ÖÖÓµ½1·Ö°ë¡£¿É¼û¶àÏ߳̿ÉÃ÷ÏÔÌá¸ß³ÌÐòµÄÖ´ÐÐЧÂÊ¡£

¡ö Ïà¹ØÄÚÈÝ
¡¡Ì¸Ì¸ÍøÂçÓ¦ÓÃÖеĶàÏ̼߳¼Êõ
¡¡×îеĶàÏß³Ìä¯ÀÀÆ÷ANT.WebBrowser
¡¡¡±ÎÒÒªÉÏÍøÈ¥¡± - ¶àÏß³Ìä¯ÀÀÆ÷·ç²É¼
¡¡¿ØÖÆDelphiµÄ´°¿ÚÏÔʾλÖÃ
¡¡ÎÞ±êÌâÀ¸´°¿Ú³ÌÐòÉè¼ÆÖÐÊó±êÍ϶¯¼¼ÇÉ
¡¡½¨ Á¢ Ó¦ Óà Èí ¼þ ×¢ ²á °² È« »ú ÖÆ
¡¡DelphiÖеÄINIÎļþ±à³Ì
¡¡ÓÃDelphiʵÏÖ½ûÖ¹Óû§¹Ø±ÕWindow9X
¡¡ÔÚDELPHI³ÌÐòÖж¯Ì¬ÉèÖÃODBCÊý¾ÝÔ´
¡¡ÔõÑùÔÚTDatasetÖкºÓ¢»ìÓÃ
¡¡ÓÃDelphiʵÏÖÍøÂçÇý¶¯Æ÷µÄÓ³ÉäºÍ¶Ï¿ª
¡¡Èí¼þÖи´»î½Ú²Êµ°µÄʵÏÖ
¡¡¶àÏß³ÌFTP¹¤¾ßCrystal FTP¼ò½é
¡¡¶àÏß³ÌÏÂÔØÔ­ÀíÓëÈýÖÖÏÂÔØ¹¤¾ßNetAnts¡¢NetVampireºÍGetRightµÄ±È½Ï
¸Ðл ·ÃÎÊÌì¼«Íø£¬Èç¹ûÄú¾õµÃ¸ÃÎÄÕÂÉæ¼°°æÈ¨ÎÊÌ⣬Çë¿´ÕâÀ