Yazılımcılara sorular ...
4 4

Bu konuda 145 mesaj var

2 hours ago, ResetButton said:

ilginç tercih, racketlang'ın ne özelliği var? 

 

 

C' deki include yerine "require" getirmiş arkadaşlar.

 

Kendi dilimizi oluşturmayı falan sağlıyormuş. Hemen kolları sıvayıp require yerine #include yazabileceğim hale getircem. Belki "needfor" filan yazarsam daha "innovatif" olur herhalde...

 

Carmack popülarite peşinde, öyle çok özel bir sebebi olduğunu sanmıyorum...

Bu mesajı paylaş


Bu mesajın linki
Sosyal ağlarda paylaş

Bazı ciddi platformlarda ilköğretim ve lise öğrencilerinin işletim sistemi programladığını okuyorum. Bu ne kadar mümkün? Daha küçük yapılabilir projelerle uğraşmaktansa, neden böyle bir şeye kalkışırlar? Bu çocuklara yol gösteren yok mu? :D

Bu mesajı paylaş


Bu mesajın linki
Sosyal ağlarda paylaş
On 25.04.2018 at 11:55 PM, rammstein said:

Bazı ciddi platformlarda ilköğretim ve lise öğrencilerinin işletim sistemi programladığını okuyorum. Bu ne kadar mümkün? Daha küçük yapılabilir projelerle uğraşmaktansa, neden böyle bir şeye kalkışırlar? Bu çocuklara yol gösteren yok mu? :D

 

Micro seviyede bazı işleri minik minik programlatıyor olabilirler. Ama içeriğe bakmak laazım. Ben taa C derneğinde ders alırken (yaklaşık 15 sene önce) orada da araştırma ve öğrenme için işletim sistemi projesi vardı.

 

Bizde şirketçe ilkokul, ortaokul ve lise ler için yazılım ve machine learning için seminerlere gidiyoruz. Artık lise çağındaki çocuklar da bile oturmuş yazılımcılara denk gelebiliyoruz.Bence ilkokulun belli bir seviyesinde birazcık girilebilir. Ama işletim sistemi biraz iddialı olmuş.

Bu mesajı paylaş


Bu mesajın linki
Sosyal ağlarda paylaş

Arkadaşlar wordpress hakkında bir sorum olacak. Sanırım bu başlık uygun;

 

Bir wordpress sayfasında Digg tarzı bir link olayı nasıl yapılıyor. Webde ve stackflowda araştırıyorum birkaç gündür. Sanırım doğru ifadelerle aratamıyorum yada sonuç yok. Yani sayfa düzeni olarak sabit bir sayfada akış gerçekleşecek ve başlığa tıklayınca konu sayfası açılmadan link verilen yere gidecek. Tabi bu fonksiyonu kısmen post.php üzerinden "hreff" le ilgili birkaç deneme yaptım bu seferde sayfanın ileri ve sonraki fonksiyonları bozuluyor.

 

-Tam olarak ne yapmak gerekli?

-ve ilgili kod nereye ne yazılmalı? 

 

Teşekkürler

Bu mesajı paylaş


Bu mesajın linki
Sosyal ağlarda paylaş
1 hour ago, RFID said:

Arkadaşlar wordpress hakkında bir sorum olacak. Sanırım bu başlık uygun;

 

Bir wordpress sayfasında Digg tarzı bir link olayı nasıl yapılıyor. Webde ve stackflowda araştırıyorum birkaç gündür. Sanırım doğru ifadelerle aratamıyorum yada sonuç yok. Yani sayfa düzeni olarak sabit bir sayfada akış gerçekleşecek ve başlığa tıklayınca konu sayfası açılmadan link verilen yere gidecek. Tabi bu fonksiyonu kısmen post.php üzerinden "hreff" le ilgili birkaç deneme yaptım bu seferde sayfanın ileri ve sonraki fonksiyonları bozuluyor.

 

-Tam olarak ne yapmak gerekli?

-ve ilgili kod nereye ne yazılmalı? 

 

Teşekkürler

 

Ulaşmaya çalıştığınız şeyi ben de anlayamadım. Şunun gibi bir şey mi?

https://www.w3schools.com/tags/tryit.asp?filename=tryhtml_iframe

Bu mesajı paylaş


Bu mesajın linki
Sosyal ağlarda paylaş
45 minutes ago, RFID said:

Hayır değil. Aslında açık anlatmak istediğim, Digg.com sitesini ziyaret ederseniz canlı örneği var bunun wordpresste nasıl uygulanabilirliliğini soruyorum.

 

Sayfanın alt kısmına yaklaştıkça sayfanın daha fazla içerik göstermesini kastediyorsunuz sanırım. Bunu jquery ile yapabilirsiniz. Şurada bir örnek var:

http://www.dotnetbull.com/2013/05/browser-scroll-to-end-of-page-in-jquery.html

 

WordPress için ise şöyle bir Plugin var:

https://wordpress.org/plugins/infinite-scroll/

rammstein tarafından düzenlendi

Bu mesajı paylaş


Bu mesajın linki
Sosyal ağlarda paylaş

Gençler şimdi şöyle bir sorunum var;

Visual Studio ile bir küçük program yapmaya çalışıyorum. Programın olayı belli aralıkla bir veriyi bilgisayarın seri portundan başka bir cihaza göndermesi.

 

Sıkıntı burada değil, bu kısmı yapabiliyorum ama portu elle seçmem gerekiyor, ben istiyorum ki kendi otomatik olarak bağlansın. Yani program çalıştığında bilgisayardaki mevcut serial portları listelesin, bu portlar içinde başka bir program tarafından kullanılanları elesin, geri kalan kullanılabilir portlardan da her birine kısa bir sorgulama mesajı göndersin, bu sorgulama mesajı gönderdiği portlardan herhangi birinde o porta bir cihaz bağlı cihaz istediği yanıtı verirse bu portu "veri iletiminde kullanılacak port" olarak işaretlesin. Yani bir çeşit "hand shaking" olayları.

 

Bunun da bir kısmını yapabiliyorum ama bir türlü şu komut gönderme, bekleme, cevabı okuyup karşılaştırma işini beceremedim.

 

 

 private string[] ports = SerialPort.GetPortNames();

        private void Form1_Load(object sender, EventArgs e)
        {

            serialPort1.BaudRate = 9600;           
            foreach (string port in ports)
            {
                textBox1.Text += port + "\r\n";  ///Bilgisayarda bulunan mevcut serial portlar

            }


//////////////////////////////////////////////////////////////////////////////////////////////////////////////////


            foreach (string port in ports)
            {
               

                try
                {
                    
                    serialPort1.PortName = port;
                    serialPort1.Open();

                    textBox1.Text += port + "\r\n"; ///Mevcut portların içerisinde "açılabilir" olanlar. Açılabiliyorsa zaten başka bir program tarafından kullanılmıyor olmuş oluyor.


                }
                catch (Exception ex)
                {
					
                }
                serialPort1.Close();
            }


///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

 

 

Daha anlaşılabilir olsun diye böldüm, yoksa bu iki bölümü birleştirebilir yada ilk kısmı atabilirim.

 

Şu şekilde sırasıyla her bir "kullanılabilir" porta özel mesajımı da gönderebiliyorum ama gerisini bir türlü getiremiyorum.

 

                {
                    
                    serialPort1.Open();
                    serialPort1.Write("Hello");
                    serialPort1.Close();

                }

 

Bilgisayara seri portundan bağlı cihaz "Hello" mesajını görünce cevap olarak "hi" diyor ve veri alma moduna geçiyor, orada bir sıkıntı yok ama gel gör ki programın çalıştığı bilgisayar bu "hi" cevabını nasıl görüp o da veri gönderme moduna geçecek?

Whooosh tarafından düzenlendi
rammstein beğendi

Bu mesajı paylaş


Bu mesajın linki
Sosyal ağlarda paylaş
18 hours ago, Whooosh said:

Hallettim.

Nasıl yaptın? Ben de tam cevap yazacaktım WMI classları ile istediğini alabilirsin diye. MSDN sitesinde aşağıdakine benzer bir örnek vardı. Win32_SerialPort sınıfına göre değiştirdim o örneği biraz.

 

class Program
    {
        static void Main(string[] args)
        {
            string[] ports = SerialPort.GetPortNames();
            ObjectQuery query = new ObjectQuery("SELECT * FROM Win32_SerialPort Where DeviceID=\"COM1\"");
            ManagementScope scope = new ManagementScope(@"\\DESKTOP-QD7VUDC\root\cimv2");
            scope.Connect();
            Console.WriteLine(scope.IsConnected);
            ManagementObjectSearcher searcher = new ManagementObjectSearcher(scope, query);
            ManagementObjectCollection queryCollection = searcher.Get();
            foreach (ManagementObject m in queryCollection)
            {
                Console.WriteLine("Availability : {0}", m["Availability"]);
            }
        }
    }

 

Bu mesajı paylaş


Bu mesajın linki
Sosyal ağlarda paylaş

WMI'a falan girmeye gerek kalmadı. Zaten kullandığım System.IO ile o işi hallettim.

 

using System.IO.Ports;


SerialPort serialPort = new SerialPort("COM1", 9600, Parity.None, 8, StopBits.One);
serialPort.DataReceived += new SerialDataReceivedEventHandler(DataReceivedHandler);
string[] ports = SerialPort.GetPortNames();

foreach (string port in ports)
            {   

                try
                {
                  
                    serialPort1.PortName = port;
                    serialPort1.Open();

                    textBox1.Text += port + "\r\n";

                }
                catch (Exception ex)
                {
					
                }
                serialPort1.Close();
            }


private void DataReceivedHandler(object sender, SerialDataReceivedEventArgs e)
        {
            Console.WriteLine("Data Received");
         }

Tabi pratikte bu yemedi çünkü o porttan bir şey gelebilmesi için portu bir süre açık bırakmak gerekiyor. Bunun için foreach'i falan kenara bırakıp sonunda bir timer olan yeni bir loop hazırladım.

 

Yani fonksiyon seri portu seçiyor, açıyor ve sonra timer'ı ateşliyor, Timer sona erince de o portu kapatıp bir sonrakine geçiyor.

 

Tabi bu şekilde çalışıyor ama sistemdeki seri port sayısına bağlı olarak, olayın süresi uzuyor. Çünkü tek bir port objesi var ve port sayısına göre her bir port için bu obje tek tek açılıp bir süre dinleyip sonra kapatıyor. Şimdi bunu paralel şekilde çalışacak şekilde yeniden düzenlem lazım. Yoksa sistemde 20 com port varsa ve bekleme(portu dinleme) süresini 1sn ayarladıysam, bütün portları dinlemesi 20 sn sürüyor.

 

Yani her bir port için yeni bir obje oluşturacak yeni bir foksiyon oluşturmam lazım.

rammstein beğendi

Bu mesajı paylaş


Bu mesajın linki
Sosyal ağlarda paylaş

10 numara, 5 yıldız oldu.

 

Yukarıdaki mesajda anlattığım gibi başlangıçta her bir port için ayrı obje oluşturuyor, her birine eş zamanlı "merhaba" komutu gönderiyor ve bir süre her birinden  cevap bekliyor. Eğer bağlı cihazlardan biri "beklediği yanıtı" verirse bütün diğer bağlantıları kapatıp bu porta veri aktarmaya başlıyor.

Eğer bağlantı kesilirse hoop en başa dönüyor. Eğer hiç cevap alamazsa bir süre bekleyip yeniden en başa dönüyor. Eğer bağlı cihazların birinden beklediğinin dışında bir yanıt alırsa da görmezden geliyor.

Açılışta da pencerenin görünmesini engelledim, doğrudan taskbar'a gidiyor. Tam istediğim gibi oldu, tak çalıştır. Hatta çalışırken sök başka porta tak, otomatik yeniden buluyor.

 

 

Bu mesajı paylaş


Bu mesajın linki
Sosyal ağlarda paylaş

Hocam catch içini boş bırakmayın; log yazıp, hatayı tekrar fırlatın. En alttaki port kapatma işini de finally bloğuna alıp garantilerseniz kaya gibi koda dönüşür...

 

Bunun dışında USB den takılan cihazlara ID verme gibi bir mevzu vardı, ID taraması yapıp cihazın hangi porta takılı olduğu daha net ve düzgün bir şekilde yapılabilir, daha "pro" bir çözüm olur ama yukarıdaki kod işinizi görüyorsa ne ala...

Bu mesajı paylaş


Bu mesajın linki
Sosyal ağlarda paylaş
2 hours ago, OnLyTNT said:

Hocam catch içini boş bırakmayın; log yazıp, hatayı tekrar fırlatın. En alttaki port kapatma işini de finally bloğuna alıp garantilerseniz kaya gibi koda dönüşür...

 

Bunun dışında USB den takılan cihazlara ID verme gibi bir mevzu vardı, ID taraması yapıp cihazın hangi porta takılı olduğu daha net ve düzgün bir şekilde yapılabilir, daha "pro" bir çözüm olur ama yukarıdaki kod işinizi görüyorsa ne ala...

Son halinde catchlerin içi boş değil, yakalayıp atıyor.  Doğrudan finally'ye de portları kapat komutu koyarsam karşı cihazdan gelen cevabı alamıyorum. Bu yüzden onun yerine bir timer koydum, timer tamamlanınca portları kapatıyor. Eğer timer süresi tamamlanmadan cevap gelirse bütün portları kapatıp, o porta yeni bir bağlantı yapıp ver gönderme aşamasına geçiyor.

Timer süresi tamamlandığında eğer cevap alamamışsa yine portları kapatıp, en başa geri dönüyor.

 

 

     private void CheckPorts()
        {
            
            string[] ports = SerialPort.GetPortNames();
            if (ports.Length == 0)
            {
                
                statusStrip1.Text = "No available port";
                DTimer.Start(); ////Delay Timer

            }
            else { 

        
            foreach (string port in ports)
            {
                SerialPort Comport = new SerialPort(port, 9600, Parity.None, 8, StopBits.One);
                
                Comport.DataReceived += new SerialDataReceivedEventHandler(Readport);
                byte[] pass = Encoding.ASCII.GetBytes("***************");

                try
                {
                    Comport.WriteTimeout = 500;
                    Comport.ReadTimeout = 500;
                    Comport.Open();
                    Comport.Write(pass, 0, 9);

                    textBox1.Text += Comport.PortName;
                    Console.Write(Comport.PortName + "\r\n");

                }

                catch (TimeoutException ex)
                {
                    Console.Write(Comport.PortName + "is time out \r\n");

                }
                catch (Exception ex)
                {
                    Console.Write(Comport.PortName + " Error \r\n");
                    }
                    finally
                    {

                        DTimer.Start(); ////Delay Timer

                    }



                }
                

            }

        }

 

Whooosh tarafından düzenlendi

Bu mesajı paylaş


Bu mesajın linki
Sosyal ağlarda paylaş

.Net'in System.IO.Serialport class'ı hayatımda gördüğüm en kötü Win32 wrapper'ı sanırım, yüksek hızlı poll yapılacaksa -100ms'de 1 için bile- event fırlama zamanları ya da data iletme zamanlamaları kafasına göre oluyor... sırf bu yüzden Win32 Native metodları wrap eden yeni bir obje yazmak zorunda kaldım 3-4 sene önce... haberleşme hızlı olacaksa aklınızda olsun...

Bu mesajı paylaş


Bu mesajın linki
Sosyal ağlarda paylaş
17 hours ago, Forgotten said:

.Net'in System.IO.Serialport class'ı hayatımda gördüğüm en kötü Win32 wrapper'ı sanırım, yüksek hızlı poll yapılacaksa -100ms'de 1 için bile- event fırlama zamanları ya da data iletme zamanlamaları kafasına göre oluyor... sırf bu yüzden Win32 Native metodları wrap eden yeni bir obje yazmak zorunda kaldım 3-4 sene önce... haberleşme hızlı olacaksa aklınızda olsun...

Bilgisayardaki sensörlerden alınan veriyi gönderdiği için aktarma sıklığını arttırırsam bu sefer sensör okuma sıklığını da arttırmak gerekecek. Tabi sensörlerden okuma olayı seri portlardan gönderme olayınından çok daha ağır bir işlem olduğundan 500ms ile 1saniye arasında kalmayı planlıyorum. 

Optimizasyon olaylarına yeni başladım. Sensör okuma yükünü biraz hafifletmek için okuma kısmını ikiye böldüm. Seri bağlantı kurulduğunda bir sefere mahsus bütün sensörleri listeleyip aralarından kullanacaklarını belirliyor. Sonra her 500ms de bir yenilerek sadece bu başlangıçta seçilmiş olanları getiriyor. Bu değişiklik oldukça fark yarattı.

Bir sonraki aşamada kullanıcı arayüzünü minimalleştirip hatta komple iptal etmeyi planlıyorum. Çünkü her şeyi otomatiğe aldığım için bir arayüze ihtiyaç kalmadı. Belki beklenmedik durumlar için sistem çubuğunda saatin yanında ufak bir ikon ve sağ tık menüsü bırakırım.

Belki bundan sonra sırf cila olsun diye native seri port olayına girebilirim. Çok teşekkürler bu bilgi için. 

Whooosh tarafından düzenlendi

Bu mesajı paylaş


Bu mesajın linki
Sosyal ağlarda paylaş

Arka planda çalışıp loglama yapan bir servis yazabilirsin. Servis uygulamasını gerektiğinde arayüzünü açacak şekilde bir uygulama parametresi ile çağırabilirsin. Yani hem application mode ile arayüzü ile hem de arayüz olmadan service mode olarak çalışabilir...

 

6 hours ago, Whooosh said:

Bir sonraki aşamada kullanıcı arayüzünü minimalleştirip hatta komple iptal etmeyi planlıyorum. Çünkü her şeyi otomatiğe aldığım için bir arayüze ihtiyaç kalmadı. Belki beklenmedik durumlar için sistem çubuğunda saatin yanında ufak bir ikon ve sağ tık menüsü bırakırım.

 

Bu mesajı paylaş


Bu mesajın linki
Sosyal ağlarda paylaş
1 hour ago, OnLyTNT said:

Arka planda çalışıp loglama yapan bir servis yazabilirsin. Servis uygulamasını gerektiğinde arayüzünü açacak şekilde bir uygulama parametresi ile çağırabilirsin. Yani hem application mode ile arayüzü ile hem de arayüz olmadan service mode olarak çalışabilir...

 

 

Bunu düşündüm hocam ama biraz araştırınca gözümü korkuttu. Onun yerine formun form'unu silip, bir tane notification icon oluşturup arayüz işini aradan çıkardım.

DxIi4oL.png

Bu projeden sonra yine seri portlarla ilgili başka bir projem var. O projede veri aktarımı cihazdan bilgisayara şeklinde olacak. Belki yeni projede background service olayını deneyebilirim ama bu proje için bu kadarı fazla bile.

 

Sson haliyle gayet temiz, hafif bir arkaplan uygulaması oldu. Hatta 500ms yenileme hızında işlemci kullanımı beklediğimin de altında çıktı. @Forgotten hocamın da dediği gibi 100ms altında seri port saçmalamaya başlıyor ama bu proje için 500ms bile fazlasıyla overkill. Zaten 200ms ve altı karşıdaki cihazı da zora sokuyor.

 

vMBKmbP.png

Whooosh tarafından düzenlendi
Forgotten beğendi

Bu mesajı paylaş


Bu mesajın linki
Sosyal ağlarda paylaş

Yorum yazmak için üye olun veya giriş yapın

Yorum yazmak için üye olmanız lazım

Üye ol

Üye olun ve sitemizin tüm avantajlarından yararlanın!


Yeni bir hesap oluştur

Giriş yap

Zaten üyemiz misin? O halde giriş yap


Hemen giriş yap
4 4

  • Bu sayfadaki üyeler   0 üye

    Şu an bu sayfayı görüntüleyen bir üye yok