Windows API untuk LPTn pelabuhan

A

andre_teprom

Guest
Hi All,

Aku nedd untuk mengakses port paralel jendela menggunakan API, seperti biasanya dilakukan dengan port serial (CreateFile, FileOpen, dll ..).

Dingin seseorang memberi saya beberapa contoh potongan program ini?Bisa prefereably di Delphi, Borland C .

Thanks in advance.
 
Saya menemukan link ini:

http://msdn2.microsoft.com/en-us/library/aa363198 (VS.85). aspx

Yang disediakan oleh Microsoft, tetapi tidak memiliki cukup informasi tentang cara menggunakan fungsi ini di LPT port.

Bisa tolong seseorang bantu saya pada query ini?

Salam
 
Hai.Look here:
\ http://www.lvr.com/parport.htm
\ http://www.beyondlogic.org/index.html # PARALEL

Salam.

 
Hi Peter,
the port, but handle
it.

Saya terima kasih atas jawabannya, tapi masalahnya saya tidak mengijinkan
port, tapi menanganinya.Mari saya jelaskan lebih baik: Ketika saya melampirkan USB / LPT converter di Laptop, perangkat LPT3 (atau LPT4, tergantung dari slot USB yang digunakan) muncul di Hardware manager.Jika saya menggunakan Legacy port, LPT1 atau LPT2, alamat basis terkenal - 0x278 atau 0x378 - tetapi langsung I / O akses; dan aku tidak suka melakukannya dengan cara ini.Cara terbaik - saya kira - adalah dengan menggunakan fungsi API Windows, karena kode sumber dapat independen dari versi Windows yang digunakan.

Salam.

Andre.

 
Hanya untuk maju dan berbagi informasi:

Saya menerima jawaban dari MOSCHIP produsen.
Aku tidak punya waktu untuk menguji, tetapi tampaknya bekerja.

Berikut:Byte.cpp

Kode:

# include <windows.h>

# include <stdio.h>

# include <conio.h>

# include <winioctl.h>

# include "byte.h"

# include "winerror.h"////////////////////////////////////////////////// //////////////////////////////////////////

/ / Prototipe

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

unsigned char WriteByte (HANDLE hDevice, pRegIndex unsigned char, unsigned char pRegValue);unsigned char ReadByte (HANDLE hDevice, unsigned char pRegIndex);////////////////////////////////////////////////// //////////////////////////////////////////

/ UTAMA

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

void main ()

(

HANDLE h;

char portname [10];

int port = 1;

unsigned char * Buffer = NULL;

unsigned char Nilai;

FILE * byteLog = NULL;/ / Get the LPT Port No dari pengguna dan membuka port ..

fflush (stdin);

printf ( "Masukkan nomor LPT untuk membuka (1/2/3):");

scanf ( "% d", & port);

sprintf (portname, "LPT% d", port);/ / Metode untuk membuka Driver Handle

/ / Portname tersedia dari Device Manager dan ini tidak dapat hardcoded.h = CreateFile (portname, GENERIC_READ | GENERIC_WRITE,

FILE_SHARE_READ, NULL,

OPEN_EXISTING,

FILE_ATTRIBUTE_NORMAL, NULL);

if (h == INVALID_HANDLE_VALUE)

(

printf ( "\ nUNABLE UNTUK TERBUKA UNTUK TANGANI LPT port. Errorcode:% d \ n", GetLastError ());

return;

)/ / Mengaktifkan modus port untuk BYTE

/ / Prosedur untuk mengaktifkan modus SPPValue = ReadByte (h, PP_ECR); / / Baca Nilai dari PP_ECR Register

printf ( "Sebelum pengaturan Mode BYTE .. \ n");

printf ( "ECR Register:% x \ n", Nilai);

Nilai & = 0x1F; / / Tulis 000x xxxx di ECR Daftar

WriteByte (h, PP_ECR, Nilai); / / Tulis Nilai untuk PP_ECR Untuk Mengaktifkan SPP Mode

Value = ReadByte (h, PP_ECR);

printf ( "Setelah pengaturan Mode BYTE .. \ n");

printf ( "ECR Register:% x \ n", Nilai);/ / Ioctl kode untuk mengakses data port, status port, dan port kontrol/ / Membaca status register

/ / Status Register adalah HANYA MEMBACA

Value = ReadByte (h, PP_DSR);

printf ( "DSR Register:% x \ n", Nilai);/ / Membaca Control Register

Value = ReadByte (h, PP_DCR);

printf("DCR Register : %x\n", Value);

/ / Membaca dari Data Register

Value = ReadByte (h, PP_DATA);

printf ( "Data Registrasi:% x \ n", Nilai);/ / Menulis ke Data Register

Nilai = 0x56; / / Nilai yang akan ditulis ke Data Register

Value = WriteByte (h, PP_DATA, Nilai);/ / Membaca dari Data Register

Value = ReadByte (h, PP_DATA);

printf ( "Data Registrasi:% x \ n", Nilai);if (Buffer! = NULL)

delete [] Buffer, Buffer = NULL;

CloseHandle (h);

)////////////////////////////////////////////////// /////////////////////////////////////////

/ / Fungsi: WriteByte

/ / Module: Byte.exe

/ / Input: Menangani ke perangkat, register offset dan nilai yang akan ditulis.

/ / Returns: 1 jika berhasil lain 0.

/ / Catatan: writes nilai yang diberikan ke indeks offset register yang diberikan.

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

statis UCHAR WriteByte (HANDLE hDevice, UCHAR pRegIndex, UCHAR pRegValue)

(

ULONG BytesWritten = 0;

PORT_STRUCT Port;Port.m_nRegIndex = pRegIndex;

Port.m_nRegValue = pRegValue;if (! DeviceIoControl (hDevice,

IOCTL_PAR_PORT_WRITE,

& Port,

sizeof (Port),

NULL,

NULL,

& BytesWritten,

NULL)) (

printf ( "Gagal WriteByte dengan kode kesalahan:% d \ n", GetLastError ());

CloseHandle (hDevice);

exit (1);

)

return (UCHAR) BytesWritten;

)////////////////////////////////////////////////// /////////////////////////////////////////

/ / Fungsi: ReadByte

/ / Module: Byte.exe

/ / Input: Menangani ke perangkat, register indeks untuk membaca.

/ / Returns: Baca nilai.

/ / Catatan: Dibaca yang diberikan reg offset indeks dan mengembalikan nilai membaca.

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

statis UCHAR ReadByte (HANDLE hDevice, UCHAR pRegIndex)

(

ULONG BytesRead = 0;

PORT_STRUCT Port;Port.m_nRegIndex = pRegIndex;if (! DeviceIoControl (hDevice,

IOCTL_PAR_PORT_READ,

& Port,

sizeof (Port),

& Port,

sizeof (Port),

& BytesRead,

NULL)) (

printf ( "Gagal ReadByte dengan kode kesalahan:% d \ n", GetLastError ());

CloseHandle (hDevice);

exit (1);

)

kembali Port.m_nRegValue;

)
 

Welcome to EDABoard.com

Sponsor

Back
Top