<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Von DLL ausgelöstes Event]]></title><description><![CDATA[<p>Hi!</p>
<p>Ich hab' da ein Problem:<br />
Ich übergebe da Adressen von Funktionen an eine externe Funktion von einer DLL.<br />
Es werden dann irgendwann Events ausgelöst. Das Problem was ich habe ist jetzt, dass das Programm aber schon längst zu Ende ist bevor schon irgendwas ausgelöst werden kann.</p>
<p>Ich hoffe jemand kann mir helfen.<br />
MfG<br />
davidek</p>
<pre><code class="language-cpp">#include &lt;windows.h&gt;
#include &lt;stdio.h&gt;

#include &quot;casioio.h&quot;

int handle;
void onSend();
void onReceive();
void (*pOnSend)();
void (*pOnReceive)();

void main()
{
  printf(&quot;Start von main\n&quot;);
  if (CasioIO_Init(1,1) == 1) 
  { 
    pOnSend = onSend;
    pOnReceive = onReceive;
    handle = CasioIO_Open(456,123,pOnSend,pOnReceive);
    printf(&quot;Init erfolgreich. Open erfolgreich. handle = %d&quot;,handle);
  }
}

void onSend()
{
  printf(&quot;onSend aufgerufen.&quot;);
  unsigned char datatype;
  unsigned char name;
  unsigned char rows;
  unsigned char columns;
  double values[5];

  if (CasioIO_AfterSend(handle,&amp;datatype,&amp;name,&amp;rows,&amp;columns,&amp;values[0]) == 1)
  {
    printf(&quot;Datentyp: %d&quot;,datatype);
    printf(&quot;Name: %d&quot;,name);
    printf(&quot;Zeilen: %d&quot;,rows);
    printf(&quot;Spalten: %d&quot;,columns);
    printf(&quot;Inhalt der ersten Position: %d&quot;,values[0]);
  }
}

void onReceive ()
{
  printf(&quot;onReceive aufgerufen.&quot;);
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/172257/von-dll-ausgelöstes-event</link><generator>RSS for Node</generator><lastBuildDate>Mon, 13 Jul 2026 14:45:38 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/172257.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 02 Feb 2007 22:46:52 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Von DLL ausgelöstes Event on Fri, 02 Feb 2007 22:46:52 GMT]]></title><description><![CDATA[<p>Hi!</p>
<p>Ich hab' da ein Problem:<br />
Ich übergebe da Adressen von Funktionen an eine externe Funktion von einer DLL.<br />
Es werden dann irgendwann Events ausgelöst. Das Problem was ich habe ist jetzt, dass das Programm aber schon längst zu Ende ist bevor schon irgendwas ausgelöst werden kann.</p>
<p>Ich hoffe jemand kann mir helfen.<br />
MfG<br />
davidek</p>
<pre><code class="language-cpp">#include &lt;windows.h&gt;
#include &lt;stdio.h&gt;

#include &quot;casioio.h&quot;

int handle;
void onSend();
void onReceive();
void (*pOnSend)();
void (*pOnReceive)();

void main()
{
  printf(&quot;Start von main\n&quot;);
  if (CasioIO_Init(1,1) == 1) 
  { 
    pOnSend = onSend;
    pOnReceive = onReceive;
    handle = CasioIO_Open(456,123,pOnSend,pOnReceive);
    printf(&quot;Init erfolgreich. Open erfolgreich. handle = %d&quot;,handle);
  }
}

void onSend()
{
  printf(&quot;onSend aufgerufen.&quot;);
  unsigned char datatype;
  unsigned char name;
  unsigned char rows;
  unsigned char columns;
  double values[5];

  if (CasioIO_AfterSend(handle,&amp;datatype,&amp;name,&amp;rows,&amp;columns,&amp;values[0]) == 1)
  {
    printf(&quot;Datentyp: %d&quot;,datatype);
    printf(&quot;Name: %d&quot;,name);
    printf(&quot;Zeilen: %d&quot;,rows);
    printf(&quot;Spalten: %d&quot;,columns);
    printf(&quot;Inhalt der ersten Position: %d&quot;,values[0]);
  }
}

void onReceive ()
{
  printf(&quot;onReceive aufgerufen.&quot;);
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1221996</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1221996</guid><dc:creator><![CDATA[davidek]]></dc:creator><pubDate>Fri, 02 Feb 2007 22:46:52 GMT</pubDate></item><item><title><![CDATA[Reply to Von DLL ausgelöstes Event on Sat, 03 Feb 2007 00:18:52 GMT]]></title><description><![CDATA[<p>Versuchs mal so (quick &amp; dirty Lösung, müsste aber gehen -- d.h. wenn meine Annahmen richtig sind, und das Teil einen eigenen Thread rausstartet um mit dem CASIO zu kommunizieren):</p>
<pre><code class="language-cpp">#include &lt;windows.h&gt;
#include &lt;stdio.h&gt;

#include &quot;casioio.h&quot;

volatile int fertig = 0;
int handle;

void onSend();
void onReceive();
//void (*pOnSend)(); // überflüssig
//void (*pOnReceive)(); // detto

int main() // int, nicht void!
{
  printf(&quot;Start von main\n&quot;);
  if (CasioIO_Init(1,1) == 1) 
  { 
    //pOnSend = onSend;
    //pOnReceive = onReceive;
    handle = CasioIO_Open(456,123,onSend,onReceive);
    printf(&quot;Init erfolgreich. Open erfolgreich. handle = %d&quot;,handle);
  }

  // warten bis wir fertig sind
  while (!fertig)
    Sleep(100); // wenns mit Sleep nicht geht: SleepEx(100, TRUE);

  // aufräumen
  CasioIO_Close(handle);
  CasioIO_Uninit();  

  // und tschüss
  return 0;
}

void onSend()
{
  printf(&quot;onSend aufgerufen.&quot;);
  unsigned char datatype;
  unsigned char name;
  unsigned char rows;
  unsigned char columns;
  double values[5];

  if (CasioIO_AfterSend(handle,&amp;datatype,&amp;name,&amp;rows,&amp;columns,&amp;values[0]) == 1)
  {
    printf(&quot;Datentyp: %d&quot;,datatype);
    printf(&quot;Name: %d&quot;,name);
    printf(&quot;Zeilen: %d&quot;,rows);
    printf(&quot;Spalten: %d&quot;,columns);
    printf(&quot;Inhalt der ersten Position: %d&quot;,values[0]);
  }

  // flag setzen wenn das Programm &quot;fertig ist&quot; und beendet werden soll
  if (1) // &lt;- Bedingung musst du einsetzen
    fertig = 1;
}

void onReceive ()
{
  printf(&quot;onReceive aufgerufen.&quot;);
}
</code></pre>
<p>Falls das nicht hilft frag doch einfach den Betreiber der Seite wo du das &quot;CASIO SDK&quot; vermutlich her hast: <a href="http://users.pandora.be/gp/casio/" rel="nofollow">http://users.pandora.be/gp/casio/</a><br />
(email Adresse steht sogar im CHM File vom SDK</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1222024</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1222024</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Sat, 03 Feb 2007 00:18:52 GMT</pubDate></item><item><title><![CDATA[Reply to Von DLL ausgelöstes Event on Sat, 03 Feb 2007 10:21:15 GMT]]></title><description><![CDATA[<p>Vielen Dank für die Hilfe ersteinmal!</p>
<p>Auf der Seite des Anbieters steht unter Contact leider &quot;I currently don't have the time to answer any mails, sorry for this.&quot;, deswegen habe ich mich damit erstmal zurückgehalten. Ich habe aber auch schon eine eMail an die Adresse aus der .chm-Datei geschrieben, aber noch keine Antwort bekommen.</p>
<p>Hast du oder jemand anders vielleicht Ahnung von VisualBasic? Ich habe mir das Beispiel-Programm mal angeguckt, ein paat VB-Tutorials dazu, und ich habe es sehr gut verstanden, obwohl ich nur &quot;Casio-Basic&quot; kann.</p>
<p>Auf jeden Fall wird da so eine Form (Form1.frm) erstellt. Man drückt einen Knopf, der dann das Init und das Open ausführt. Zwei Timer wurden schon vorher erstellt, die sind aber inaktiv (Intervall=0). Die zwei Programme für die Events stehen in der Module1.bas drin. Davon werden beim Open auch die Adressen übergeben. In der Hilfe-Datei steht, dass man die anderen Funktionen (AfterSend, AfterReceive, RespondOnReceive) in VB nicht aus den vom Event aufgerufenen Funktionen aufrufen kann. Deswegen setzen sie das Timer-Intervall auf 5, also wird fast sofort ein Timer-Event ausgelöst, was dazu führt, dass es dann in die entsprechenden Funktionen geht (onSend_Timer, onReceive_Timer), wo der Rest dann abgewickelt wird.</p>
<p>Jetzt Frage ich mich, wie VisualBasic das denn macht, dass die vom Event aufgerufenen Funktionen &quot;durchkommen&quot;?</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/13960">@hustbaer</a> Ich probiere deine gepostete Lösung später aus. (Muss jetz weg.) Ich schreibe dann, ob es geklappt hat (hoffentlich).</p>
<p>Jetzt noch ein bischen Hintergrund zu der Sache (Ich hab's beim ersten Post weggelassen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /> ):<br />
Ich habe einen Grafik-fähigen Taschenrechner von Casio (So ein Ding zum Kurven zeichnen, Schule). Auf dem Ding kann man auch Programme in sogenanntem Casio-Basic schreiben. Das ganze kann man zwecks Datenaustausch auch mit dem Computer mit einem Kabel verbinden.<br />
Und die genialen Leute von GP haben jetzt eine DLL entwickelt, mit der man die Daten auch live im Programm hin- und herschicken kann, was nun also Zusammenarbeit mit dem PC eröglicht.<br />
Die Internetseite dazu ist (wie schon geschrieben) <a href="http://users.pandora.be/gp/casio/" rel="nofollow">http://users.pandora.be/gp/casio/</a>.<br />
Das Packet, was man sich runterladen kann, enthält:<br />
CasioIO.dll<br />
Eine Hilfe-Datei (+Referenz).<br />
Ein VB-Beispielprogramm mit Source<br />
Zum Einbinden in C++ ne .h und ne .lib</p>
<p>Danke für Antworten schon mal im Vorraus <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /><br />
MfG<br />
davidek</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1222116</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1222116</guid><dc:creator><![CDATA[davidek]]></dc:creator><pubDate>Sat, 03 Feb 2007 10:21:15 GMT</pubDate></item><item><title><![CDATA[Reply to Von DLL ausgelöstes Event on Sat, 03 Feb 2007 20:56:30 GMT]]></title><description><![CDATA[<p>Hi!</p>
<blockquote>
<p>Danke für Antworten schon mal im v****** <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
</blockquote>
<p>lol, was ist denn dan passiert. eigentlich sollte das zensierte wort heißen: vorraus.</p>
<p>also ich hab' das programm jetzt mal ausprobiert, wie hier gepostet, aber leider hatte ich weder mit Sleep noch mit SleepEx erfolg.<br />
ich kriege auf dem taschenrechner einen com-error. die initialisierungwerte (authorID, productID) kann ich aber senden. es muss als irgendwas mit den events nicht klappen...</p>
<p>mfg<br />
davidek</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1222410</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1222410</guid><dc:creator><![CDATA[davidek]]></dc:creator><pubDate>Sat, 03 Feb 2007 20:56:30 GMT</pubDate></item><item><title><![CDATA[Reply to Von DLL ausgelöstes Event on Sat, 03 Feb 2007 21:00:39 GMT]]></title><description><![CDATA[<blockquote>
<blockquote>
<p>Danke für Antworten schon mal im vorraus <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
</blockquote>
<p>Was ist denn da passiert? eigentlich sollte das zensierte Wort wie folgt heißen: vorraus.</p>
</blockquote>
<p>Tja du solltest dir evt. nochmal die deutsche Rechtschreibung zu Herzen nehmen.<br />
=&gt; vo<strong>r</strong>aus</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1222413</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1222413</guid><dc:creator><![CDATA[*D*Evil]]></dc:creator><pubDate>Sat, 03 Feb 2007 21:00:39 GMT</pubDate></item><item><title><![CDATA[Reply to Von DLL ausgelöstes Event on Sun, 04 Feb 2007 03:37:00 GMT]]></title><description><![CDATA[<p>davidek schrieb:</p>
<blockquote>
<p>Hi!</p>
<blockquote>
<p>Danke für Antworten schon mal im v****** <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
</blockquote>
<p>lol, was ist denn dan passiert. eigentlich sollte das zensierte wort heißen: v******.</p>
<p>also ich hab' das programm jetzt mal ausprobiert, wie hier gepostet, aber leider hatte ich weder mit Sleep noch mit SleepEx erfolg.<br />
ich kriege auf dem taschenrechner einen com-error. die initialisierungwerte (authorID, productID) kann ich aber senden. es muss als irgendwas mit den events nicht klappen...</p>
<p>mfg<br />
davidek</p>
</blockquote>
<p>Wird denn onSend bzw. onReceive aufgerufen?<br />
Wenn ja liegt der Fehler schätze ich woanders. Wenn nein... weiss auch nicht.<br />
Visual Basic macht im Übrigen garnix bestimmtes damit da irgendwas geht - der Hauptunterschied ist dass es da ein Fenster gibt und der Hauptthread nicht in einer Warteschleife hängt sondern stattdessen in einem Message Loop.</p>
<p>Du kannst das natürlich auch in C++ machen - mach einfach ein Fenster auf, und bau nen Message Loop ein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1222512</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1222512</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Sun, 04 Feb 2007 03:37:00 GMT</pubDate></item><item><title><![CDATA[Reply to Von DLL ausgelöstes Event on Sun, 04 Feb 2007 08:47:03 GMT]]></title><description><![CDATA[<p>(D)Evil schrieb:</p>
<blockquote>
<blockquote>
<blockquote>
<p>Danke für Antworten schon mal im v****** <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
</blockquote>
<p>Was ist denn da passiert? eigentlich sollte das zensierte Wort wie folgt heißen: v******.</p>
</blockquote>
<p>Tja du solltest dir evt. nochmal die deutsche Rechtschreibung zu Herzen nehmen.<br />
=&gt; vo<strong>r</strong>aus</p>
</blockquote>
<p>Klar, mach ich auch ab un zu, aber wie muss ich mich vertippt haben, dass ein Wort dabei herauskommt, das zensiert wird?</p>
<blockquote>
<p>Wird denn onSend bzw. onReceive aufgerufen?<br />
Wenn ja liegt der Fehler schätze ich woanders. Wenn nein... weiss auch nicht.</p>
</blockquote>
<p>Nein, sie werden nicht aufgerufen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /> .</p>
<blockquote>
<p>Visual Basic macht im Übrigen garnix bestimmtes damit da irgendwas geht - der Hauptunterschied ist dass es da ein Fenster gibt und der Hauptthread nicht in einer Warteschleife hängt sondern stattdessen in einem Message Loop.</p>
<p>Du kannst das natürlich auch in C++ machen - mach einfach ein Fenster auf, und bau nen Message Loop ein.</p>
</blockquote>
<p>OK, probier ich mal.</p>
<p>Thx<br />
davidek</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1222529</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1222529</guid><dc:creator><![CDATA[davidek]]></dc:creator><pubDate>Sun, 04 Feb 2007 08:47:03 GMT</pubDate></item><item><title><![CDATA[Reply to Von DLL ausgelöstes Event on Sun, 04 Feb 2007 12:02:55 GMT]]></title><description><![CDATA[<blockquote>
<p>Klar, mach ich auch ab un zu, aber wie muss ich mich vertippt haben, dass ein Wort dabei herauskommt, das zensiert wird?</p>
</blockquote>
<p>Man schreibt <em>&quot;voraus&quot;</em> mit <strong>einem</strong> &quot;r&quot;. Du hast es aber mit <strong>zwei</strong> &quot;r&quot; geschrieben. Da dieser Fehler so oftauftrat oder ka warum, wurde das wohl von den Adminstartoren auf die Liste der zensierten Worte gesetzt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1222628</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1222628</guid><dc:creator><![CDATA[*D*Evil]]></dc:creator><pubDate>Sun, 04 Feb 2007 12:02:55 GMT</pubDate></item><item><title><![CDATA[Reply to Von DLL ausgelöstes Event on Thu, 08 Feb 2007 16:37:21 GMT]]></title><description><![CDATA[<p>Irgendwie bekomme ich das mit dem MessageLoop in dem Fenster nicht hin.<br />
Wie stelle ich das an?</p>
<p>Oder gibt es nicht doch noch eine Methode, wie man das ohne Fenster hinkriegt?</p>
<p>Eigentlich wollte ich gar kein C++ lernen. (Will nur eine Wrapper-DLL schreiben, damit ich die CasioIO in Java einbinden kann... Wahrscheinlich packe ich das deswegen nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1225170</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1225170</guid><dc:creator><![CDATA[davidek]]></dc:creator><pubDate>Thu, 08 Feb 2007 16:37:21 GMT</pubDate></item></channel></rss>