Python ile cmd’den okuduğum ping değerini if ile yargılayıp Az çok şeklinde değerlendirmek istiyorum.
Ancak gelen ping değerini nasıl yargılayacağımı bilmiyorum, yardımcı olursanız çok sevinirim.
Normalde alinan degerin mesela %20 yakinindaysa (.8×n < deger < 1.2×n) iyi, altindaysa cok iyi, iki katindan azsa orta, daha fazlasiysa kotu olabilir mesela.
Evrenin fizik kurallarina aykiri olacak kadar hizliysa da “saldiri altindasiniz”. (Bu ulkede bunu da gorduk.)
Demek istediğim ping değerini yorumlamak değil “if” kullanarak pingin durumunu ayarlamak ancak değeri cmd çıktısından nasıl alacam, işleme dökecem
Cmd ping kodunun çıktısını bir dosya olarak kaydetmek zorunda.Veya OpenCV kütüphanesini kullanarak ekranı işlemek zorunda kalacaksınız ki bu en zor yol.Çıktıyı halledebiliseniz bana ulaşın.Maalesef şu anda bilgisayar basında değilim ve yardımcı olamayacağım.Çıktıyi dosya olarak kaydettikten sonra os kütüphanesi ile işleyebilirsiniz.Eğer kodları şöyle olmalı:
if ping > 30ms < 50ms:
print("Orta Seviye Ping")
if ping<30ms:
print("Düsük Ping")
if ping>50ms:
print("Yüksek Ping")
Yarın sorununuzu çözebilirim belki ama şu an en fazla bunları yazarak yardımcı olabilirim.Ayrıca python ile kaç kere ping ölçeceginizini dahi ayarlayabilirsiniz.Belki oto ping kontrolcüsü olur
10 kere Youtube pinginj ölçmek için:
ping -n 10 www.youtube.com
Aslında subprocess ile çalıştırır ve çıktıyı ondan alabilir. Bunun için subprocess.check_output("cmd")
veya subprocess.run("cmd", capture_output=True)
komutlarını kullanabilir.
Burada açıklaması var.
Zaten “yorumlamak” degil “yargilamak” demistin, ben de o yuzden bir yargi sistemi gelistirdim ornek olsun diye.
Anladim ki degeri islemek istiyorsun. O zaman str
ing fonksiyonlarina veya belki re
gular expression’lara bakman lazim.
Bunu anlamadim
Burada aldigini soylememis miydin? :
Yukarıda @throwaway1 demek istediğimi anlamış kendisinin yazısından amacımı anlayabilirsiniz
“Normalde CMD’de calistirdigim bir komutu Python programim icinden calistirip ciktisini Python programimda bir degisken olarak almak istiyorum” mu?
https://docs.python.org/3/library/subprocess.html#subprocess.Popen
Daha spesifik cevabi @Wyren vermis.
@throwaway1’nin dedigi gibi dosyaya kayit veya OCR sart degil, hatta gereksiz zor veya komplike olabilir. (Gerci yeni baslayan biri icin komuta >foo
ekleyip foo
dosyasini islemek daha kolay da olabilir.)
@aib @throwaway1 @Wyren sizden bu bilgiyi istememin sebebi aslında Python ve Arduino ile beraber kullanmak
Arduinoya bağlı bir ledi pythondan yazdığım kod ile ping değerine göre yakıp söndürmek istiyorum
ancak bazı sıkıntılarım oldu
aşşağıya bıraktığım kod satırı bitmiş hali değil ve inputlar sadece test etmek için varlar
Ledi ise daha ping değerine bağlamadım.
import serial
import time
import os
import sys
import io
stringIO = io.StringIO()
sys.stdout = stringIO
os.system('ping www.google.com')
print(stringIO.getvalue())
arduino=serial.Serial('COM4', 9600)
time.sleep(2)
while True:
print("Ping ölçülsünmü?(Y/N):")
a = input()
if a == "n":
print("çıkışş yapılıyor...")
break
elif a == "y":
dosya = open("ping.txt", "w+")
yazı = os.system('ping www.google.com')
dosya.write(yazı)
dosya.close()
datafromUser=input()
if datafromUser == '1':
arduino.write(b'1')
print("LED turned ON")
elif datafromUser == '0':
arduino.write(b'0')
print("LED turned O")
şuanki sorunum okuduğum ping değerini txt dosyasına yazdıramıyor oluşum
alt taraftakidatafromUser=input()
kısmından sonraki arduino ile led kontrolü o kısmı daha programa dahil etmedim
Arduino için C dilleri veya Arduino’nun kendi dili daha mantıklı bir seçim olacaktır.Maalesef cmd ile python arasında hiç uygulama geliştirmedim ve yardımcı olamayabilirim…
Cok normal, cunku komut ciktisini almanin yolu bu degil.
Burada sorunu cevaplayan uc kisinin soylediklerinden herhangi bir tanesini yapmayi deneyerek (veya neden yapmayi reddettigini aciklayarak) devam etmelisin.