Haz una pregunta
  Foros de Electrónica » Diseño digital » Interfaces y Programación
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

04/04/2011 #21

Avatar de Unikfriend

Hi Calcasla,
Es indispensable utilizar el VB6?
intente utilizar VC, el puerto es transparentes accesando como LPT1.


Código PHP:
void receive_string_LPT(unsigned char *a)
{
DWORD bytesRead;
UCHAR rxData 1;
unsigned char c;
c=0//inicializa variable
do{
ReadFile(hParallel, &rxDatasizeof(rxData), &bytesReadNULL); //lee dato del puerto
*(a+c) = rxData//agrega dato a la cadena
c++; //incrementa el contador de c
}while(rxData != 0x0A && rxData != 0x0); //mientras no sea un Return o nulo
}
void send_byte_LPT(unsigned char Data)
{
DWORD bytesSent;
UCHAR txData;
txData Data//asigna valor a trasmitir
WriteFile(hParallel, &txDatasizeof(txData), &bytesSentNULL); //envia byte por puerto
}
unsigned char init_LPT(void)
{
COMMTIMEOUTS parallelTimeouts//estatus de puerto
LPCWSTR gszPort;
gszPort LPT;
SetLastError(0); //cancela ultimo error
hParallel CreateFilegszPort//crea connection a comm
GENERIC_READ GENERIC_WRITE
0
0
OPEN_EXISTING,
0//FILE_FLAG_OVERLAPPED,
0);
if(
hParallel == INVALID_HANDLE_VALUE)return(0); //envia error
parallelTimeouts.ReadIntervalTimeout MAXDWORD;
parallelTimeouts.ReadTotalTimeoutMultiplier 0;
parallelTimeouts.ReadTotalTimeoutConstant 0;
parallelTimeouts.WriteTotalTimeoutMultiplier 0;
parallelTimeouts.WriteTotalTimeoutConstant 0;
SetCommTimeouts(hParallel, &parallelTimeouts);
return(
1); //envia OK

05/04/2011 #22


Unikfriend dijo: Ver Mensaje
Hi Calcasla,
Es indispensable utilizar el VB6?
intente utilizar VC, el puerto es transparentes accesando como LPT1.


Código PHP:
void receive_string_LPT(unsigned char *a)
{
DWORD bytesRead;
UCHAR rxData 1;
unsigned char c;
c=0//inicializa variable
do{
ReadFile(hParallel, &rxDatasizeof(rxData), &bytesReadNULL); //lee dato del puerto
*(a+c) = rxData//agrega dato a la cadena
c++; //incrementa el contador de c
}while(rxData != 0x0A && rxData != 0x0); //mientras no sea un Return o nulo
}
void send_byte_LPT(unsigned char Data)
{
DWORD bytesSent;
UCHAR txData;
txData Data//asigna valor a trasmitir
WriteFile(hParallel, &txDatasizeof(txData), &bytesSentNULL); //envia byte por puerto
}
unsigned char init_LPT(void)
{
COMMTIMEOUTS parallelTimeouts//estatus de puerto
LPCWSTR gszPort;
gszPort LPT;
SetLastError(0); //cancela ultimo error
hParallel CreateFilegszPort//crea connection a comm
GENERIC_READ GENERIC_WRITE
0
0
OPEN_EXISTING,
0//FILE_FLAG_OVERLAPPED,
0);
if(
hParallel == INVALID_HANDLE_VALUE)return(0); //envia error
parallelTimeouts.ReadIntervalTimeout MAXDWORD;
parallelTimeouts.ReadTotalTimeoutMultiplier 0;
parallelTimeouts.ReadTotalTimeoutConstant 0;
parallelTimeouts.WriteTotalTimeoutMultiplier 0;
parallelTimeouts.WriteTotalTimeoutConstant 0;
SetCommTimeouts(hParallel, &parallelTimeouts);
return(
1); //envia OK

Muchas gracias, pero a lo que me refería era poder hacerlo con un adaptador USB - Paralelo.
05/04/2011 #23

Avatar de Unikfriend

Hi Calcasla,
lo que entiendi es que quieres utilizar el adaptador
USB-Paralelo para controlar 16 puertos I/O.
Cual sería la frecuencia del ciclo de lectura-escritura?

05/04/2011 #24


Unikfriend dijo: Ver Mensaje
Hi Calcasla,
lo que entiendi es que quieres utilizar el adaptador
USB-Paralelo para controlar 16 puertos I/O.
Cual sería la frecuencia del ciclo de lectura-escritura?

¡Hola!
Antes que todo muchas gracias por la ayuda. En realidad no deseo leer 16 entradas por USB - Paralelo, sólo deseo usar el USB - Paralelo para manejar las salidas por defecto y las entradas por defecto que posee, el problema es que no se puede acceder a él a través de la IO.DLL, y ahí radica el inconveniente. Cualquier ayuda es bienvenida.

Gracias
06/04/2011 #25

Avatar de Unikfriend

Hi,

El adaptador USB-paralelo no venia con su propias DLL?

06/04/2011 #26


Unikfriend dijo: Ver Mensaje
Hi,

El adaptador USB-paralelo no venia con su propias DLL?

No. Ese es el problema.
07/04/2011 #27

Avatar de Black Tiger1954

A mi criterio, se puede hacer siempre y cuando, consigas un adaptador como el que puse en una respuesta anterior que genera un puerto virtual paralelo. Si no, no creo que funcione.
07/04/2011 #28

Avatar de Unikfriend

Ok,pues si es un driver generico debera ser mas facil de implementar.
al conectar el adaptador, en el administradores de dispositivos debe aparecer
un puerto LPT1, si entras a ver sus propiedades debe indicar que controlador
utiliza en detalles del controlador, algo asi:
C:\WINDOWS\System32\DRIVERS\usbport.sys

07/04/2011 #29

Avatar de Black Tiger1954

al conectar el adaptador, en el administradores de dispositivos debe aparecer
un puerto LPT1
No sé si leíste todo el hilo Unikfriend, pero justamente por el tipo de adaptador, no aparece el LPT1
Son adaptadores que solo permiten impresión y no generan realmente un puerto virtual.
07/04/2011 #30

Avatar de Unikfriend

hi BlackTiger,
si lo lei completo, a lo mejor entendi mal jiji
lo que entendi es que no aparece la direccion fisica
y por eso no puede usar el IO.dll. Pero al conectar
el USB debe aparecer algun dispositivo
y debe indicar un controlador asociado.

Pero definitivamente yo haria lo que tu sugieres,
si un componente causa tantos problemas no me casara
con el... hay que cambiarlo por otro jiji

13/05/2011 #31


Lectura con Inpout32.dll
Unikfriend dijo: Ver Mensaje
hi BlackTiger,
si lo lei completo, a lo mejor entendi mal jiji
lo que entendi es que no aparece la direccion fisica
y por eso no puede usar el IO.dll. Pero al conectar
el USB debe aparecer algun dispositivo
y debe indicar un controlador asociado.

Pero definitivamente yo haria lo que tu sugieres,
si un componente causa tantos problemas no me casara
con el... hay que cambiarlo por otro jiji

Saludos a todos. Espero hayan estado bien todo este tiempo. Saben, yo acostumbro a trabajar con IO.dll, pero ahora estoy usando la inpout32.dll, he tenido problemas para leer los pines del DB25 de entrada (pin 10, 12, 13 y 15). Con la IO.dll puedo tener en un label la información, cuando se coloca un entrada a GND, esta queda en 0.

Este es un fragmento de como se lee con IO.dll:

Estado(0) = Lectura And &H8 '= 00001000 en Binario
Estado(1) = Lectura And &H10 '= 00010000 en Binario
Estado(2) = Lectura And &H20 '= 00100000 en Binario
Estado(3) = Lectura And &H40 '= 01000000 en Binario

¿Alguien sabe cómo leerlos con la inpout32.dll?, yo sé que sería con la función Inp, pero no sé cómo traspasar eso a 4 labels que me muestren los estados en 0 ó 1 como la hago con IO.dll.

Les aprovecho de dejar un programa bien sencillo de inpout32.dll que funciona incluso en Windows 7, ahí se puede leer, pero no entiendo bien la manera, agradecería vuestra ayuda y espero les sirva el software, es de mucha utilidad.
Muchas gracias, saludos.
Archivos Adjuntos
Tipo de Archivo: rar VB_test_app.rar (1,7 KB (Kilobytes), 10 visitas)
18/05/2011 #32

Avatar de AlvaroCastellar

comunicacion serial
hola tengo un algoritmo de logica difusa en lenguage C con 2 entradas y una salida
lo que deseo hacer ahora es recibir ests dos entradas por el puerto serial, procesarlas y entregar la salida por el mismo puerto serial. uso visual studio 2008 express edition, y tengo windows 7 enterprise. alguien podria decirme como altero mi codigo en C para que haga esta recepcion y transmision???
18/05/2011 #33

Avatar de Unikfriend

Hi Alvaro!

Que parte es la que se te dificultad?
porque no pones el codigo para verlo.
18/05/2011 #34

Avatar de AlvaroCastellar

cmunicacion serial
hola, gracias por tu atencion. en realidad soy nuevo programando y hay muchas cosas que aun no entiendo, este algoritmo lo cree, leyendo y haciendo. soy mas matematico que nada, por eso todos los conceptos de transmision de datos me son muy ajenos. estoy en realidad en ceros con este tema, lo que quiero es leer del puerto serial in1 e in2, y dar el valor crisp porel mismo puerto:
18/05/2011 #35

Avatar de Unikfriend

Hi Alvaro,
y quien te entrega los valores in1 e in2?
tiene algun formato en especial?

Solamente ocupas tres funciones

void receive_string_COM(unsignedchar *a)
{
DWORD bytesRead;
UCHAR rxData = 1;
unsignedchar c;
c=0;
//inicializa variable
do{
ReadFile(hCom, &rxData,
sizeof(rxData), &bytesRead, NULL); //lee dato del puerto
*(a+c) = rxData; //agrega dato a la cadena
c++; //incrementa el contador de c
}while(rxData != 0x0A && rxData != 0x0); //mientras no sea un Return o nulo
}
void send_byte_COM(unsignedchar Data)
{
DWORD bytesSent;
UCHAR txData;
txData = Data;
WriteFile(hCom, &txData,
sizeof(txData), &bytesSent, NULL); //envia byte por puerto
}
unsignedchar init_COM(void)
{
DCB dcb;
//Keeps Port Configuration
int portSuccess; //estatus de puerto
LPCWSTR gszPort;
gszPort = PORT;
hCom = CreateFile(
gszPort,
//crea connection a comm
GENERIC_READ | GENERIC_WRITE,
0,
0,
OPEN_EXISTING,
0,
//FILE_FLAG_OVERLAPPED,
0);
if (hCom == INVALID_HANDLE_VALUE)return(0); //envia error
//Get port status
portSuccess = GetCommState(hCom, &dcb); //lee parametros
if(!portSuccess)return(0); //envia error
//Fill in DCB structure
dcb.BaudRate = CBR_9600; //Buad rate de transmision
dcb.ByteSize = 8; //8 bit de dato
dcb.Parity = NOPARITY; //paridad non
dcb.StopBits = ONESTOPBIT; //1 bit de paro
dcb.fDtrControl = 2;
portSuccess = SetCommState(hCom, &dcb);
//escribe parametros
if(!portSuccess)return(0); //envia error
return(1); //envia OK
}
18/05/2011 #36

Avatar de AlvaroCastellar

in1 e in2 son tipo float
la idea es tomarlos de dos sensores
hacer la comunicacion serial mediante un PIC y controlar una planta de mezclado

estoy trabajando en pasarlo a CUDA-C para que trabaje en paralelo sobre eso he encontrado bastante material, pero no he entendido nada de la comunicacion serial en lenguaje C. la verdad soy un poco cerrado para este tema jajaja

por cierto muchisimas gracias por tu atencion unikfriend
estoy corriendo un poco con esto porque es parte de mi proyecto de grado
19/05/2011 #37

Avatar de AlvaroCastellar

unikfriend una pregunta, para ese algoritmo que me diste que librerias debo agregar?? algun encabezado en especial?? es que hay algunos comandos que no me reconoce por ejemplo tu colocas unsignedchar pegado y yo lo tuve que separar para que me compilara pero por ejemplo me da esta lista de errores:

ReadFile(hCom, &rxData, sizeof(rxData), &bytesRead, NULL); //hCom identificador no declarado

gszPort = PORT; //PORT identificador no declarado

disculpa mis preguntas elementales pero es que soy muy nuevo programando
19/05/2011 #38

Avatar de Unikfriend

Hi Alvaro;
coloca estas declaraciones con las variables globales

#define
PORT TEXT("Com1") //Com1=0x3f8, Com2=0x2f8, Com3=0x3e8, Com4=0x2e8
HANDLE hCom;


Respuesta
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Buscar más temas sobre:
Lupa Interfaces y Programación

Lenguajes de programación, gestión y manejo de puertos

Cerrar
Foros de Electrónica » Diseño digital » Interfaces y Programación

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.