Computer Games Forum

Go Back   Computer Games Forum > Tech > Software

Notices

Reply
 
LinkBack Thread Tools
Old 08-04-2006, 19:58   #1 (permalink)
Nick anterior: Alexe Emil
 
SINEKT's Avatar
 
Join Date: Jan 2005
Location: La epicentru
Citire date de pe portul paralel

Vreau sa citesc biti de pe portul paralel dar nu mai stiu cum se seteaza pinul 5 al portului de control, pt. citire de date...

Stiam ca era ceva de genul _outp(0x37a, M) , unde M adresa bitului... am incercat M=0x04 si se pare ca nu merge.

Si altceva, cum fac sa afisez valoarea hex a octetului citit de pe port? Adica sa vad ceva gen FF pt. toti pinii pusi la masa 00 pt. nici unul la masa etc.
__________________
Semnatura
 
SINEKT is offline    Reply With Quote
Old 09-04-2006, 04:13   #2 (permalink)
Registered User
 
Vivio's Avatar
 
Join Date: Jun 2002
Location: Acas'
Poate asta te ajută
__________________
Toate cele bune!
E8400Ninja B+DFI LP DK P35-T2RS2x2GB + 2x1GB Mushkin XP2-6400Zotac GTX260AMP2RAID0 2xSeagate ES.2 500GB + 7200.10 320GB
CM HAF 932Enermax Modu82+ 525WPhilips 170CAsus Xonar D2XKlipsch Promedia GMX A-2.1

FOLDING@HOME
 
Vivio is offline    Reply With Quote
Old 09-04-2006, 11:58   #3 (permalink)
Nick anterior: Alexe Emil
 
SINEKT's Avatar
 
Join Date: Jan 2005
Location: La epicentru
Nu, nu m-ajuta cu nimic... am zis ca nu stiu adresa bitului, ca eu stiu ca e bitul 5 si stiu ca trebuie pus pe 1 logic...
__________________
Semnatura
 
SINEKT is offline    Reply With Quote
Old 09-04-2006, 12:58   #4 (permalink)
Registered User
 
Vivio's Avatar
 
Join Date: Jun 2002
Location: Acas'
Buun, informaţia era ceva mai pitită. Aici e un program de test pt. bidirecţionalitatea LPT. De acolo am luat info de mai jos şi anume din programul scris în Pascal.

În mod uzual Printer Control bits este adresa 0x37A. Bitul 5 se va seta HIGH la valoarea 0x20 sau 100000(binar)

Pentru a citi de pe portul de date outp(0x378, M). Aici e un program în C pt. inspiraţie.

{---------------------------------------------------------------}
{ Program : Checking LPT Printer Parallel Port }
{ Create : David Setya Atmaja (DSA) }
{ Date : 30 Maret 1998 }
{ Reference : Cek LPT Port - Buku 'Mikrocontroler MC-68705-U3'}
{ Penerbit : Dinastindo }
{ Pengarang : Busono }
{ Last modified : 1 Agustus 1999 }
{===============================================================}
{ LPT_1 LPT_2 LPT_3 Operasi Keterangan }
{ $3BC $378 $278 (R)W 8 bit Data Port (DP)}
{ $3BD $379 $279 R 6 bit Status (PS) }
{ $3BE $37A $27A R/W 6/4 bit Control (PC)}
{===============================================================}
{ DP = Data Port : }
{ (Pin 2) DP_0 = Data bit 0 }
{ (3) DP_1 = Data bit 1 }
{ (4) DP_2 = Data bit 2 }
{ (5) DP_3 = Data bit 3 }
{ (6) DP_4 = Data bit 4 }
{ (7) DP_5 = Data bit 5 }
{ (8) DP_6 = Data bit 6 }
{ (9) DP_7 = Data bit 7 }
{---------------------------------------------------------------}
{ PC = Printer Control bits : }
{ (Pin 1) PC_0 = Strobe (Inverting) }
{ (14) PC_1 = AutoFeed (Inverting) }
{ (16) PC_2 = Init }
{ (17) PC_3 = Select In (Inverting) }
{ PC_4 = IRQ_7 Enable (tidak dikeluarkan ke terminal DB-25) }
{ PC_5 = Direction (tidak dikeluarkan ke terminal DB-25) }
{ PC_6-PC_7 = Spare (Not used) }
{---------------------------------------------------------------}
{ PS = Printer Status bits : }
{ PS_0 - PS_1 = Spare (Not used) }
{ PS_2 = IRQ_7 (Internal use) }
{ (15) PS_3 = Error }
{ (13) PS_4 = Select }
{ (12) PS_5 = Paper End }
{ (10) PS_6 = Acknowledge }
{ (11) PS_7 = Busy (Inverting) }
{---------------------------------------------------------------}
{ (18..25) Ground }
{===============================================================}
__________________
Toate cele bune!
E8400Ninja B+DFI LP DK P35-T2RS2x2GB + 2x1GB Mushkin XP2-6400Zotac GTX260AMP2RAID0 2xSeagate ES.2 500GB + 7200.10 320GB
CM HAF 932Enermax Modu82+ 525WPhilips 170CAsus Xonar D2XKlipsch Promedia GMX A-2.1

FOLDING@HOME
 
Vivio is offline    Reply With Quote
Old 09-04-2006, 13:23   #5 (permalink)
Nick anterior: Alexe Emil
 
SINEKT's Avatar
 
Join Date: Jan 2005
Location: La epicentru
Quote:
Originally Posted by vivio
Aici e un program de test pt. bidirecţionalitatea LPT.
Nu m-am prins ce face, ca la mine nu face nimic. Nici nu scrie nici nu citeste. Si mie NU asta imi trebuie, imi trebuie cum fac sa afisez in C ce se citeste. Stiu ca parca se prelua cu printf valoarea hex, dar nu mai stiu cum.

Am gasit cum se facea afisarea:

unsigned char value;
value = _inp(0x378);
Sleep(20);
printf("Value returned = 0x%02X \n",value);


Dar inca nu nimeresc care e bitul pt. schimbarea directiei
__________________
Semnatura

Last edited by SINEKT; 09-04-2006 at 14:16..
 
SINEKT is offline    Reply With Quote
Old 09-04-2006, 15:20   #6 (permalink)
Nick anterior: Alexe Emil
 
SINEKT's Avatar
 
Join Date: Jan 2005
Location: La epicentru
Nu pricep de ce nu merge. portul de control are adresa 37A, bitul care trebuie setat ca sa activezi directia de intrare e 5, adica 0x20 si totusi nu merge. Iata si codul:


#include <iostream.h>
#include <stdafx.h>
#include <conio.h>
#include <stdio.h>
#include <Windows.h>

void main (void)
{

unsigned char value;
_outp(0x37a,0x20);

while (1<2)
{

value = _inp(0x378);
printf("Value returned = 0x%02X \n",value);
Sleep(200);

}
};
__________________
Semnatura
 
SINEKT is offline    Reply With Quote
Old 09-04-2006, 23:21   #7 (permalink)
Registered User
 
Vivio's Avatar
 
Join Date: Jun 2002
Location: Acas'
Păi ce SO ai? În WinXp nu ai acces direct la portul paralel spre exemplu. În win98 ai. Tu sigur ai un port paralel bidirecţional?

Pentru a verifica că ai acces la portul LPT înearcă mai întâi să scrii pe portul de date ceva. Apoi te pui pe setat biţi de control & so on.
__________________
Toate cele bune!
E8400Ninja B+DFI LP DK P35-T2RS2x2GB + 2x1GB Mushkin XP2-6400Zotac GTX260AMP2RAID0 2xSeagate ES.2 500GB + 7200.10 320GB
CM HAF 932Enermax Modu82+ 525WPhilips 170CAsus Xonar D2XKlipsch Promedia GMX A-2.1

FOLDING@HOME
 
Vivio is offline    Reply With Quote
Old 09-04-2006, 23:49   #8 (permalink)
Nick anterior: Alexe Emil
 
SINEKT's Avatar
 
Join Date: Jan 2005
Location: La epicentru
Chestia cu XP e prima treaba pe care am rezolvat-o cu un dll in system32.

Si merge sa scriu, am scris numere pe un afisor led... dar vad ca nu pot sa-l fac sa citeasca. Presupun ca trebuie sa pun pinul de date la masa ca sa ii schimb starea, nu?
__________________
Semnatura
 
SINEKT is offline    Reply With Quote
Old 10-04-2006, 00:59   #9 (permalink)
Registered User
 
Vivio's Avatar
 
Join Date: Jun 2002
Location: Acas'
Mda, fii curajos De preferat să nu fie portul LPT al pc-ului de bază.
LPT eu am folosit pt. generare semnal, nu pt. citire.

AA, sper că vei pune unul din pinii de date la masă după ce vei seta bitul 5 de control.
__________________
Toate cele bune!
E8400Ninja B+DFI LP DK P35-T2RS2x2GB + 2x1GB Mushkin XP2-6400Zotac GTX260AMP2RAID0 2xSeagate ES.2 500GB + 7200.10 320GB
CM HAF 932Enermax Modu82+ 525WPhilips 170CAsus Xonar D2XKlipsch Promedia GMX A-2.1

FOLDING@HOME
 
Vivio is offline    Reply With Quote
Old 10-04-2006, 15:53   #10 (permalink)
Nick anterior: Alexe Emil
 
SINEKT's Avatar
 
Join Date: Jan 2005
Location: La epicentru
Mda, totusi se pare ca se incapataneaza sa nu mearga. Am incercat chiar in loc de punere la masa sa pun tensiune (intre masa si pin de date). Nu vrea si pace. Si inca un lucru. Am luat de pe oDC niste utilitare de "urmarit" portul, adica iti arata la ce pini ai 0 si la care 1. Dupa ce setez bitul 5 din portul de control, softurile respective indica ca acesta ramane totusi la 0. Si am folosit mai multe programele, nu e numai unul singur, toate arata 0 la bitul respectiv...
__________________
Semnatura
 
SINEKT is offline    Reply With Quote
Old 10-04-2006, 16:37   #11 (permalink)
RAN
Registered User
 
Join Date: Mar 2004
Portul paralel standard e unidirectional, se pot folosi ca intrari doar pinii speciali de control. Incerarca intai sa-i citesti p-aia.
Poate nu l-ai setat ECP/EPP din bios, sau poate dll-ul pe care l-ai pus nu suporta citirea.
 
RAN is offline    Reply With Quote
Old 10-04-2006, 17:20   #12 (permalink)
Nick anterior: Alexe Emil
 
SINEKT's Avatar
 
Join Date: Jan 2005
Location: La epicentru
Da, asta era !! Mersi mult RAN, uitasem complet de setarea din BIOS...

aaaa... inca o problema
Pt. secventa urmatoare de cod, ce pun in loc de EXPRESIE ca sa reprezinte valoarea FD, de exemplu Am incercat deja 'FD' si nu merge...

value = _inp(0x378);
printf("Value returned = 0x%02X \n",value);
Sleep(100);
if ( value == <EXPRESIE> )
{
system("C:\\alarm.wav");
};
__________________
Semnatura

Last edited by SINEKT; 10-04-2006 at 21:36..
 
SINEKT is offline    Reply With Quote
Old 11-04-2006, 10:31   #13 (permalink)
RAN
Registered User
 
Join Date: Mar 2004
0xfd
 
RAN is offline    Reply With Quote
Old 11-04-2006, 22:08   #14 (permalink)
Nick anterior: Alexe Emil
 
SINEKT's Avatar
 
Join Date: Jan 2005
Location: La epicentru
am incercat si nu merge am rezolvat folosind o variabila INT:

int x;
x = value;

si mai departe if x=255 (pt. FF) then bla bla
__________________
Semnatura
 
SINEKT is offline    Reply With Quote
Advertisment
Reply

  Computer Games Forum > Tech > Software

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is Off
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On



All times are GMT +2. The time now is 02:20.


This site is copyrighted ©1997 - 2009, Computer Games Online SRL