Arkadaşlar ben com portu okumak amaçlı indy deki okuma yönteminden kopya çekerek bunu kendi componentime uyarladım.
Bu com okuma thread ımıda form.show olayında create ediyorum.Ancak thread oluştuğunda birden cpu kullanımı 100de100e ulaşıyor.Buda bana sıkıntı oluşturuyor.
kod şu
procedure TReadingThread.Execute;
var
S: String;
begin
while not Terminated do
begin
S := FConn.ReadString;
if S<>'' then
begin
buffertext:=buffertext+S;
Form1.Timer9.Enabled:=True;
end;
S:='';
end;
end;
başlatmadığım zaman cpu kullanımı 100de 5 lerde ama başlattığım zaman 100de100 tek çekirdek p4 makina çift çekirdekte denedim 100de50 kullnıyor.Lütfen en kısa zamanda cevaplarınızı bekliyorum.Cevap veren herkese şimdiden teşekkürler
iyi çalışmalar...
Döngünün işlemciyi bu kadar meşgul ettiğini düşünmüyorum, çünkü readstring blocking bir işlem.
Thread içinden Form1.Timer9.Enabled:=True yapman sakıncalı bir durum. Bunu ayrı bir procedure e yazıp, sonra onu synchronize etmen gerekli.
arkadaşlar cevaplar için teşekkür ederim.
Sorunumu setthreadprioty komutu ile hallettim.Yani thread ımı create ettikten sonra bu komutu uyguladım ve iletişim problemimi çözdüm seri port izleme programları ilede baktım ve normalde bu komut olmadan porttan misal 100 okuma yapıyordu denediğim komutla 1400 okuma yapıyor.Şimdilik sorunum çözülmüş gözüksede işlemci kullanımının hala 100de 100 olması açıkçası biraz beni endişelendiriyor.Umarım bir problem olmaz şimdilik programımı teslim ettim.Yaptığım işin son aşamada böyle bi sorun çıkarması beni gerçekten korkutmuştu ama kısa vadede yapabileceğimi yaptım şükür.Ama bundan sonra bu konuda daha dikkatli olmam gerek sanırım.
Ha bu arada yanlış anlaşılmasın benim sorunum kendi threadımda olmuyordu
benim okumam sorunsuzdu(cihazlarım-ben) ama program çalışırken modbus üzerinden başka bir makina(ben-modbus) ile haberleşmem gerekiyordu.Ve benim kanal işlemciyi bu denli yorunca diğer okuma işlemi tam olarak devam edemiyor aksıyordu.
setthreadprioty(benimkanal.handle,lowest) ile benim kanalın önemini azalttım böylece diğer (modbus-ben) kanal ki bu kanal benim değil ole bağlantısı ile veri aldığım başka bir programın kanalı rahatlamış ve iletişim kurulmuş oldu
Umarım anlatabilmişimdir..
İyi Çalışmalar...Kolaygelsin.