Writefile en winXP
Hola amigos
tengo esta funcioncilla que escribe una trama de datos en un puerto serial, el cual me funciona bien en Win9x
bool EnviaData(HANDLE idComDev, CByteArray *data )
{
DWORD bytesEscritos;
WriteFile(idComDev, data->GetData(), data->GetSize(), &bytesEscritos, NULL);
return 1;
}
El problemilla es en WinXP, simplemente no escribe en el puerto serial, la secuencia de ejecucion se detiene en la sentencia WriteFile(). Alguien podrÃa ayudarme por favor.. Gracias..
tengo esta funcioncilla que escribe una trama de datos en un puerto serial, el cual me funciona bien en Win9x
bool EnviaData(HANDLE idComDev, CByteArray *data )
{
DWORD bytesEscritos;
WriteFile(idComDev, data->GetData(), data->GetSize(), &bytesEscritos, NULL);
return 1;
}
El problemilla es en WinXP, simplemente no escribe en el puerto serial, la secuencia de ejecucion se detiene en la sentencia WriteFile(). Alguien podrÃa ayudarme por favor.. Gracias..
No se que puede ser, pero yo tengo algo parecido en WinXP y funciona correctamente. Esto transmite un archivo por el puerto serie.
do{
ReadFile(fichero, buf, 512, &BytesRead, NULL);
WriteFile(cable, &buf, BytesRead, &BytesWritten, NULL);
}while(BytesRead == 512);
A ver si es algun problema de configuracion del puerto. Yo tengo esto y funciona perfectamente, aunque no recuerdo si antes de cambiarlo me dio problemas:
COMMCONFIG configuracion;
DWORD talla;
GetCommConfig(cable, &configuracion, &talla);
configuracion.dcb.BaudRate = CBR_56000;
configuracion.dcb.ByteSize = 8;
SetCommConfig(cable, &configuracion, talla);
do{
ReadFile(fichero, buf, 512, &BytesRead, NULL);
WriteFile(cable, &buf, BytesRead, &BytesWritten, NULL);
}while(BytesRead == 512);
A ver si es algun problema de configuracion del puerto. Yo tengo esto y funciona perfectamente, aunque no recuerdo si antes de cambiarlo me dio problemas:
COMMCONFIG configuracion;
DWORD talla;
GetCommConfig(cable, &configuracion, &talla);
configuracion.dcb.BaudRate = CBR_56000;
configuracion.dcb.ByteSize = 8;
SetCommConfig(cable, &configuracion, talla);
Tambien pienso que es un problema de configuracion de puerto.. me envias el resto de tu codigo para compararlo con el mio..?
En windows XP y NT el manejo de hardware no se puede hacer en forma directa. Yo normalmente programo en assembler, las instrucciones in, out, son consideradas "privilegiadas" por el sistema operativo. Yo he escrito un programa en delphi par NT4.0 y para que pueda acceder a los puertos tuve que escribir un "device driver" (buscar en la red gwiopm ó giveio) . Luego de instalar este device driver como administrador, se le dá permiso al usuario y listo.
