<?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[Datentransfer PC -&amp;gt; Microcontroller]]></title><description><![CDATA[<p>--------------------------------------------------------------------------------<br />
Hallo,</p>
<p>ich möchte einen Datentransfer zwischen einem PC (Windows XP) und einem<br />
Microcontroller über den Parallelport des PC durchführen, bidirektional<br />
8Bit.<br />
Serielle Schnittstelle ist zu langsam.<br />
Dachte mir das es mit der Windows API funktionieren könnte</p>
<p>Handle= CreateFile(&quot;LPT1&quot;, GENERIC_WRITE , 0, NULL, OPEN_EXISTING, 0,<br />
NULL);<br />
WriteFile(Handle, Data, byteszuschreiben, &amp;bytesgeschrieben, NULL);</p>
<p>oder mit ReadFile um Daten zu lesen.</p>
<p>Wenn nun WriteFile durchgeführt wird , bleibt der PC in der Funktion<br />
hängen und auf dem Parallelport tut sich überhaupt nichts, kein<br />
Datenstrobe oder Writesignal wird gesetzt.</p>
<p>Wenn ich das Gleiche mit einem Drucker versuche, funktioniert es.<br />
Im Rechnersetup ist EPP Modus eingestellt. Für den EPP Modus werden auch<br />
nur, laut Beschreibungen, die Signale Datastrobe, Write vom PC und Wait<br />
vom Microcontroller benötigt.</p>
<p>Ich mache also etwas falsch aber was??? Oder brauche ich noch besondere Treiber?</p>
<p>Gruß Rainer</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/207268/datentransfer-pc-gt-microcontroller</link><generator>RSS for Node</generator><lastBuildDate>Sat, 25 Apr 2026 16:26:33 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/207268.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 05 Mar 2008 14:51:02 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Datentransfer PC -&amp;gt; Microcontroller on Wed, 05 Mar 2008 14:51:02 GMT]]></title><description><![CDATA[<p>--------------------------------------------------------------------------------<br />
Hallo,</p>
<p>ich möchte einen Datentransfer zwischen einem PC (Windows XP) und einem<br />
Microcontroller über den Parallelport des PC durchführen, bidirektional<br />
8Bit.<br />
Serielle Schnittstelle ist zu langsam.<br />
Dachte mir das es mit der Windows API funktionieren könnte</p>
<p>Handle= CreateFile(&quot;LPT1&quot;, GENERIC_WRITE , 0, NULL, OPEN_EXISTING, 0,<br />
NULL);<br />
WriteFile(Handle, Data, byteszuschreiben, &amp;bytesgeschrieben, NULL);</p>
<p>oder mit ReadFile um Daten zu lesen.</p>
<p>Wenn nun WriteFile durchgeführt wird , bleibt der PC in der Funktion<br />
hängen und auf dem Parallelport tut sich überhaupt nichts, kein<br />
Datenstrobe oder Writesignal wird gesetzt.</p>
<p>Wenn ich das Gleiche mit einem Drucker versuche, funktioniert es.<br />
Im Rechnersetup ist EPP Modus eingestellt. Für den EPP Modus werden auch<br />
nur, laut Beschreibungen, die Signale Datastrobe, Write vom PC und Wait<br />
vom Microcontroller benötigt.</p>
<p>Ich mache also etwas falsch aber was??? Oder brauche ich noch besondere Treiber?</p>
<p>Gruß Rainer</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1468823</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1468823</guid><dc:creator><![CDATA[RainerKa]]></dc:creator><pubDate>Wed, 05 Mar 2008 14:51:02 GMT</pubDate></item><item><title><![CDATA[Reply to Datentransfer PC -&amp;gt; Microcontroller on Wed, 05 Mar 2008 16:02:53 GMT]]></title><description><![CDATA[<p>Eine direkte Datenausgabe über den LPT-Port läßt WinXP nicht zu (das funktionierte nur bei den DOS-gestützten Windows-Versionen, also bis WinME). Dazu brauchst Du einen Kernel-Mode-Treiber. Ich empfehle inpout32.dll.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1468878</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1468878</guid><dc:creator><![CDATA[Elektronix]]></dc:creator><pubDate>Wed, 05 Mar 2008 16:02:53 GMT</pubDate></item><item><title><![CDATA[Reply to Datentransfer PC -&amp;gt; Microcontroller on Wed, 05 Mar 2008 16:11:59 GMT]]></title><description><![CDATA[<p><a href="http://www.codeproject.com/KB/cs/cspplcds.aspx" rel="nofollow">http://www.codeproject.com/KB/cs/cspplcds.aspx</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1468881</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1468881</guid><dc:creator><![CDATA[simon.gysi]]></dc:creator><pubDate>Wed, 05 Mar 2008 16:11:59 GMT</pubDate></item><item><title><![CDATA[Reply to Datentransfer PC -&amp;gt; Microcontroller on Thu, 06 Mar 2008 13:42:15 GMT]]></title><description><![CDATA[<p>Danke <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /> ,<br />
nun findet der Linker meines Borland Cpp Builders die Funktion, Out32, nicht</p>
<p>mit</p>
<p>__declspec( dllimport ) void Out32(int, unsigned char);</p>
<p>habe ich dem Compiler gesagt, das die in einer DLL steht, was habe ich noch vergessen? Die Dll steht im Debugverzeichnis, Sourceverzeichnis, Binverzeichnis des Compilers oder wo muss sie stehen, zum Linken.</p>
<p>Gruß Rainer</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1469396</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1469396</guid><dc:creator><![CDATA[RainerKA]]></dc:creator><pubDate>Thu, 06 Mar 2008 13:42:15 GMT</pubDate></item><item><title><![CDATA[Reply to Datentransfer PC -&amp;gt; Microcontroller on Thu, 06 Mar 2008 13:58:30 GMT]]></title><description><![CDATA[<p>Die DLL wird erst zur Laufzeit benötigt.<br />
Zur Linkzeit wird die LIB benötigt.<br />
Und das Header- File wird zur Kompilierzeit benötigt.</p>
<p><a href="http://logix4u.net/Legacy_Ports/Parallel_Port/Inpout32.dll_for_Windows_98/2000/NT/XP.html" rel="nofollow">http://logix4u.net/Legacy_Ports/Parallel_Port/Inpout32.dll_for_Windows_98/2000/NT/XP.html</a><br />
Edit: (Hier kann der Source der DLL herruntergeladen werden.)</p>
<p>Oder aber Du lädtst die DLL zur Laufzeit (LoadLibrary) und bindest die Funktionen dynamisch (GetProcAddress). Hier wird nur die DLL und das Header File benötigt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1469408</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1469408</guid><dc:creator><![CDATA[simon.gysi]]></dc:creator><pubDate>Thu, 06 Mar 2008 13:58:30 GMT</pubDate></item><item><title><![CDATA[Reply to Datentransfer PC -&amp;gt; Microcontroller on Thu, 06 Mar 2008 14:59:59 GMT]]></title><description><![CDATA[<p>Danke, jetzt hat der Port aufgegeben, er liegt jetzt in seinen Einzelteilen vor mir <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /> .<br />
Mit der Lib klappte es nicht, der OMF Record passte dem Linker nicht. Aber mit Load Library funktioniert es. Da ich ja jetzt den Quellcode vom Treiber habe, kann ich den vielleicht später an Borland anpassen.</p>
<p>Gruß und nochmal Danke Rainer</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1469465</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1469465</guid><dc:creator><![CDATA[RainerKa]]></dc:creator><pubDate>Thu, 06 Mar 2008 14:59:59 GMT</pubDate></item><item><title><![CDATA[Reply to Datentransfer PC -&amp;gt; Microcontroller on Fri, 07 Mar 2008 09:52:18 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>Hmm, wie gesagt der Port hat zwar aufgegeben, er tut jetzt das was ich will, nur ist er im Bummelstreik.</p>
<p>Mit anderen Worten, es funktioniert, aber sehr langsam. Brauche eine Übertragungrate von min 200000 Bytes pro Sekunde und schaffe nur eine Rate von 70000 Bytes sek, der PC soll nicht nur Daten schaufeln, sondern auch noch etwas anders tun und das auch noch fix. Wo sind die 2MByte sek, die angeblich möglich sind.</p>
<p>Wie kann ich nun schneller werden?</p>
<p>Gruß Rainer</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1469859</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1469859</guid><dc:creator><![CDATA[RainerKa]]></dc:creator><pubDate>Fri, 07 Mar 2008 09:52:18 GMT</pubDate></item><item><title><![CDATA[Reply to Datentransfer PC -&amp;gt; Microcontroller on Fri, 07 Mar 2008 10:24:20 GMT]]></title><description><![CDATA[<p>Zeige Code...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1469878</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1469878</guid><dc:creator><![CDATA[simon.gysi]]></dc:creator><pubDate>Fri, 07 Mar 2008 10:24:20 GMT</pubDate></item><item><title><![CDATA[Reply to Datentransfer PC -&amp;gt; Microcontroller on Fri, 07 Mar 2008 10:50:48 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>das ist nur die Funktion mit der ich es teste. Die ist eingebettet in ein Borland Windows Programm.</p>
<pre><code>void Test(void)
{

//übernommen aus den Beispielen von logix

typedef short _stdcall (*inpfuncPtr)(short portaddr);
typedef void _stdcall (*oupfuncPtr)(short portaddr, short datum);
HINSTANCE hLib;
inpfuncPtr inp32;
oupfuncPtr oup32;  

        hLib = LoadLibrary(&quot;inpout32.dll&quot;);

	 if (hLib == NULL)
	 {
		  printf(&quot;LoadLibrary Failed.\n&quot;);
	 }

	 /* get the address of the function */

	 inp32 = (inpfuncPtr) GetProcAddress(hLib, &quot;Inp32&quot;);

	 if (inp32 == NULL)
	 {
		  printf(&quot;GetProcAddress for Inp32 Failed.\n&quot;);
	 }

	 oup32 = (oupfuncPtr) GetProcAddress(hLib, &quot;Out32&quot;);

	 if (oup32 == NULL)
	 {
		  printf(&quot;GetProcAddress for Oup32 Failed.\n&quot;);
	 }

//soll nur Daten übertragen mittels eines Handshakes
// Ohne Handshake zu Fuß, nur datenbytes schreiben, komm ich auf ca. 
//400000 Bytes
// brauche aber den Handshake. Kann der Port das vielleicht auch von allein?

	for(;;)
	{
	 (oup32)(0x37a,0x00);
	 while( (inp32)(0x379) &amp; 0x80); // warte auf waitsignal = 1
	 (oup32)(0x378,0xaa);
	 (oup32)(0x37a,0x03);//Strobe und Writesignal
	 while( !((inp32)(0x379) &amp; 0x80));
	}

}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1469900</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1469900</guid><dc:creator><![CDATA[RainerKa]]></dc:creator><pubDate>Fri, 07 Mar 2008 10:50:48 GMT</pubDate></item><item><title><![CDATA[Reply to Datentransfer PC -&amp;gt; Microcontroller on Tue, 11 Mar 2008 06:23:52 GMT]]></title><description><![CDATA[<p>Moin,</p>
<p>werden noch mehr Angaben gebraucht, oder kennt sich hier keiner mit der Parallelschnittstelle des PC's aus.<br />
Ich will doch nur einen schnellen Datentransfer zwischen PC und einem Microcontroller/später FPGA, beide Richtungen, erreichen. Brauchen nicht die in den Specs stehenden 2MByte sek sein, mit 500000 Bytes sek, bin ich schon zufrieden.</p>
<p>Gruß Rainer</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1471832</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1471832</guid><dc:creator><![CDATA[RainerKa]]></dc:creator><pubDate>Tue, 11 Mar 2008 06:23:52 GMT</pubDate></item></channel></rss>