PDA

Tam Sürümünü Görmek İçin : paralel porty için basit bir program


bunalthe
19/05/2007, 18:53
c# ta yazılmıs fakat acık kod deil ve ben paralel port hakimiyetine sahip olmadıgım için bu programın kodlarını yazamıyorum lütfen birileri yardım etsin...::((((


eezgu
19/05/2007, 19:56
programda inpout32.dll kullanılmış. bununla ilgili elimde bir örnek vardı:


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

//typedef short _stdcall (*inpfuncPtr)(short portaddr);
//typedef void _stdcall (*oupfuncPtr)(short portaddr, short datum);

typedef short _stdcall (*inpfuncPtr)(short portaddr);
typedef void _stdcall (*oupfuncPtr)(short portaddr, unsigned char datum);

HINSTANCE hLib;
inpfuncPtr inp32;
oupfuncPtr oup32;

int main(){
int i;
unsigned char ch;

/* Load the library */
hLib = LoadLibrary("inpout32.dll");
if (hLib == NULL) {
printf("LoadLibrary Failed.\n");
return -1;
}

inp32 = (inpfuncPtr) GetProcAddress(hLib, "Inp32");
if (inp32 == NULL) {
printf("GetProcAddress for Inp32 Failed.\n");
return -1;
}
oup32 = (oupfuncPtr) GetProcAddress(hLib, "Out32");
if (oup32 == NULL) {
printf("GetProcAddress for Oup32 Failed.\n");
return -1;
}
while(1){
ch=1;
for(i=0;i<7;i++){
oup32(0x378,ch);
sleep(100);
ch=ch<<1 ;
}
ch=64;
for(i=0;i<7;i++){
oup32(0x378,ch);
sleep(100);
ch=ch>>1 ;
}
oup32(0x378,0);
}
//system("pause");
FreeLibrary(hLib);
return 0;
}

bunalthe
19/05/2007, 21:40
eyww

mr_c
19/05/2007, 23:17
inpout32.dll un kodu nedir peki? Ve windowsta bu işi nasıl yapabiliyor?

Euclides
20/05/2007, 00:14
basitce dll çalışınca bir kmd extract ediyor ve yüklüyor böylece ring0'a erişmiş oluyor. Daha sonra dll, DeviceIoControl ile mesajlarını yolluyor.

1. Problem: DeviceIoControl buffered io yapmak için dizayn edilmiştir bu yüzden byte byte yazarsanız "1mb/gün" :p hızında kullanırsınız.. "okumak" ise pek mümkün değil :D (bu koşullar altına nasıl pooling yapılsın ?! )

2. Problem: Default comminication resource'lara io yapmaya kalkarsanız tipik çakışmalar meydana getirsiniz, siz windows'a ben bu port'ları kullanıyorum demezseniz windows'un default driveri sistem kaynağını en son bıraktığı şekilde olduğunu düşünür... sonrası malum

Avantaj: LPT'den LED yakıp söndürmek için kolay bir çözüm. Çünkü bir ürün hazırlamıyorsunuz sadece LED, çakışsa ne olur windows dağılsa ne olur... Zaten veri iletim hızınız yok :p :p :p