Linux PC icin bir program ihtiyacim.

Mikro Step

Kıdemli Üye
Katılım
25 Eylül 2022
Mesajlar
5,892
Programi calistirdigimda bir butona bastigimda destoptaki ekran goruntusunu alsin. Daha sonra her 5 dakikada bir dekstopta goruntude degisiklik oldumu diye baksin. Eger fark varsa PC nin kendi hoparlorunden alarm versin. Alarm verdiginde tekrar butona bastigimda alarm sussun ve foto cekip bir sonraki karsilastirma icin bu ekran fotosunu kullansin.

Ekran fotosunu aldiginda ustten 200 alttan 200 pixel satiri gormemezlikten gelsin cunku bu kisimda saat ve alinan/gonderilen byte sayisi ile ilgili gostergeler var ve yanlis alarma neden olur.

Bu program parcacigini bos vaktinde yazacak olan varmi? Diyelim ki yazildi, bu programi calistirmak icin linux benden calistirma yetkisi (password) vs isteyecek mi? Isterse isime yaramayacak zaten.
 
Son düzenleme:
Programi calistirdigimda bir butona bastigimda destoptaki ekran goruntusunu alsin. Daha sonra her 5 dakikada bir dekstopta goruntude degisiklik oldumu diye baksin. Eger fark varsa PC nin kendi hoparlorunden alarm versin. Alarm verdiginde tekrar butona bastigimda alarm sussun ve foto cekip bir sonraki karsilastirma icin bu ekran fotosunu kullansin.

Ekran fotosunu aldiginda ustten 200 alttan 200 pixel satiri gormemezlikten gelsin cunku bu kisimda saat ve alinan/gonderilen byte sayisi ile ilgili gostergeler var ve yanlis alarma neden olur.

Bu program parcacigini bos vaktinde yazacak olan varmi? Diyelim ki yazildi, bu programi calistirmak icin linux benden calistirma yetkisi (password) vs isteyecek mi? Isterse isime yaramayacak zaten.
Akıllı bıdığa sor. Programı shell script ile yazmasını söyle.
Başlangıçta çalıştırmak için neler yapılacağınıda sor.
 
Kaynak kodunun olmasi bir sey ifade etmiyor. Derleyicim olsa yazarim ama yok.

Haa batch vs olursa super. Sorayim.
 
Kaynak kodunun olmasi bir sey ifade etmiyor. Derleyicim olsa yazarim ama yok.

Haa batch vs olursa super. Sorayim.
not defterine yazıp .sh uzantısı ile kaydet. hangi linuxu kullanıyorsun? ben debian xfce4 masaüstü kullanıyorum.varsayılan not defteri mousepad oluyor. Diğer dağıtımlarda farklı.
 
Asagidaki python kodunu yazdi.

Kod:
import tkinter as tk
from tkinter import messagebox
from PIL import ImageGrab, ImageChops
import time
import os
from threading import Thread

# Global değişkenler
previous_image = None
alarm_active = False
running = True

def capture_screen():
    """Ekranın görüntüsünü al ve döndür."""
    screenshot = ImageGrab.grab()
    return screenshot

def crop_middle(image):
    """Görüntüden ilk 200 piksel ve son 200 pikseli çıkar."""
    width, height = image.size
    cropped_image = image.crop((0, 200, width, height - 200))  # Sol, Üst, Sağ, Alt
    return cropped_image

def save_image(image, filename):
    """Görüntüyü dosya olarak kaydet."""
    image.save(filename)

def check_difference(img1, img2):
    """İki görüntü arasında fark kontrolü."""
    diff = ImageChops.difference(img1, img2)
    return diff.getbbox() is not None

def monitor_screen():
    """Ekranı periyodik olarak kontrol et."""
    global previous_image, alarm_active, running

    while running:
        # Yeni ekran görüntüsünü al ve orta kısmını kes
        current_image = crop_middle(capture_screen())

        if previous_image:
            # Fark var mı kontrol et
            if check_difference(previous_image, current_image):
                if not alarm_active:
                    # Fark varsa alarmı çalıştır
                    alarm_active = True
                    Thread(target=play_beep_alarm).start()

        # Mevcut görüntüyü kaydet
        previous_image = current_image

        # 5 dakika bekle
        time.sleep(300)  # 300 saniye = 5 dakika

def play_beep_alarm():
    """Yerleşik hoparlörden beep sesi çal."""
    while alarm_active:
        os.system("echo -e '\a'")  # Linux için terminalden beep
        time.sleep(1)  # 1 saniyede bir beep sesi

def on_button_click():
    """Buton tıklandığında çağrılan fonksiyon."""
    global alarm_active, previous_image

    if alarm_active:
        # Alarm sustur
        alarm_active = False
        messagebox.showinfo("Alarm", "Alarm susturuldu.")
    else:
        # Yeni ekran görüntüsü al ve sakla
        previous_image = crop_middle(capture_screen())
        save_image(previous_image, "initial_screen.png")
        messagebox.showinfo("Durum", "Yeni ekran görüntüsü kaydedildi.")

def start_monitoring():
    """Ekran izlemeyi başlat."""
    monitor_thread = Thread(target=monitor_screen, daemon=True)
    monitor_thread.start()

def on_close():
    """Program kapatılırken çalışan fonksiyon."""
    global running
    running = False
    root.destroy()

# Tkinter GUI
root = tk.Tk()
root.title("Ekran İzleme Uygulaması")
root.geometry("300x150")

btn = tk.Button(root, text="Alarm Kontrol", command=on_button_click)
btn.pack(pady=20)

root.protocol("WM_DELETE_WINDOW", on_close)

# İzleme başlatılıyor
start_monitoring()

root.mainloop()
 
Thinker vs yuklu degil. Internete bagli olmadigi icin de yuklemekle ugrasmak istemiyorum.
 
Windows için aradğınız programı yıllar önce kullanmıştık, bir cihazdaki ekran görüntüsünü alıp bir klasöre belirlenen aralıkta kaydediyor, o ekran görüntüsünü de sunucu üzerinde local networkten paylaşıyor tek cihaz görüntüsüne herkes erişiyordu ama programı hatırlamıyorum ve linux sürümü de vardı. Biraz ararsanız sanırım hazır programa bile erişebilirsiniz.
 

Forum istatistikleri

Konular
6,938
Mesajlar
118,562
Üyeler
2,820
Son üye
Tuncay

Son kaynaklar

Son profil mesajları

hakan8470 wrote on Dede's profile.
1717172721760.png
Dedecim bu gul mu karanfil mi? Gerci ne farkeder onu da anlamam. Gerci bunun anlamini da bilmem :gulus2:
Lyewor_ wrote on hakan8470's profile.
Takip edilmeye başlanmışım :D ❤️
Merhaba elektronik tutsakları...
Lyewor_ wrote on taydin's profile.
Merhabalar. Elektrik laboratuvarınız varsa bunun hakkında bir konunuz var mı acaba? Sizin laboratuvarınızı merak ettim de :)
Lyewor_ wrote on taydin's profile.
Merhabalar forumda yeniyim! Bir sorum olacaktı lcr meterler hakkında. Hem bobini ölçen hemde bobin direnci ölçen bir lcr meter var mı acaba?
Back
Top