Hi all,
Please help me with a complete example of C# for reading a struct,
i can receive serial information but i can not receive struct maybe someone else has a bigger experience in c# or a working example
Typedef struct {
char 1start;
float 2a;
float 3a;
float 4a;
float 5a;
float 6a;
float 7a;
char 8end;
} Payload;
Payload payload;
void setup() {
Serial.begin(9600);
}
void loop() {
payload.2a=2.22;
payload.3a=3.33;
payload.4a=4.44;
payload.1start='#';
payload.8end='&';
payload.5a=5.55;
payload.6a=6.66;
payload.7a=7.77;
_writeAnything(0, payload);
}
template <class T> long int _writeAnything(int ee, T& valuebt)
{
Serial.write('/');
Serial.write((byte *) &valuebt, sizeof(valuebt));
}
the C# code that i use, but with it i am not receiving correct data is
using System;
using System.Text;
using System.Data;
using System.IO.Ports;
using System.Threading;
using System.IO;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Windows;
namespace ConsoleApp1
{
class Program
{
public struct PayloadSerial
{
public char 1start;
public float 2b;
public float 3b;
public float 4b;
public float 5b;
public float 6b;
public float 7b;
public char 8tend;
}
static SerialPort _serialPort;
static char rc;
public static unsafe void Main()
{
_serialPort = new SerialPort();
_serialPort.PortName = "COM7";//Set your board COM
_serialPort.BaudRate = 9600;
_serialPort.DataBits = 8;
_serialPort.Parity = Parity.None;
_serialPort.StopBits = StopBits.One;
_serialPort.Handshake = Handshake.None;
_serialPort.DtrEnable = true;
_serialPort.RtsEnable = true;
_serialPort.Open();
PayloadSerial payloadSerial;
while (true)
{
char someText = (char)_serialPort.ReadChar();
rc = someText;
if (rc == '/')
{
byte* p = (byte*)&payloadSerial;
int i;
for (i = 0; i < 26; i++)
{
*p++ = (byte)_serialPort.ReadByte();
}
//---------------------------------------------------------------------------------------------
// if (payloadSerial.1start == '#' && payloadSerial.8end == '&') {
Console.WriteLine(payloadSerial.2b);
Console.WriteLine(payloadSerial.3b);
Console.WriteLine(payloadSerial.4b);
Console.WriteLine(payloadSerial.1tstart);
Console.WriteLine(payloadSerial.8tend);
Console.WriteLine(payloadSerial.5b);
Console.WriteLine(payloadSerial.6b);
Console.WriteLine(payloadSerial.7b);
Console.WriteLine(" ");
Console.WriteLine(" ");
Thread.Sleep(50);
}
}
}
}
}