Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Code Project
  1. Home
  2. General Programming
  3. C#
  4. Structure converstion to Bytearray

Structure converstion to Bytearray

Scheduled Pinned Locked Moved C#
questioncsharp
12 Posts 4 Posters 0 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • S Offline
    S Offline
    San 0
    wrote on last edited by
    #1

    Hi All, I have a struct in C# application used for serial port communication. I have to read the struct value send from C# application to a C application. What is to be done??? Thanks in Advance San

    D L 2 Replies Last reply
    0
    • S San 0

      Hi All, I have a struct in C# application used for serial port communication. I have to read the struct value send from C# application to a C application. What is to be done??? Thanks in Advance San

      D Offline
      D Offline
      DaveyM69
      wrote on last edited by
      #2

      This was asked the other day with the accepted solution here[^].

      Dave
      BTW, in software, hope and pray is not a viable strategy. (Luc Pattyn)
      Expect everything to be hard and then enjoy the things that come easy. (code-frog)

      1 Reply Last reply
      0
      • S San 0

        Hi All, I have a struct in C# application used for serial port communication. I have to read the struct value send from C# application to a C application. What is to be done??? Thanks in Advance San

        L Offline
        L Offline
        lisan_al_ghaib
        wrote on last edited by
        #3

        You are running serial port communication between 2 managed program?

        S 1 Reply Last reply
        0
        • L lisan_al_ghaib

          You are running serial port communication between 2 managed program?

          S Offline
          S Offline
          San 0
          wrote on last edited by
          #4

          C# program is wrting the data. C program is reading the data. Regards, Sangeetha

          L 1 Reply Last reply
          0
          • S San 0

            C# program is wrting the data. C program is reading the data. Regards, Sangeetha

            L Offline
            L Offline
            lisan_al_ghaib
            wrote on last edited by
            #5

            okey then the best way to do this is to define a sort of a 'communication protocol' between two devices : First byte : message lenght (or data length) data bytes : your data byte that holds checksum [data length][.....data.....][checksum] then in your C# program you have to create a class that build the message you have to send : calculate length convert your structure on a data array (*) calculate the checksum -> So here we are in the core of your question: the best way is to loop over EACH element of your strucuture convert it into byte array and the add it to data array use BitConverter class : BitConverter.GetBytes (T) -> T is an elementary type (float, double, char, int, etc...)

            S 1 Reply Last reply
            0
            • L lisan_al_ghaib

              okey then the best way to do this is to define a sort of a 'communication protocol' between two devices : First byte : message lenght (or data length) data bytes : your data byte that holds checksum [data length][.....data.....][checksum] then in your C# program you have to create a class that build the message you have to send : calculate length convert your structure on a data array (*) calculate the checksum -> So here we are in the core of your question: the best way is to loop over EACH element of your strucuture convert it into byte array and the add it to data array use BitConverter class : BitConverter.GetBytes (T) -> T is an elementary type (float, double, char, int, etc...)

              S Offline
              S Offline
              San 0
              wrote on last edited by
              #6

              Could u please send any sample code or link to imlement this. I am a beginner to this Regards, San

              J L 2 Replies Last reply
              0
              • S San 0

                Could u please send any sample code or link to imlement this. I am a beginner to this Regards, San

                J Offline
                J Offline
                J4amieC
                wrote on last edited by
                #7

                San wrote:

                I am a beginner to this

                Then start with something simpler, like Hello World. If however you're being paid to do this I suggest you go to your employer and tell them you are not yet capable of the task you have been set.

                L 1 Reply Last reply
                0
                • S San 0

                  Could u please send any sample code or link to imlement this. I am a beginner to this Regards, San

                  L Offline
                  L Offline
                  lisan_al_ghaib
                  wrote on last edited by
                  #8

                  let suppose your have this Class :

                  class SomeClass
                  {
                  double l;
                  double [] m = new double [10]; //double array
                  string s;

                  byte [] ToByteArray ()
                  {
                  List<byte> b = new List<byte> ();
                  b.AddRange (BitConverter.GetBytes (l));
                  for (int i = 0; i < m.Length ; i++)
                  b.AddRange (BitConverter.GetBytes (m [i]));
                  char [] tabc = s.ToCharArray();
                  for ( int i = 0 ; i < m.Lenght ; i++)
                  b.AddRange (BitConverter.GetBytes (tabc [i]);

                    return  b.ToArray();
                  

                  }
                  }
                  //usage :
                  SomeClass c = new SomeClass ();
                  byte [] b = c.ToByteArray();

                  S 1 Reply Last reply
                  0
                  • J J4amieC

                    San wrote:

                    I am a beginner to this

                    Then start with something simpler, like Hello World. If however you're being paid to do this I suggest you go to your employer and tell them you are not yet capable of the task you have been set.

                    L Offline
                    L Offline
                    lisan_al_ghaib
                    wrote on last edited by
                    #9

                    Hello ! Don't be so Rude :) we all were beginners some time !

                    J 1 Reply Last reply
                    0
                    • L lisan_al_ghaib

                      Hello ! Don't be so Rude :) we all were beginners some time !

                      J Offline
                      J Offline
                      J4amieC
                      wrote on last edited by
                      #10

                      Yes, and we started with beginner-ish tasks, not in-depth like this sort of thing.

                      L 1 Reply Last reply
                      0
                      • J J4amieC

                        Yes, and we started with beginner-ish tasks, not in-depth like this sort of thing.

                        L Offline
                        L Offline
                        lisan_al_ghaib
                        wrote on last edited by
                        #11

                        +1 dude !

                        1 Reply Last reply
                        0
                        • L lisan_al_ghaib

                          let suppose your have this Class :

                          class SomeClass
                          {
                          double l;
                          double [] m = new double [10]; //double array
                          string s;

                          byte [] ToByteArray ()
                          {
                          List<byte> b = new List<byte> ();
                          b.AddRange (BitConverter.GetBytes (l));
                          for (int i = 0; i < m.Length ; i++)
                          b.AddRange (BitConverter.GetBytes (m [i]));
                          char [] tabc = s.ToCharArray();
                          for ( int i = 0 ; i < m.Lenght ; i++)
                          b.AddRange (BitConverter.GetBytes (tabc [i]);

                            return  b.ToArray();
                          

                          }
                          }
                          //usage :
                          SomeClass c = new SomeClass ();
                          byte [] b = c.ToByteArray();

                          S Offline
                          S Offline
                          San 0
                          wrote on last edited by
                          #12

                          thankyou so much

                          1 Reply Last reply
                          0
                          Reply
                          • Reply as topic
                          Log in to reply
                          • Oldest to Newest
                          • Newest to Oldest
                          • Most Votes


                          • Login

                          • Don't have an account? Register

                          • Login or register to search.
                          • First post
                            Last post
                          0
                          • Categories
                          • Recent
                          • Tags
                          • Popular
                          • World
                          • Users
                          • Groups