Ver Mensaje Individual
  #1  
Antiguo 07-06-2010
clavijo83 clavijo83 is offline
Registrado
 
Registrado: abr 2009
Posts: 8
Reputación: 0
clavijo83 Va por buen camino
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;
Responder Con Cita