<?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[boost serial]]></title><description><![CDATA[<p>Hi,<br />
ich versuche gerade, erstmals, ne serielle schnittstelle mit Boost zu realisieren..und scheitere.</p>
<p>Was will ich hardwaretechnisch machen. Ich habe an meine serielle Schnittstelle einen PTT (PushToTalk) Taster angeschlossen und will dort regelmäßig den Status raushaben. Muutmaßlich muss eich einfach nur drauf nen Read machen. Also habe ich folgende einfache Methode bei google gefunden und und bei mir in ein testprogramm eingebunden...doch nichts geht.</p>
<pre><code>#include &lt;boost/asio.hpp&gt;

using namespace boost;

char read_char() {
    asio::io_service io;
    asio::serial_port port(io);

    port.open(&quot;COM3&quot;);
    port.set_option(asio::serial_port_base::baud_rate(115200));

    char c;

    // Read 1 character into c, this will block
    // forever if no character arrives.
    asio::read(port, asio::buffer(&amp;c,1));

    port.close();

    return c;
}
</code></pre>
<p>die SW bleibt einfach bei &quot;read&quot; stehen, da kann ich auf den PTT drücken wie ich will.</p>
<p>Help!</p>
<p>mfg<br />
HH</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/326619/boost-serial</link><generator>RSS for Node</generator><lastBuildDate>Mon, 25 May 2026 13:03:02 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/326619.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 27 Jun 2014 08:45:06 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to boost serial on Fri, 27 Jun 2014 08:45:52 GMT]]></title><description><![CDATA[<p>Hi,<br />
ich versuche gerade, erstmals, ne serielle schnittstelle mit Boost zu realisieren..und scheitere.</p>
<p>Was will ich hardwaretechnisch machen. Ich habe an meine serielle Schnittstelle einen PTT (PushToTalk) Taster angeschlossen und will dort regelmäßig den Status raushaben. Muutmaßlich muss eich einfach nur drauf nen Read machen. Also habe ich folgende einfache Methode bei google gefunden und und bei mir in ein testprogramm eingebunden...doch nichts geht.</p>
<pre><code>#include &lt;boost/asio.hpp&gt;

using namespace boost;

char read_char() {
    asio::io_service io;
    asio::serial_port port(io);

    port.open(&quot;COM3&quot;);
    port.set_option(asio::serial_port_base::baud_rate(115200));

    char c;

    // Read 1 character into c, this will block
    // forever if no character arrives.
    asio::read(port, asio::buffer(&amp;c,1));

    port.close();

    return c;
}
</code></pre>
<p>die SW bleibt einfach bei &quot;read&quot; stehen, da kann ich auf den PTT drücken wie ich will.</p>
<p>Help!</p>
<p>mfg<br />
HH</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2405866</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2405866</guid><dc:creator><![CDATA[HeroHolger]]></dc:creator><pubDate>Fri, 27 Jun 2014 08:45:52 GMT</pubDate></item><item><title><![CDATA[Reply to boost serial on Fri, 27 Jun 2014 09:19:29 GMT]]></title><description><![CDATA[<p>Ich hatte ein ähnliches Problem. Allerdings ging es bei mir sobald ich die asynchronen Operationen verwendet habe. Für das feststellen eines PTT ist asynchron eh besser. Sobald du den PTT festgestellt hast kannst du den Rest der Übertragung immer noch synchron machen.</p>
<p>Beispiel:</p>
<pre><code>#include &lt;boost/asio.hpp&gt;
#include &lt;boost/bind.hpp&gt;

using namespace boost;

boost::array&lt;char, 4096&gt; ReadData;

void asio_read_char() {
    asio::io_service io;
    asio::serial_port port(io);

    port.open(&quot;COM3&quot;);
    port.set_option(asio::serial_port_base::baud_rate(115200));

    port.async_read_some(boost::asio::buffer(c), boost::bind(HandlePTT, _1, _2));

    io.run();
}

void HandlePTT(boost::system::error_code error, std::size_t bytes_transferred){
    if(!error){
                //Daten aus dem Read Array kopieren. Muss nicht unbedingt sein
		char arrivedMsg[bytes_transferred];
		for(int i = 0; i &lt; bytes_transferred; i++){		
			 arrivedMsg[i] += ReadData[i];
		}

    }
    //Falls du dein PTT emfpangen hast, kannst du hier dann die synchronen Operationen starten.

}
</code></pre>
<p>Ich hab das aus einem meiner Projekte rausgenommen, es kann sein, dass es nicht direkt kompilierbar ist da es bei mir in einem Klassenkontext ausgeführt wird, sollte aber rüberbringen was ich meine</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2405879</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2405879</guid><dc:creator><![CDATA[Freddy_Kay]]></dc:creator><pubDate>Fri, 27 Jun 2014 09:19:29 GMT</pubDate></item><item><title><![CDATA[Reply to boost serial on Fri, 27 Jun 2014 10:36:42 GMT]]></title><description><![CDATA[<p>@Freddy: danke, werde ich gleichmal schaun.</p>
<p>Ansonsten, in meiner &quot;alten SW&quot; wird der befehl GetCommModemStatus von Microsoft benutzt, um den PTT Status herauszubekommen.</p>
<p><strong>gibt es dafür eine Realisierung unter Boost?</strong></p>
<p>Denn ich habe nochmal gerade den Schaltplan angeschaut, mein PTT hat garkeinen Strom für eigene Logik sondern &quot;nur&quot; ne verkreuzung 2er Drähte im Seriellen</p>
<p><a href="https://cdn-reichelt.de/documents/datenblatt/C200/DS_2420_0101.pdf" rel="nofollow">https://cdn-reichelt.de/documents/datenblatt/C200/DS_2420_0101.pdf</a></p>
<p>ich bin deshalb nicht sicher ob deine Lösung bei mir funktioniert. Aber ich versuche Sie mal schnell.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2405902</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2405902</guid><dc:creator><![CDATA[HeroHolger]]></dc:creator><pubDate>Fri, 27 Jun 2014 10:36:42 GMT</pubDate></item><item><title><![CDATA[Reply to boost serial on Fri, 27 Jun 2014 10:46:43 GMT]]></title><description><![CDATA[<p>HeroHolger schrieb:</p>
<blockquote>
<p>@Freddy: danke, werde ich gleichmal schaun.</p>
<p>Ansonsten, in meiner &quot;alten SW&quot; wird der befehl GetCommModemStatus von Microsoft benutzt, um den PTT Status herauszubekommen.</p>
<p><strong>gibt es dafür eine Realisierung unter Boost?</strong></p>
<p>Denn ich habe nochmal gerade den Schaltplan angeschaut, mein PTT hat garkeinen Strom für eigene Logik sondern &quot;nur&quot; ne verkreuzung 2er Drähte im Seriellen</p>
<p><a href="https://cdn-reichelt.de/documents/datenblatt/C200/DS_2420_0101.pdf" rel="nofollow">https://cdn-reichelt.de/documents/datenblatt/C200/DS_2420_0101.pdf</a></p>
<p>ich bin deshalb nicht sicher ob deine Lösung bei mir funktioniert. Aber ich versuche Sie mal schnell.</p>
</blockquote>
<p>ich sehe die Schnittstelle zum Rechner leider im Moment nicht. Welches Signal sender der Taster an den seriellen port?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2405906</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2405906</guid><dc:creator><![CDATA[Freddy_Kay]]></dc:creator><pubDate>Fri, 27 Jun 2014 10:46:43 GMT</pubDate></item><item><title><![CDATA[Reply to boost serial on Fri, 27 Jun 2014 10:49:26 GMT]]></title><description><![CDATA[<p>...ist gescheitert.</p>
<p>Er sendet laut serial Port Monitor ein DSR Signal</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2405908</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2405908</guid><dc:creator><![CDATA[HeroHolger]]></dc:creator><pubDate>Fri, 27 Jun 2014 10:49:26 GMT</pubDate></item><item><title><![CDATA[Reply to boost serial on Fri, 27 Jun 2014 11:02:25 GMT]]></title><description><![CDATA[<p>HeroHolger schrieb:</p>
<blockquote>
<p>...ist gescheitert.</p>
<p>Er sendet laut serial Port Monitor ein DSR Signal</p>
</blockquote>
<p>Das ändert die Sache. Das oben kann dann nicht funktionieren.</p>
<p>Ich hab kurz drüber geschaut und ich sehe nicht direkt wie du mit boost::serial_port die Handshake leitungen abfragen kannst. Das ist noch ein level unter dem serial port. Da würd ich dir empfehlen bei Google nach dem Abfragen von RS232 Handshake leitungen zu suchen, das hab ich mit dem Rechner bisher nicht gemacht. Nach kurzer Suche hab ich gesehen dass das hier oft vorkam, vielleicht hilfts:</p>
<p><a href="http://www.codeproject.com/Articles/992/Serial-library-for-C" rel="nofollow">http://www.codeproject.com/Articles/992/Serial-library-for-C</a></p>
<p>Je nachdem was du am Ende erreichen willst, könntest du auch darüber nachdenken ob du einen TNC zwischen Rechner und Funkgerät (ich nehme an der PTT ist dafür da?) packst. Das ist normalerweise üblich. Der TNC übernimmt die vollständige Steuerung der Peripherie und der Rechner sendet nur noch was genau gemacht werden soll. So kannst du die Hardware nahen Probleme viel direkter lösen als mit dem PC.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2405910</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2405910</guid><dc:creator><![CDATA[Freddy_Kay]]></dc:creator><pubDate>Fri, 27 Jun 2014 11:02:25 GMT</pubDate></item><item><title><![CDATA[Reply to boost serial on Fri, 27 Jun 2014 12:16:25 GMT]]></title><description><![CDATA[<p>wir entwickeln hier eine Communicationslösung mittels TCP/UDP. Und somit komme ich nicht daran vorbei, für sonen PTT selber nen Treiber zu schreiben.</p>
<p>Aber danke für den Tipp..werde ich mir gleichmal anschauen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2405920</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2405920</guid><dc:creator><![CDATA[HeroHolger]]></dc:creator><pubDate>Fri, 27 Jun 2014 12:16:25 GMT</pubDate></item><item><title><![CDATA[Reply to boost serial on Mon, 30 Jun 2014 08:44:27 GMT]]></title><description><![CDATA[<p>ich hab bisher keine Boost-Lösung gefunden.</p>
<p>Aber werde ich es heute mal hiermit versuchen:<br />
<a href="http://lists.boost.org/boost-users/2013/07/79343.php" rel="nofollow">http://lists.boost.org/boost-users/2013/07/79343.php</a></p>
<p>Was auf jeden Fall funktioniert ist das hier:</p>
<p><a href="http://www.teuniz.net/RS-232/" rel="nofollow">http://www.teuniz.net/RS-232/</a></p>
<p>schönes IF, easy 2 use.</p>
<p>1A</p>
<p>jetzt muss ich nur noch meine Kollegen überzeugen, dass die GPL2 Lizenz für uns geeignet ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2406281</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2406281</guid><dc:creator><![CDATA[HeroHolger]]></dc:creator><pubDate>Mon, 30 Jun 2014 08:44:27 GMT</pubDate></item><item><title><![CDATA[Reply to boost serial on Mon, 30 Jun 2014 19:31:30 GMT]]></title><description><![CDATA[<p>schau dir das mal an:</p>
<pre><code>https://github.com/lbuchy/SerialPort
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2406384</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2406384</guid><dc:creator><![CDATA[geri.]]></dc:creator><pubDate>Mon, 30 Jun 2014 19:31:30 GMT</pubDate></item></channel></rss>