![]() |
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:
Wie wird "TRACE1 ("product code = 0x%04X\n", HwInfoEx->m_dwProductCode & USBCAN_PRODCODE_MASK_PID);" nach Delphi übersetzt?
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)) { ... } ... } ... Hier meine Variablenstrucktur / Code in Delphi:
Delphi-Quellcode:
Danke schonmal für die Hilfe!
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; Gruß Torsten |
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. ![]() Gruß Ulrich |
AW: Unterstüzung bei Codeübertragung C->Delphi
Ist vermutlich ein Alias für printf, das Delphi-Äquivalent dazu ist die
![]()
Delphi-Quellcode:
WriteLn(Format('product code = 0x%04X', [HwInfoEx.m_dwProductCode and USBCAN_PRODCODE_MASK_PID]));
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:49 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz