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
[-]
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; ReadTotalTimeoutMultiplier := 0; ReadTotalTimeoutConstant := 1000; WriteTotalTimeoutMultiplier := 0; WriteTotalTimeoutConstant := 1000; 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;
procedure CerrarPuerto;stdcall;
begin
if ComFile <> INVALID_HANDLE_VALUE then
begin
CloseHandle(ComFile);
ComFile:= INVALID_HANDLE_VALUE;
end;
end;