Home > Forum > Arcaze USB-Interface > Arcaze (deutsch)
 
* Login 
 * Register

* FAQ
   * Search

 
Deutsche Sprache wählenSwitch to english language
 
 

Forum

Sie können die Sprache der Benutzeroberfläche nach Anmeldung in Ihren persönlichen Einstellungen auswählen.
You can select your favorite language for the forum interface in your personal settings after logging in.




Post new topic Reply to topic  [ 4 posts ] 
Author Message
 Post subject: Arcaze SDK (Version 6 C/C++)
PostPosted: Thu 9. May 2013, 16:36 
Offline

Joined: Thu 4. Aug 2011, 22:39
Posts: 207
Moin Leute,

ich versuche gerade mich in das Arcaze SDK einzuarbeiten und habe mir dazu die aktuelle Version 6 aus dem SVN heruntergeladen (siehe hier).

Der DemoCode funktioniert auch wunderbar.
Code:
// CArcazeLibDemo.cpp : Definiert den Einstiegspunkt f?r die Konsolenanwendung.
//

#include "stdafx.h"
#include "ArcazeHid.h"
#include "ArcazeCommand.h"
#include "DeviceInfo.h"

int _tmain(int argc, _TCHAR* argv[])

{

        DeviceInfo** devices;

        int size;

        if (!ArcazeFind(&devices,&size)) {
                return -1;
        }

        if (size < 1) {
                return -1;
        }

        wchar_t* path = new wchar_t[256];
        DeviceInfoGetPath(devices[0],path,256);
        ArcazeHid* hid = ArcazeConnect(path);
        ArcazeCmdSetPin(hid,1,13,1);
        Sleep(1000);
        ArcazeCmdSetPin(hid,1,13,0);
        return 0;
}


Erweitere ich den Code aber um die neuen empfohlenen Befehle, gibt es Probleme.
In diesem Beispiel nutze ich die C API, dort werden die Befehle ohne Namespace Selector geschrieben.

Code:
   ...

   ArcazeCmdInitExtensionPort(hid, ExtModuleType::InternalIo, 0, 1, 255);

   int tmpCahceAddr = ArcazeCmdGetOutputCacheAddr(hid, 0, 0, 0);

   ArcazeCmdWriteOutputPort(hid, tmpCahceAddr, 0, PlainWrite, false);

   ArcazeCmdUpdateOutputPorts(hid);


beim ausführen von ArcazeCmdUpdateOutputPorts schmeißt der Debugger eine unbehandelte Ausnahme.

Beim Debuggen bin ich dann drauf gestoßen das die Variable "cacheSize" in der Funktion "ArcazeCommand::CmdInitExtensionPort" (Datei: ArcazeCommand.cpp Zeile 713) zwar gesetzt wird, aber beim verlassen der Funktion nicht mehr vorhanden ist.
Die Funktion "ArcazeCommand::WriteOutputPort" wird ohne was zu machen verlassen, da die Variable "cacheSize" hier uninitialisiert ist. Dem entsprechen ist die Variable "nextOutputData" auch nicht initialisiert.
Das wiederum führt in der Funktion "ArcazeCommand::UpdateOutputPorts" zu der unbehandelten Ausnahme
Quote:
Unbehandelte Ausnahme bei 0x10015d26 (ArcazeLib.dll) in CArcazeLibDemo.exe: 0xC0000005: Zugriffsverletzung beim Lesen an Position 0xcdcdcdcd.

in Zeile 895
Code:
if (nextOutputData[numPort+offsetPort] > 0)


Was mache ich nun falsch??

Mit meinem Halbwissen zum Thema C/C++ komme ich nicht wirklich weiter.

CU Micha


Top
 Profile  
 
 Post subject: Re: Arcaze SDK (Version 6 C/C++)
PostPosted: Tue 21. May 2013, 07:32 
Offline
Site Admin
User avatar

Joined: Sun 25. Feb 2007, 03:32
Posts: 222
Location: Kirchheim Teck
Warte noch 2 Wochen, dann werde ich Gelegenheit gehabt haben, noch mal durch die DLL gegangen zu sein. Gut möglich, dass es noch einen Fehler gibt.


Top
 Profile  
 
 Post subject: Re: Arcaze SDK (Version 6 C/C++)
PostPosted: Thu 30. May 2013, 01:38 
Offline

Joined: Thu 4. Aug 2011, 22:39
Posts: 207
Moin,

ich habe das ganze jetzt noch einmal mit der cppApi ausprobiert, leider tritt da genau der gleiche Fehler auf.

Vielleicht ist das von Bedeutung, ich nutze zum Entwickeln Visual C++ 2010 Express auf einen Windows XP (aktueller Patch Stand).

Hier der C++ Code
Code:
#include "stdafx.h"

#include "ArcazeHid.h"
#include "ArcazeCommand.h"
#include "DeviceInfo.h"

using namespace Arcaze;
using namespace std;

/**
 * Keep a reference to the connected device for further actions.
 */
ArcazeHid* connectedDevice = NULL;

bool inputsInverted = false;

int _tmain(int argc, _TCHAR* argv[])
{
   vector<DeviceInfo*> devices;
   Arcaze::Find(&devices);

   if (!Arcaze::Find(&devices)) {
      return -1;
   }

   if (devices.size() < 1) {
      return -1;
   }

   std::wstring path;
   // Pfad zur 1. Acraze
   path = devices.at(0)->Path();
   // Verbinden auf den per Pfad angegeben Acraze
   connectedDevice = Arcaze::ArcazeHid::Connect(path);

   // Alte Version

   // 0 basierter Index, Port A=0, Pin 1=0, An=1 (Aus=0)
   connectedDevice->ArcazeCommands()->SetPin(0, 0, 1);
   Sleep(2000);
   connectedDevice->ArcazeCommands()->SetPin(0, 0, 0);

   // neue Version (leider funktioniert das nicht)
   // ExtModuleType::InternalIo=Arcaze selber, 0=Modulnummer, 1=Bits per Port, 255=volle Helligkeit
   /*
   connectedDevice->ArcazeCommands()->CmdInitExtensionPort(ExtModuleType::InternalIo, 0, 1, 255);

   int tmpCahceAddr = connectedDevice->ArcazeCommands()->GetOutputCacheAddr(0, 0, 1);

   connectedDevice->ArcazeCommands()->WriteOutputPort(tmpCahceAddr, 1, PlainWrite, false);

   connectedDevice->ArcazeCommands()->UpdateOutputPorts();
   */
   delete connectedDevice;

   return 0;
}


Die neuen Funktionen sind recht elegant und einfach zu nutzen (zumindest in der Theorie), deswegen würde ich die auch gerne nutzen.

Ich hoffe auf Nachbesserung bei der DLL/API oder ein kleines Howto zu dem Thema.

CU Micha


Top
 Profile  
 
 Post subject: Re: Arcaze SDK (Version 6 C/C++)
PostPosted: Tue 6. May 2014, 18:17 
Offline

Joined: Tue 25. Feb 2014, 23:51
Posts: 15
Hallo,

ich denke ich habe hier das gleiche Problem. Dieser Aufruf zum Beispiel

arcazeHid.ArcazeCommands.SetPortAction(connector, resultValue, ArcazeCommand.PortAction.On);

connector = 0
resultValue = 1

führt zu diesem Ergebnis:

System.EntryPointNotFoundException: Der Einstiegspunkt "ArcazeCmdSetPortAction" wurde nicht in der DLL "ArcazeLib.dll" gefunden.

Es wäre schön, wenn wir funktionierende DLLs bekommen könnten.

MfG Heinz


Top
 Profile  
 
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 4 posts ] 

All times are UTC + 1 hour [ DST ]


Who is online

Users browsing this forum: Google [Bot] and 10 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
 
© Simple Solutions  •  Impressum