<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>[Arduino]  Serial Communication Linux</title>
		<link>http://www.allegro.cc/forums/view/618738</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Thu, 06 Oct 2022 01:04:08 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Hey everyone,<br />I started to play with Arduino (UNU) <br />I wanted to setup some test for sewrial communication with my pc. <br />I wrote a small and simple program to send some characters. the Arduino side seems to work fine, The serial monitor of the IDE shows the text the Arduino is sending, and also the test appears in &quot;Screen&quot;  ( Linux minitoring program.<br />However trying to connect with my C++ program using LibSerial fails every time...<br />&lt;Bad file descriptor&gt;</p><p>Any Ideas ?</p><p>Thanks !</p><div class="source-code"><div class="toolbar"><span class="button numbers"><b>#</b></span><span class="button select">Select</span><span class="button expand">Expand</span></div><div class="inner"><span class="number">  1</span><span class="p">#include &lt;libserial/SerialStream.h&gt;</span>
<span class="number">  2</span><span class="p">#include &lt;iostream&gt;</span>
<span class="number">  3</span>
<span class="number">  4</span><span class="k1">using</span> <span class="k1">namespace</span> LibSerial<span class="k2">;</span>
<span class="number">  5</span>
<span class="number">  6</span>SerialStream g_StreamSerial<span class="k2">;</span>
<span class="number">  7</span>
<span class="number">  8</span><span class="k1">bool</span> g_blClose <span class="k3">=</span> <span class="k1">false</span><span class="k2">;</span>
<span class="number">  9</span>
<span class="number"> 10</span><span class="k1">int</span> main<span class="k2">(</span><span class="k2">)</span>
<span class="number"> 11</span><span class="k2">{</span>
<span class="number"> 12</span>    g_StreamSerial.Open<span class="k2">(</span><span class="s">"/dev/ttyACMO"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 13</span>    <span class="k1">if</span> <span class="k2">(</span>g_StreamSerial.good<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span>
<span class="number"> 14</span>    <span class="k2">{</span>
<span class="number"> 15</span>        g_StreamSerial.SetBaudRate<span class="k2">(</span>BaudRate::BAUD_9600<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 16</span>        <span class="k1">if</span> <span class="k2">(</span>g_StreamSerial.good<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span>
<span class="number"> 17</span>        <span class="k2">{</span>
<span class="number"> 18</span>            <span class="k1">char</span> ch<span class="k2">;</span>
<span class="number"> 19</span>
<span class="number"> 20</span>            <span class="k1">while</span><span class="k2">(</span><span class="k3">!</span>g_blClose<span class="k2">)</span>
<span class="number"> 21</span>            <span class="k2">{</span>
<span class="number"> 22</span>
<span class="number"> 23</span>                g_StreamSerial <span class="k3">&gt;</span><span class="k3">&gt;</span> ch<span class="k2">;</span>
<span class="number"> 24</span>                std::cout <span class="k3">&lt;</span><span class="k3">&lt;</span> ch<span class="k2">;</span>
<span class="number"> 25</span>            <span class="k2">}</span>
<span class="number"> 26</span>        <span class="k2">}</span>
<span class="number"> 27</span>        <span class="k1">else</span>
<span class="number"> 28</span>        <span class="k2">{</span>
<span class="number"> 29</span>            std::cout <span class="k3">&lt;</span><span class="k3">&lt;</span> <span class="s">"Could not set baud rate"</span><span class="k2">;</span>
<span class="number"> 30</span>        <span class="k2">}</span>
<span class="number"> 31</span>
<span class="number"> 32</span>
<span class="number"> 33</span>    <span class="k2">}</span>
<span class="number"> 34</span>    <span class="k1">else</span>
<span class="number"> 35</span>    <span class="k2">{</span>
<span class="number"> 36</span>        std::cout <span class="k3">&lt;</span><span class="k3">&lt;</span> <span class="s">"Could not open port"</span><span class="k2">;</span>
<span class="number"> 37</span>    <span class="k2">}</span>
<span class="number"> 38</span>
<span class="number"> 39</span>    g_StreamSerial.Close<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 40</span>    <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 41</span><span class="k2">}</span>
</div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Ariesnl)</author>
		<pubDate>Mon, 03 Oct 2022 15:15:33 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Are you running it with sudo priveliges?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Dizzy Egg)</author>
		<pubDate>Mon, 03 Oct 2022 20:40:06 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>No, but would that be necessary ?<br />Would be inconvenient to use sudo every time running this...
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Ariesnl)</author>
		<pubDate>Tue, 04 Oct 2022 12:24:57 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Maybe try <span class="source-code">.IsOpen<span class="k2">(</span><span class="k2">)</span></span> instead of <span class="source-code">.good<span class="k2">(</span><span class="k2">)</span></span> and see if  an error message becomes apparent?</p><p>edit - also are you opening &quot;/dev/ttyACMO&quot; with a letter &quot;O&quot; or &quot;/dev/ttyACM0&quot; with a zero? I think the latter is correct.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Peter Hull)</author>
		<pubDate>Tue, 04 Oct 2022 17:26:05 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Makes no difference, and yes the last char is a zero ;-)
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Ariesnl)</author>
		<pubDate>Wed, 05 Oct 2022 16:18:20 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title"><a href="http://www.allegro.cc/forums/thread/618738/1052917#target">Ariesnl</a> said:</div><div class="quote"><p>  yes the last char is a zero</p></div></div><p>OK because it isn&#39;t in the code you posted.</p><p>How do you know the error is &quot;Bad file descriptor&quot;? (EBADF presumably?)</p><p>If you try to just <span class="source-code"><a href="http://www.delorie.com/djgpp/doc/libc/libc_600.html" target="_blank">open</a><span class="k2">(</span><span class="k2">)</span></span> that file does it work?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Peter Hull)</author>
		<pubDate>Wed, 05 Oct 2022 20:24:09 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Have you given yourself permission to acces the ports?</p><p>i.e.</p><p>sudo usermod -a -G dialout &lt;your username&gt;<br />sudo usermod -a -G plugdev &lt;your username&gt;
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Dizzy Egg)</author>
		<pubDate>Wed, 05 Oct 2022 21:58:55 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Surely if it works from <span class="source-code"><a href="http://www.allegro.cc/manual/screen"><span class="a">screen</span></a></span> and from the Arduino IDE, the permissions are OK?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Peter Hull)</author>
		<pubDate>Thu, 06 Oct 2022 01:04:08 +0000</pubDate>
	</item>
</rss>
