Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > ASM y Microcontroladores
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

 
 
Herramientas Buscar en Tema Desplegado
  #3  
Antiguo 03-04-2009
clavijo83 clavijo83 is offline
Registrado
 
Registrado: abr 2009
Posts: 8
Poder: 0
clavijo83 Va por buen camino
hola Federico.

bueno lo tengo aislado porque hay muchos programas que usan esta DLL, lo que estoy haciendo es mi propia version de la DLL, por lo que tengo que dejarle las mismas funciones y procedimientos o mas bien dejarle los mismo nombres.

estuve haciendo la DLL en visual para usar el MSComm y realmente habian mas problemas, en algunos lados me reconocia la DLL en otros no. por lo que opte a hacerla en delphi que es donde esta hecha actualmente la DLL original.

porque dices que mi codigo esta incompleto? solo hace falta ahi la estructura de la funcion "AbrirPuerto". aquie te la agrego.

Código Delphi [-]
procedure AbrirPuerto(Puerto,velocidad,paridad,tamano,parada: String);stdcall;
const
  RxBufferSize = 256;
  TxBufferSize = 256;
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);

  if ComFile = INVALID_HANDLE_VALUE then
    begin
    Result := False
    end
  else
    begin
    Result := True;
    end;

 Result := True;

  if not SetupComm(ComFile, RxBufferSize, TxBufferSize) then
    Result := False;

  if not GetCommState(ComFile, DCB) then
    Result := False;

  //definir la configuracion del Puerto

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

  if not BuildCommDCB(@Config[1], DCB) then
    Result := False;

  if not SetCommState(ComFile, DCB) then
    Result := False;

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

  if not SetCommTimeouts(ComFile, CommTimeouts) then
    Result := False;

    SetProcessWorkingSetSize(GetCurrentProcess, $FFFFFFFF, $FFFFFFFF);
end;

estuve tratando cambiandole el tipo de dato a PChar y bueno al hacer la lectura la primera vez no sale nada, hago la lectura nuevamente y se sale solo de la aplicacion.
Responder Con Cita
 



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Error al LLamar un DLL, "memoria Insuficiente" clavijo83 Varios 0 02-04-2009 18:34:50
Lectura Hexadecimal desde el puerto serie djemix Varios 20 09-12-2007 15:22:55
Particiones en "solo lectura " con cd_live de knoppix Diavlo Linux 1 03-10-2007 04:06:26
error de sql server "Informacion de columna clave insuficiente" jhcaboverde Conexión con bases de datos 1 17-08-2007 19:40:31
Fast Report "Fuera de memoria" BECERRA Impresión 0 25-12-2005 12:40:29


La franja horaria es GMT +2. Ahora son las 04:25:53.


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