Ver Mensaje Individual
  #3  
Antiguo 29-03-2022
Avatar de cesarsoftware
cesarsoftware cesarsoftware is offline
Miembro
 
Registrado: nov 2006
Posts: 241
Reputación: 18
cesarsoftware Va por buen camino
Smile

Buenas Netfali.
Que majo eres, siempre dispuesto a ayudar, Gracias.
El problema es que no se si es convertido bien la funcion, sobre todo por el tema del puntero a la estructura &MelIoctlData.
No da problema de compilacion, y la funcion me devuelve un error, con lo que en teoria, al menos, la libreria funciona y no "explota"
La constante DEVICETYPE_TCP debe estar en otro fichero que por cierto no encuentro, no se si sera un tipo fijo en algun include .H de linux.
De momento le he asignado un valor para salir del paso sabiendo que me falta esa constante.
Tambien veo que ADR_MACHINE es como un array para C++ pero como no se como pasarle ese "puntero" tambien he hecho mal y como es un longorwd le he puesto a 1 hasta aprender a mandarle ese tipo de array.
Las otras constantes si estan sacadas del manual del fabricante pero DEVICETYPE_TCP no esta en el manual y es un valor OBLIGADO Y NECESARIO por ellos. Algun dia lo encontrare o les llamare a los japaneses, jejeje.
Código Delphi [-]
const
  DEVICETYPE_TCP: word = 1;
  ADR_MACHINE: LongWord = 1;
  DEV_SET_COMMADDRESS: LongWord = $FFF;             // 4095
  ME_SYSFUNC_IOCTL_FUNCTION: LongWord = $80020132;  // Function error
  ME_SYSFUNC_IOCTL_ADDR: LongWord = $80020190;      // Address error
Como veras la funcion en C++ es:
Código:
dwStatus = melIoctl(NULL, ADR_MACHINE(1), DEV_SET_COMMADDRESS, &MelIoctlData);
Mi pregunta es, ¿asi esta bien convertida a Delphi?
Código Delphi [-]
dwStatus := melIoctl(Self.Handle, ADR_MACHINE, DEV_SET_COMMADDRESS, tMELDEVICEDATA(MelIoctlData));
¿He convertido bien las estructuras?
Código:
struct MELDEVICEDATA{
DWORD dwDeviceType; // Device type (Set DEVICETYPE_TCP.)
APIDEVICE uniDeviceInfo; // Device information
}
struct APIDEVICE {
struct Tcp {
char IPAddr[16]; // IP address (e.g. “192.168.100.1”)
long lPortNo; // Port No. (Set 683 (fixed value).)
char dummy[12]; // Reserved
}
}
Código Delphi [-]
type APIDEVICE = record
  IPAddr: ansistring;             // IP address (e.g. “192.168.100.1”)
  lPortNo: word;                  // Port No. (Set 683 (fixed value).)
  dummy: array[0..11] of UINT16;  // array of supported bus controllers
end;

type MELDEVICEDATA = packed record
  dwDeviceType: LongWord;         // Device type (Set DEVICETYPE_TCP.)
  uniDeviceInfo: APIDEVICE;       // Device information
end;

type tMELDEVICEDATA = ^MELDEVICEDATA;

Espero ansiosamente tus comentos. ;?
__________________
Disfruta de la vida ahora, vas a estar muerto mucho tiempo.

Última edición por cesarsoftware fecha: 29-03-2022 a las 12:56:38. Razón: Amplio la informacion de constantes
Responder Con Cita