Hola!
Aqui, como siempre con preguntas raras.
Como he mencionado en otros hilos uso la biblioteca TComPort para hacer mis interfaces seriales con delphi 7. Siempre la he usado con aplicaciones de windows y su interface grafica sin problemas pero...ahora necesito que el componente de comunicacion (ComPort) se encapsule en una DLL para ser usado desde otro programa (vb.net o c#). Ya he creado la DLL y esta me funciona sin problemas para configurar los ajustes del puerto, abrir y cerrar el puerto pero tengo problemas para almacenar y recuperar los ajustes configurados al puerto (Baudios, Bits, Paridad, Handshacking, etc) me aparece la clasica ventana de error.....
Explico:
ComPort posee una propiedad llamada
StoreSettings la cual permite guardar los datos de configuracion si se han cambiado y otra llamada
LoadSettings que nos permite recuperar los ultimos ajustes. Estos son guardados en un archivo INI o en el registro de windows segun seleccion.
Cita:
Storing and loading settings
Application can easily store and load serial port settings using StoreSettings and LoadSettings methods. Settings can be stored into configuration file or registry. StoredProps property determines which properties need to be stored.
Example (Registry)
begin
// store settings to registry(Almacena ajustes)
ComPort1.StoreSettings(stRegistry, '\HKEY_LOCAL_MACHINE\Software\ComPortTest');
// load settings (recupera ajustes)
ComPort1.LoadSettings(stRegistry, '\HKEY_LOCAL_MACHINE\Software\ComPortTest');
end;
Example (Configuration file)
begin
// store settings to configuration file (Almacena ajustes)
ComPort1.StoreSettings(stIniFile, 'c:\ComPortTest.ini');
// load settings (recupera ajustes)
ComPort1.LoadSettings(stIniFile, 'c:\ComPortTest.ini');
end;
|
Pues bien yo he hecho esto usando los INI:
Código Delphi
[-]
procedure GuardarConfiguracion(archivo: PChar); stdCall;
begin
PuertoS.StoreSettings(stIniFile, strPas(Archivo)); end;
procedure CargarConfiguracion(archivo: PChar); stdCall;
begin
PuertoS.LoadSettings(stIniFile, strPas(Archivo));
end;
Actualmente estoy probando desde delphi el uso de esta dll
Código Delphi
[-]
procedure TForm1.btnStoreCFGClick(Sender: TObject);
var
Archivo: string;
begin
Archivo := ExtractFilePath(ParamStr(0)) + 'CommCfg.ini';
GuardarConfiguracion(pchar(Archivo));
end;
procedure TForm1.btnLoadCFGClick(Sender: TObject);
var
Archivo: string;
begin
Archivo := ExtractFilePath(ParamStr(0)) + 'CommCfg.ini';
CargarConfiguracion(pchar(Archivo));
end;
Tambien segun el mensaje que aparece al iniciar una DLL
Código Delphi
[-]
library comScale;
uses
ShareMem,
SysUtils,
Classes,
Forms,
Dialogs,
CPort;
{$R *.res}
El mensaje de Horror:
Código Delphi
[-]
---------------------------
Debugger Exception Notification
---------------------------
Project UsaComScale.exe raised exception class EComPort with message 'Failed to store settings'. Process stopped. Use Step or Run to continue.
---------------------------
OK Help
---------------------------
---------------------------
Application Error
---------------------------
Exception EComPort in module ComScale.dll at 0006326E.
---------------------------
Aceptar
---------------------------
¿Alguna sugerencia? Como siempre estoy abierto a todas las propuestas que sirvan para resolver esto. Gracias.