Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   No puedo Abrir Puerto Serial mayores a COM9 (https://www.clubdelphi.com/foros/showthread.php?t=68321)

clavijo83 07-06-2010 22:32:45

No puedo Abrir Puerto Serial mayores a COM9
 
Hola a todos los foristas.

mi problema es el siguente, tengo una funcion que utilizo para abrir puerto Serial o puertos COM. dicha funcion me trabaja bien cuando abro los puertos del COM1 al COM9 pero al tratar de abrir un puerto mayor al COM9 ya sea un puerto COM10 o COM11 o COM20.. etc. no funciona.

porfavor si alguien sabe que puede ser agradeceria la ayuda.

este es el codigo de mi funcion.
Código Delphi [-]
{Procedimiento para abrir el puerto seleccionado y configurarlo}
function AbrirPuerto(Puerto,velocidad,paridad,tamano,parada: String):boolean;stdcall;
const
  RxBufferSize = 512;
  TxBufferSize = 512;
var
  DCB: TDCB;
  Config: string;
  CommTimeouts: TCommTimeouts;
  DeviceName: array[0..80] of Char;
begin

  cerrarpuerto;
  StrPCopy(DeviceName, (Puerto));

  ComFile := CreateFile(DeviceName, GENERIC_READ or GENERIC_WRITE, 0,  nil,OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL,  0);

  Config := 'baud=' + velocidad + ' parity=' + paridad + 'data=' + tamano + ' stop=' + parada;

  with CommTimeouts do
  begin
    ReadIntervalTimeout := 0; //no cambiar
    ReadTotalTimeoutMultiplier := 0;//no cambiar
    ReadTotalTimeoutConstant := 1000;//no cambiar
    WriteTotalTimeoutMultiplier := 0;//no cambiar
    WriteTotalTimeoutConstant := 1000;//no cambiar
  end;

  Result :=(ComFile <> INVALID_HANDLE_VALUE) and
            SetupComm(ComFile, RxBufferSize, TxBufferSize) and
            GetCommState(ComFile, DCB) and
            BuildCommDCB(@Config[1], DCB) and
            SetCommState(ComFile, DCB) and
            SetCommTimeouts(ComFile, CommTimeouts);

  showmessage('abrir Puerto:'+booltostr(result));
  keylog('Puerto COM Configurado Y Usado.');
end;

//Procedimiento para Cerrar el puerto
procedure CerrarPuerto;stdcall;
begin
  if ComFile <> INVALID_HANDLE_VALUE then
  begin
    CloseHandle(ComFile);
    ComFile:= INVALID_HANDLE_VALUE;
  end;
end;

delphi.com.ar 07-06-2010 23:03:44

Le pregunté al Tío Goole, y encontré esto: http://support.microsoft.com/kb/115831

rretamar 07-06-2010 23:25:24

Para acceso a puertos serie uso el componente Async Pro (es softare libre) y no tengo problemas en acceder a puertos > COM9.

http://sourceforge.net/projects/tpapro/

Te lo recomiendo. Además de tener muchísimas posibilidades, la documentación es muy pero muy completa. Y si tenés dudas puntuales con dicho componente, puedo ayudarte.

Saludos !


La franja horaria es GMT +2. Ahora son las 09:55:04.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi