Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Unterstüzung bei Codeübertragung C->Delphi (https://www.delphipraxis.net/181704-unterstuezung-bei-codeuebertragung-c-delphi.html)

Metschu 4. Sep 2014 07:28

Unterstüzung bei Codeübertragung C->Delphi
 
Hallo zusammen,

zur Kommunikation mit einem USB-CAN Modul bräuchte ich ein klein wenig Unterstützung bei der Codeübersetzung.
Senden - Empfangen auf dem CAN-Bus klappt ohne Probleme, nun möchte ich noch die Hardware-Infos aus dem Modul auslesen, bzw das was ich schon auslesen konnte "lesbar" machen.


Hier mal der Codeausschnitt:
Code:
typedef struct
{
DWORD m_dwSize; // Anzahl der Bytes dieser
// Struktur
tUcanHandle m_UcanHandle; // USB-CAN-Handle
BYTE m_bDeviceNr; // Gerätenummer
DWORD m_dwSerialNr; // Seriennummer
DWORD m_dwFwVersionEx; // Firmware Version
DWORD m_dwProductCode; // Hardware-Typ
} tUcanHardwareInfoEx;

UCANRET bRet;
tUcanHandle UcanHandle;
tUcanHardwareInfoEx HwInfoEx;
...
// USB-CANmodul initialisieren
bRet = UcanInitHardware (&UcanHandle, USBCAN_ANY_MODULE, NULL);
if (bRet == USBCAN_SUCCESSFUL)
{
memset (&HwInfoEx, 0, sizeof (HwInfoEx));
HwInfoEx.m_dwSize = sizeof (HwInfoEx);
// erweiterte Hardwareinformationen holen
bRet = UcanGetHardwareInfoEx2 (UcanHandle, &HwInfoEx,
NULL, NULL);
if (bRet == USBCAN_SUCCESSFUL)
{
TRACE1 ("product code = 0x%04X\n",                               // <-- hier wird der ausgelesene Wert umgewandelt
HwInfoEx->m_dwProductCode & USBCAN_PRODCODE_MASK_PID);
// prüfen, ob zwei CAN-Kanäle zur Verfügung stehen
if (USBCAN_CHECK_SUPPORT_TWO_CHANNEL (&HwInfoEx))
{
...
}
...
}
...
Wie wird "TRACE1 ("product code = 0x%04X\n", HwInfoEx->m_dwProductCode & USBCAN_PRODCODE_MASK_PID);" nach Delphi übersetzt?

Hier meine Variablenstrucktur / Code in Delphi:

Delphi-Quellcode:
type THardwareInfoVar = packed Record
 Size       : longWORD;
 thd        : thandle;
 DeviceNr   : byte;
 SerialNr   : longWord;
 FwVersionEx : longWord;
 ProductCode : longWord;
end;

Function tUSB_Kom.HWinfo;
var hwi : tHardWareInfoVar;

begin
 fCode:=HardWareInfo(modul,hwi,NIL,NIL);

 ... // hier fehlt mir die Umwandlung aus C :(
end;
Danke schonmal für die Hilfe!

Gruß

Torsten

DelphiProgrammierer1 4. Sep 2014 07:40

AW: Unterstüzung bei Codeübertragung C->Delphi
 
Hallo Torsten,

suche doch bitte mal im C Source nach TRACE1. Dies müsste ein Makro sein hinter der sich eine Funktion verbirgt.

http://msdn.microsoft.com/de-de/libr...=vs.90%29.aspx

Gruß

Ulrich

Namenloser 4. Sep 2014 19:00

AW: Unterstüzung bei Codeübertragung C->Delphi
 
Ist vermutlich ein Alias für printf, das Delphi-Äquivalent dazu ist die Delphi-Referenz durchsuchenFormat-Routine.

Delphi-Quellcode:
WriteLn(Format('product code = 0x%04X', [HwInfoEx.m_dwProductCode and USBCAN_PRODCODE_MASK_PID]));


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:12 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz