comp.lang.ada
 help / color / mirror / Atom feed
From: "Beard, Frank" <beardf@spawar.navy.mil>
To: "'comp.lang.ada@ada.eu.org'" <comp.lang.ada@ada.eu.org>
Subject: RE: How to convert record?
Date: Mon, 29 Oct 2001 13:16:58 -0500
Date: 2001-10-29T13:16:58-05:00	[thread overview]
Message-ID: <mailman.1004379548.31870.comp.lang.ada@ada.eu.org> (raw)

One other thing you might want to consider:


procedure Write_ABCD (the_Command : Command) is

   Length : Posix.IO_Count :=
Posix.IO_Count(the_Command'size/Posix.Posix_Character'size);
   Buffer : IO_Buffer (1 .. positive(length));
   for Buffer use at the_Command'address;

begin

   POSIX.IO.write (File_Descriptor, Buffer, Length);

end Write_ABCD;


I've used it on both Windows and a couple of Unix flavors without
any problems, but we were always communicating between homogenous 
platforms (same hardware, same OS).  If you are in a heterogeneous
environment, you have to use a different method, but you have the
same problem with Unchecked_Conversion.

I like it because it's fairly straight forward and it doesn't copy
data like Unchecked_Conversion, which is particularly good when
dealing with large buffers.

Frank


-----Original Message-----
From: joseph_kwan@greenlime.com [mailto:joseph_kwan@greenlime.com]


Hello,

I just started to learn Ada and have been playing/working with Ada for
two weeks now.

I want to send a command buffer to serial port using florist's POSIX
interface but I have encountered problems in converting record to
POSIX.IO.IO_Buffer or Ada.Streams.Stream_Element_Array. How can I
overcome this problem?

package ABCD is

   type Command is
      record
          A : Character;
          B : Character;
          C : Integer;
          D : Long_Integer;
      end record;    -- total 8 bytes;

...
end ABCD;


POSIX.IO.write (File_Descriptor, Command, Length);

where 

   procedure Write
     (File           : in File_Descriptor;
      Buffer         : in IO_Buffer;
      Last           : out POSIX.IO_Count;
      Masked_Signals : in POSIX.Signal_Masking
                     := POSIX.RTS_Signals);

I have searched the CLA but do not find any solutions. Can you please
help?

Thank you.
_______________________________________________
comp.lang.ada mailing list
comp.lang.ada@ada.eu.org
http://ada.eu.org/mailman/listinfo/comp.lang.ada



             reply	other threads:[~2001-10-29 18:16 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2001-10-29 18:16 Beard, Frank [this message]
2001-10-30  1:17 ` How to convert record? Adrian Hoe
  -- strict thread matches above, loose matches on Subject: below --
2001-10-31 19:40 Beard, Frank
2001-11-01  2:13 ` Adrian Hoe
2001-10-30 19:05 Beard, Frank
2001-10-31  4:10 ` Adrian Hoe
2001-10-21  9:56 Joseph Kwan
2001-10-22 11:30 ` John McCabe
2001-10-25 11:40   ` Joseph Kwan
2001-10-25 12:38     ` sk
2001-10-25 17:12       ` Jeffrey L. Susanj
2001-10-25 12:48     ` David C. Hoos
2001-10-29  1:42       ` Joseph Kwan
2001-10-29 13:35         ` Marc A. Criley
2001-10-25 12:48     ` Marc A. Criley
2001-10-25 12:54       ` sk
2001-10-25 15:41         ` Ted Dennison
2001-10-26  3:21           ` Smark
2001-10-26  5:45             ` James Rogers
2001-10-26 17:46               ` Smark
2001-10-26 14:30             ` Ted Dennison
2001-10-26 17:42               ` Smark
2001-10-26 20:02                 ` Ted Dennison
2001-10-26 23:10             ` Jeffrey Carter
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox