From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=BAYES_00,FORGED_GMAIL_RCVD, FREEMAIL_FROM autolearn=no autolearn_force=no version=3.4.4 X-Google-Thread: 103376,cc65ab136f46904d X-Google-NewGroupId: yes X-Google-Attributes: gida07f3367d7,domainid0,public,usenet X-Google-Language: ENGLISH,ASCII Path: g2news2.google.com!postnews.google.com!e26g2000vbz.googlegroups.com!not-for-mail From: tonyg Newsgroups: comp.lang.ada Subject: Re: GNAT.Serial_Communications Date: Fri, 15 Apr 2011 09:32:32 -0700 (PDT) Organization: http://groups.google.com Message-ID: References: <9af0087d-9637-40d9-8c30-2e06c2d1e4f4@o26g2000vby.googlegroups.com> NNTP-Posting-Host: 82.46.232.121 Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable X-Trace: posting.google.com 1302885152 22354 127.0.0.1 (15 Apr 2011 16:32:32 GMT) X-Complaints-To: groups-abuse@google.com NNTP-Posting-Date: Fri, 15 Apr 2011 16:32:32 +0000 (UTC) Complaints-To: groups-abuse@google.com Injection-Info: e26g2000vbz.googlegroups.com; posting-host=82.46.232.121; posting-account=28F2IwkAAACL1Z5nRC-dE7zuvWdbWC7P User-Agent: G2/1.0 X-HTTP-UserAgent: Mozilla/5.0 (X11; U; Linux x86_64; en-GB; rv:1.9.2.16) Gecko/20110323 Ubuntu/10.04 (lucid) Firefox/3.6.16,gzip(gfe) Xref: g2news2.google.com comp.lang.ada:19771 Date: 2011-04-15T09:32:32-07:00 List-Id: On Apr 15, 2:58=A0pm, tonyg wrote: > On Apr 14, 6:52=A0pm, Chris Moore wrote: > > > > > On 13/04/2011 22:12, tonyg wrote: > > > > Its actually blocking on top of the write. Also I've discovered after > > > much experimentation that the writes are not doing the job when it > > > does not block up. Usually it blocks up after 3-4 write attempts. I > > > expect I need to discover what is happening at the other end of the > > > wire, but its my first experience of using a serial port for anything= . > > > > I suspect there is an option I am not engaging in the setting up of > > > the port. I am using the gpl version so I was thinking there could be > > > a bug that is not in the gnat pro version, but I don't want to be a > > > bad craftsman :) and gnat are usually pretty much on top of stuff lik= e > > > that from previous experience, but then again its a relatively new > > > addition to the gnat compiler and no ones perfect. But.... its usuall= y > > > me..... > > > I suspect it's the speed setting. =A0Serial ports default to 9600 baud > > which is slow so you're filling the buffers up with the first few write= s > > as they're unable to get the data out quick enough and then they start > > to block cos there's nowhere to put the data. > > > > Saying that though I am successfully reading from the port the > > > incoming messages although they do appear in sections and I have to > > > keep re reading the port to get the full message... > > > This is how serial interfaces usually work. =A0The lowest level read > > function returns the number of bytes actually read. > > I found the problem. Its very embarassing and completely my own fault! > Basically I did not have the write access to the usb port! I am using > ubuntu for this. Just to let those who are interested know. Actually this is not the problem I spoke too soon. Minicom will talk and read the correct values. However gnat will read correctly but not write to the port properly, but its not hanging anymore so thats a plus. I just cannot see why minicom would write the string correctly to the port but when I write the string to the port through gnat.serial_communication it does not work!! GNAT.Serial_Communications.Write(Port =3D> The_Port, Buffer =3D> String_To_Stream(Broadcast_Message)); function String_To_Stream ( The_String : in String) return Ada.Streams.Stream_Element_Array is Return_Value : Ada.Streams.Stream_Element_Array(1..The_String'length); begin Put (" Start of Data out :- "); for count in 1..Ada.Streams.Stream_Element_Offset(The_String'Length) loop Return_Value(count) :=3D character'pos(The_String(Integer(count))); int_io.Put(Integer(Return_Value(count))); end loop; Put (" End of Data out "); Put_Line (The_String); Return Return_Value(1..The_String'Length); end String_To_Stream; Is there anything you can see thats wrong there ?