Pcden Seri Port + Role Acip Kapama

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    ricin
    ricin's avatar
    Kayıt Tarihi: 16/Mayıs/2007
    Erkek

    düşündüm de en mantıklısı rs485....pc ye usb/485 adaptör alacaksın karşıya minik picli bir devre istediğin gibi oynarsın onunla :P


    üniversite öğrencilerine devre tasarımı yapılır...! tekdag-elektronik.blogspot.com/
  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    2021 Talihlisi
    joe_black
    joe_black's avatar
    Kayıt Tarihi: 04/Ocak/2006
    Erkek
    RootB bunu yazdı

    helal olsun lan size elektroniğin amına koymuşsunuz ikiniz de. güzel konu olmuş.

    helala akşam akşam siktiler harbi :)

    sayın mürit böle ufak ufak şeyler yaparak büyücen. japonlar yapmış oluyo yapınca. onlar yapamadıklarını ya da ameleleiklerini sölüyolar mı. adım adım giicen sağlam basıcan.

     

  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Tarikat Şeyhi
    HolyOne
    HolyOne's avatar
    Kayıt Tarihi: 01/Haziran/2002
    Erkek

    Hocalar şimdi PCyi açınca TV yi açan, PCyi sleep yada hibernate edince (hala hdmi kanalındaysam) TVyi kapayan bi program yazdım.

    LG led TVsi olan seri porttan TVyi yönetmek isteyen manyak varsa kullanabilir.

    Röle kontrolune gelmedim fakat burdaki TVonoff fonksiyonuna koyacam roleyide

     

    using System;
    using System.Text;
    using System.Globalization;
    using System.Threading;
    
    namespace HolyOne
    {
        public class LGTV:System.IO.Ports.SerialPort
        {
            public byte SetId { get; set; }
            public LGTV(string portname)
            {
                SetId = 1;
                DefaultPersistRetryCount = 3;
                this.PortName = portname;
                this.BaudRate = 9600;
                this.DataBits = 8;
                this.Parity= System.IO.Ports.Parity.None;
                this.StopBits= System.IO.Ports.StopBits.One;
                this.ReadTimeout = 5500;
                this.RtsEnable = true;
               
                this.NewLine = "\r\n";//\r
            }
    
            public delegate void LogHandler(object sender, string msg);
            public event LogHandler OnLog;
    
            public enum Channel
            {
                analog = 0x22,
                
                av1 = 0x20,
                av2 = 0x21,
                component = 0x40,
                rgbpc = 0x60,
                hdmi1 = 0x90,
                hdmi2 = 0x91,
                hdmi3 = 0x92,
                hdmi4 = 0x93
    
            }//kb 01 enum
    
           // public int writewaitms = 1000;
          //  public int readwaitms = 0;
            public bool lgCmd(string cmd , int cmdid)
            {
                string tosend = cmd + ' ' + SetId.ToString("X2") + ' ' + cmdid.ToString("X2");
                return lgCmd(tosend);
            }
    
            public bool lgCmd(string cmdtxt)
            {
    
                NewLine = "\n";
                if (!this.IsOpen)
    
                    try
                    {
     this.Open();
                    }
                    catch (Exception x)
                    {
                        Log("Err: " + x.Message);
                        return false;
                    }
                try
                {
                    this.WriteLine(cmdtxt);
                    this.BaseStream.Flush();
                   
     // this.DiscardOutBuffer();
    
      Log("TX : " + cmdtxt);
                }
                catch (Exception x)
                {
                     Log("Err: " + x.Message);
                     return false;
                }
                return true;
            }
    
            public void Log(string str) {
    
                if ( OnLog != null)
                {
             
                    OnLog (this, str);
                }
              //Console.WriteLine(str);
           
            }
           public  int? lgAskCmd(string cmdtxt)
            {
                int? result=null;
                try
                {
           string r = (lgWriteRead(cmdtxt));
           if (r.Contains("OK"))
           {
               string afterok = r.Substring(r.LastIndexOf("OK") + 2);
               result = int.Parse( afterok, NumberStyles.HexNumber);
           }
                }
                catch  
                {
                }
                return result;
            }
    
           public int DefaultPersistRetryCount { get; set; }
           public int lgAskcmdPersist(string cmd, int cmdid)
           {
               string cmdtxt = cmd + ' ' + SetId.ToString("X2") + ' ' + cmdid.ToString("X2");
               return lgAskcmdPersist(cmdtxt);
           }
          public   int lgAskcmdPersist(string cmdtxt )
            {
                int maxtry = DefaultPersistRetryCount;
                int? result = null;
               
                while (result == null && maxtry > 0)
                { result = lgAskCmd(cmdtxt);
                    maxtry--;
                    System.Windows.Forms.Application.DoEvents(); }
                if (result == null) return -1;else return (int)result;
            }
    
    
            public string lgWriteRead(string cmd , int cmdid)
            { string tosend = cmd + ' ' + SetId.ToString("X2") + ' ' + cmdid.ToString("X2");
    
            return (lgWriteRead(tosend));
            }
    
            public string  lgWriteRead(string cmdtxt)
            {
                try
                {
      string result = "";
                if (lgCmd(cmdtxt)) {
                    Thread.Sleep(600);
                    result = DoReadLine(); }
                return result;
                }
                finally
                {
                    try
                    {
                this.DiscardInBuffer();
                    this.DiscardOutBuffer();
                    }
                    catch
                    {
    
                    }
                } 
            }
    
            public string  DoReadLine()
            {
                NewLine = "x";
                try
                { 
                string s = this.ReadLine();
              //  this.DiscardInBuffer();  
                Log("RX : " + s);     return s;
                }
                catch (Exception x)
                {
                    Log("Error:" + x.Message);
                    return "";
                }
    
            }
        
      
    
         public bool SetOnOff(bool state){
    
    
             if (state) return (   lgAskcmdPersist("ka", 0x01)>=0) ;
             else
             return (lgAskcmdPersist("ka", 0x00) >= 0);
           }
    
    
         public   int GetOnOff()
            {
                return lgAskcmdPersist("ka", 0xff);
            }
    
         public int Zap(Channel ch)
         {
    
             return (lgAskcmdPersist("xb", (byte)ch) );
         
         }
    
        }
    } 

    Nush ile uslanmayanı etmeli tekdir, Tekdir ile uslanmayanın hakkı kötektir!
  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Tarikat Şeyhi
    HolyOne
    HolyOne's avatar
    Kayıt Tarihi: 01/Haziran/2002
    Erkek

    Ha piyasada birkaç LG tv servis modu kontrol kodu var c# için, siz denemeden söyliim hepsi eski ve ilkeller. Çoğu hiç çalışmıyor ama holy yazdı azimle.

    Yukarıdaki LGTV classı bu da onunla yaptığım kontrol

            void SystemEvents_PowerModeChanged(object sender, PowerModeChangedEventArgs e)
            {
                if (e.Mode == PowerModes.Suspend) EndDevices();
                else
                    if (e.Mode == PowerModes.Resume) StartDevices();
    
            }
    
            private void StartDevices()
            {
                lg.DefaultPersistRetryCount = 3;
    
                int onoff = lg.GetOnOff();
    
                FirstOnOffState = onoff;//saved it
                if (onoff >= 0)
                {
                    bool turnedon = true;
                    if (onoff == 0)
                    {
    
                        turnedon = lg.SetOnOff(true);
                        Console.WriteLine("TV turned on.");
                    }
                    else if (onoff == 1) Console.WriteLine("TV was already on.");
    
                    if (turnedon)
                    {
                        HolyOne.LGTV.Channel ch;
                        if (Enum.TryParse<HolyOne.LGTV.Channel>(zapchname, out ch))
                        {
                            lg.Zap(ch);
                            Console.WriteLine("TV zapped to " + ch.ToString());
                        }
                    }
    
                }
    
                Console.WriteLine("Completed startup process");
    
            }
    
            private void EndDevices()
            {
                /*
                if (FirstOnOffState == 0)
                {
                    Console.WriteLine("TV was off earlier, close then");
                    lg.SetOnOff(false);
    
                }
                else
                    if (FirstOnOffState == -1)
                    {
                        Console.WriteLine("TV was not reachable, if it can be reached, then close");
                        lg.DefaultPersistRetryCount = 1;
                        if (lg.GetOnOff() == 1) lg.SetOnOff(false);
                    }
                    else
                    {
                        Console.WriteLine("TV was open before, so it stays open");
    
                    }*/
    
                int CurrentChid = lg.lgAskcmdPersist("xb", 0xff);
                if (CurrentChid > 0)
                {
    
    
                    HolyOne.LGTV.Channel ch;
                    if (Enum.TryParse<HolyOne.LGTV.Channel>(zapchname, out ch))
                    {
                        int chint = (int)ch;
                        if (chint == CurrentChid)
                        {
                            lg.SetOnOff(false);
                            Console.WriteLine("Tv was still on PC so turn off TV");
                        }
                        else Console.WriteLine("TV switched to another source, dont close TV");
                    }
                }
    
    
                try
                {
    
                    if (lg.IsOpen) lg.Close();
                }
                catch
                {
    
                }
            }

     


    Nush ile uslanmayanı etmeli tekdir, Tekdir ile uslanmayanın hakkı kötektir!
  5. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Tarikat Şeyhi
    HolyOne
    HolyOne's avatar
    Kayıt Tarihi: 01/Haziran/2002
    Erkek

    Sıra geldi roleye onuda paralelden takayım akım korumalı roleli paralel port aparatları varmış.

    Şimdi aracı devre koysam çok kastıracak zaten işsiz diolar =)


    Nush ile uslanmayanı etmeli tekdir, Tekdir ile uslanmayanın hakkı kötektir!
  6. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Tarikat Şeyhi
    HolyOne
    HolyOne's avatar
    Kayıt Tarihi: 01/Haziran/2002
    Erkek
    SharpShooter bunu yazdı
    X10n bunu yazdı

    arduino ve linkteki shield yardımcı olabilir.

    http://www.open-electronics.org/input-output-shield-for-arduino/

    edit: düzeltme

    aynen arduino candır

    Hocam arduinoları siparis ettim 2 ay geçti hala çinden çıkamadı


    Nush ile uslanmayanı etmeli tekdir, Tekdir ile uslanmayanın hakkı kötektir!
  7. KısayolKısayol reportŞikayet pmÖzel Mesaj
    ayhun
    ayhun's avatar
    Kayıt Tarihi: 21/Temmuz/2005
    Erkek
    cok iyi anlamam elktronikten ama mantiken su olmazmi bu pic kodlama kartini modifiye ederek yapilamazmi? hem usb driver yazmaya gerenk yok hemde pic degistirme imkani olan bise olur ama derleyici nekadar hizli atar o da soru isareti

    delimiyim ben?
  8. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Tarikat Şeyhi
    HolyOne
    HolyOne's avatar
    Kayıt Tarihi: 01/Haziran/2002
    Erkek

    http://sourceforge.net/projects/libusbdotnet/ şimdi bunu indirdim vid ve pid girdim. taktığım cihazı tanıdı ona seri port açtı.

    Usbden gelen sanal com üzerinden mi haberleşmeliyim yoksa daha guzel bir standardı varmı bunun


    Nush ile uslanmayanı etmeli tekdir, Tekdir ile uslanmayanın hakkı kötektir!
  9. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Mirza Efe
    _Dert_
    _Dert_'s avatar
    Kayıt Tarihi: 12/Aralık/2007
    Erkek

    Programlama bilmek ne kdar guzel yaaa istedigin seyi hemen yaz, ohhh valla...

    Helal olsun seyhim....Kiskandim seni vallahi...


  10. KısayolKısayol reportŞikayet pmÖzel Mesaj
    wh0
    wh0's avatar
    Kayıt Tarihi: 21/Temmuz/2008
    Homo
    HolyOne bunu yazdı

    Ama usb olacaksa driver mi yazacaz ona bide, PC nasıl anlıyor? o pic için hazır driver falan mı var?

    USB portu ile iletisim kurabilmen icin usb cihazinin VID(VendorID) ve PID(ProductID) numarasini alman yeterli.

    CreataFileA apisi ile usbye baglanabilir, ReadFile ile veri okuyabilir, WriteFile ile de yazabilirsin.

    Ornek Bir Delphi Snippet'i

    Function ConnectToUSB:boolean;
    var
    Aygit : String;
    Handle : Cardinal;
    begin
     Aygit:='\?\USB#Vid_TARIKAT&Pid_1453#5&1234567&0&1#{ abcde-efgh-blah-blah-blah}';
    Handle:=CreateFile(PAnsiChar(Aygit), GENERIC_WRITE OR GENERIC_READ,
    FILE_SHARE_WRITE OR FILE_SHARE_READ, NIL, OPEN_EXISTING, FILE_FLAG_OVERLAPPED OR FILE_ATTRIBUTE_NORMAL, 0);
    if Handle <> INVALID_HANDLE_VALUE then
    BEGIN
    Result:=True;
    END
    ELSE
    BEGIN
    Result:=False;
    END;
    end;

     

    wh0 tarafından 14/Kas/12 01:15 tarihinde düzenlenmiştir

    🏴‍☠️Hi'dan gelen varır Who'ya, Hi'da onun adıdır Who'da...
Toplam Hit: 5609 Toplam Mesaj: 23