Picproje Elektronik Sitesi

PROGRAMLAMA DİLLERİ => C/C++ => Konuyu başlatan: Ankaralı - 21 Haziran 2009, 22:24:57

Başlık: C de portlara ulaşmak ama nasıl?
Gönderen: Ankaralı - 21 Haziran 2009, 22:24:57
Herkese hayırlı akşamlar.

Bu sıralar C ye merak sardım bayada ilerlettim.Yalnız şimdi sıkıcı uygulamalardan bıktım.Bunu daha da ileriye taşımanın bir yolu olmalı diyerek bilgisayar ve elektroniği birleştirmeye karar verdim.

Benim istediğim paralel porttan röle, led,hatta yapabilirsem pici haberleştirmek istiyorum.Google amcadan fazla faydalanamadım.Sizlerden bu konuda yardım istiyorum.

Mesela c de gecikme fonksiyonu varmı?1 sn sonra ledi kendisi söndürebilirmi?

Şimdiden teşekkür ederim.

Not=Kullandığım derleyici Dev C ve Visual Studio...
Başlık: C de portlara ulaşmak ama nasıl?
Gönderen: Tagli - 21 Haziran 2009, 22:44:34
C'de port kontrolü nasıl yapılıyor bilmiyorum ama zamanında biraz araştırmıştım internette. Çok kolay değildi yanlış hatırlamıyorsam ama internette örneği çok.

Gecikmeye gelince, okulda aldığımız bir ders kapsamında Linux ortamında pthreads isimli thread kütüphanesini kullanarak bekleme yapmıştık. Windows'ta hangi thread kütüphaneleri kullanılıyor onu bilmiyorum.
Başlık: C de portlara ulaşmak ama nasıl?
Gönderen: kadirbas - 22 Haziran 2009, 07:55:09
Selamlar QarizmaCocuq.

Paralel port'la ilgili yapılmış bir çok program bulabileceğini düşünüyorum. Ben daha önce internette rastlamıştım fakat hiç denemedim.. O konuda internette tekrar arama yaparsan birşeyler bulabilirsin diye düşünüyorum.

Thread kavramının ne olduğunu biliyor musun bilmiyorum, fakat eğer bilmiyorsan bu konuyu da araştırmanı tavsiye ederim. Örnek bir thread kodu:


#include <stdio.h>
#include <windows.h>


DWORD __stdcall ThreadProc(void *param);

int main()
{

HANDLE hThread;
DWORD dwThreadID;

hThread = CreateThread(NULL, 0, ThreadProc, NULL, 0, &dwThreadID);
if(hThread == NULL)
{
fprintf(stderr, "Cannot create thread!..\n");
exit(EXIT_FAILURE);
}


ExitThread(0);

return 0;
}

DWORD __stdcall ThreadProc(void *param)
{
int i;

for(i = 0; i < 10; ++i)
{
printf("Other thread : %d\n", i);
Sleep(1000);
}

return 0;
}




Bu kodu thread çalışmasını nasıl gerçekleştirebileceğine örnek olsun diye verdim. Bu kod üzerinde değişiklikler yaparak istediğin çalışmayı gerçekleştirebilirsin diye düşünüyorum..


Kolay gelsin...
Başlık: C de portlara ulaşmak ama nasıl?
Gönderen: Ankaralı - 22 Haziran 2009, 20:46:01
Evet nette bişeyler buldum ama alayı almanca ve ingilizce 2 dilide bilmem anlamadanda copy-paste yapmak mantıksız  :lol: .Türkçe kaynaklardada C# dan örnekler var.

@Kadirbas

Üstadım gönderdiğin şeyi biraz açıklarmısın burada yaptığımız şey c de zaman gecikmesimi?

Thread demişsin araştırma yaptım işlemleri paralel olarak gerçekleştirmeden bahsediliyor.Konumuzla bunun ne türden bir alakası var.Beni aydınlatırsan mutlu olucam.

@Tagli üstadım seninde yorumların için teşekkürler.
Başlık: C de portlara ulaşmak ama nasıl?
Gönderen: kadirbas - 22 Haziran 2009, 21:44:31
Alıntı yapılan: "QarizmaCocuq"Üstadım gönderdiğin şeyi biraz açıklarmısın burada yaptığımız şey c de zaman gecikmesimi?

"C'de zaman gecikmesi" demek belki çok doğru olmayabilir fakat; bu programla ikinci thread bir döngü içerisinde her defasında yaklaşık olarak 1 saniye bekleyip, "printf" fonksiyonunu çağırıyor.

Bildiğiniz gibi Windows "multi-processing" yapan işletim sistemlerindendir. Zaman paylaşımlı olarak birden fazla işlemi işletir. "Process"ler birden fazla akış içerebilirler. Bu akışların her birine "thread" denir.

Alıntı yapılan: "QarizmaCocuq"Thread demişsin araştırma yaptım işlemleri paralel olarak gerçekleştirmeden bahsediliyor.Konumuzla bunun ne türden bir alakası var.Beni aydınlatırsan mutlu olucam.

Esasında aklıma "thread" gelmesinin sebebi sizin ilk sorunuzdan kaynaklanıyor.

Alıntı yapılan: "QarizmaCocuq"Mesela c de gecikme fonksiyonu varmı?1 sn sonra ledi kendisi söndürebilirmi?

Burada "1 saniye sonra LED'i kendisi söndürebilir mi?" sorunuzdan, siz başka işlemleri işletirken, işletim sisteminin belirli bir süre sonra başka bir akıştan LED söndürme işini yapmasını istediğinizi düşündüm. Bu yüzden de, "thread"li bir çalışmanın nasıl yapılabileceğini merak ettiğiniz fikrine kapıldım...
Başlık: C de portlara ulaşmak ama nasıl?
Gönderen: Ankaralı - 23 Haziran 2009, 12:29:23
Hiç bilmediğim bişeyi öğrenmeye çalışırken farklı bir konuyuda öğrenmiş oldum eyvallah üstad.Şimdi sırada portlara nasıl ulaşıcağım var.Bu C de input output(komutlar) çalışırmı?Denedim olmuyor farklı bişey mi denemem gerek.
Başlık: C de portlara ulaşmak ama nasıl?
Gönderen: fahri- - 23 Haziran 2009, 12:35:26
Linki incelersen sana fikir berebilir

http://www.epanorama.net/circuits/parallel_output.html
Başlık: C de portlara ulaşmak ama nasıl?
Gönderen: kadirbas - 25 Haziran 2009, 01:04:07
Selam QarizmaCocuq.

Msn üzerinden sana gönderdiğim bağlantıyı farkettin mi bilmiyorum.
Aynı bağlantıyı buradan da göndermek istedim. Böylelikle bu başlığı inceleyen diğer kişilere de yararı olur..

lhttp://logix4u.net/Legacy_Ports/Parallel_Port/A_tutorial_on_Parallel_port_Interfacing.html (http://logix4u.net/Legacy_Ports/Parallel_Port/A_tutorial_on_Parallel_port_Interfacing.html)

Daha önce sana söylediğim gibi, elimdeki bilgisayarda paralel port olmadığından buradaki kodları deneme fırsatım olmadı fakat denemekte yarar var...

Tekrar kolay gelsin...
Başlık: C de portlara ulaşmak ama nasıl?
Gönderen: OptimusPrime - 25 Eylül 2009, 09:55:36
http://www.internals.com/
adresindeki winio kütüphanesiyle çalıştım. gayet güzel işliyor. tavsiye derim.
Başlık: C de portlara ulaşmak ama nasıl?
Gönderen: BenC - 25 Eylül 2009, 10:14:07
Google dan Serial Communications in Win32 diye arat. Orda MTTTY olacak. C kaynak kodlu bir uygulama var. Eski Win 3.1 zamanından kalma bir Seri Port iletişim kodu.

Link bu:http://msdn.microsoft.com/en-us/library/ms810467.aspx

ordaki  4918.exe dosyasını bilgisayarına kur. C:\msdn\sample\.... altına kaynak dosyaları atacaktır.

Bir ara VC 6.0 a göre uyarlamıştım ama bulamadım.