In mijn BMS moet ik per accu een mini boardje bouwen, en deze boardjes moeten communiceren met een centrale unit, om hun status door te geven enzo.

Seriele communicatie is hiervoor het simpelste denk ik, dus een testje gestart met de netduino. Ik heb er twee dus een goede test is om deze met elkaar te laten praten over een seriele verbinding.

Setup:

Pin1 van netduino 1 op pin 2 van netduino 2
Pin2 van netduino 1 op pin 1 van hetduino 2
En de grounds connected natuurlijk

Code op de sender:

1: publicstaticvoid Main()

2: {

3: SerialPort port = new SerialPort(SerialPorts.COM1,115200);

4: OutputPort led = new OutputPort(Pins.ONBOARD_LED, false);

5:

6: port.Open();

7:

8: while (true)

9: {

10: led.Write(true);

11: port.Write(buff, 0, buff.Length);

12: Thread.Sleep(100);

13: led.Write(false);

14: Thread.Sleep(900);

15: buff = Encoding.UTF8.GetBytes(DateTime.Now.TimeOfDay.ToString());

16: }

17: }

Code op de receiver:
1: publicstaticvoid Main()

2: {

3:

4: SerialPort serial = new SerialPort(SerialPorts.COM1, 115200);

5: serial.ReadTimeout = 8;

6: serial.DataReceived += new SerialDataReceivedEventHandler(serial_DataReceived);

7: serial.Open();

8: while (true)

9: {

10:

11: Thread.Sleep(Timeout.Infinite);

12: }

13:

14: }

15:

16: staticvoid serial_DataReceived(object sender, SerialDataReceivedEventArgs e)

17: {

18: int bytesReceived = ((SerialPort)sender).BytesToRead;

19: byte[] bytes = newbyte[bytesReceived];

20: ((SerialPort)sender).Read(bytes, 0, bytes.Length);

21: string received = newstring(System.Text.Encoding.UTF8.GetChars(bytes));

22: Debug.Print(received);

23:

24: }

En dat werkt. In de output van de receiver zie ik de tijd die door de sender gestuurd wordt. Cool.

Foto:

IMAGE_262