Library to control the mp3-tf-16p

Dependents:   LaserSensor

Committer:
JeroenAero
Date:
Tue Jan 25 19:26:21 2022 +0000
Revision:
2:4697650da797
Version1;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
JeroenAero 2:4697650da797 1 #include "mbed.h"
JeroenAero 2:4697650da797 2 #include "LAS_TB.h"
JeroenAero 2:4697650da797 3
JeroenAero 2:4697650da797 4 LAS_TB::LAS_TB(PinName PinTX, PinName PinRX) : SerialPort(PinTX,PinRX)
JeroenAero 2:4697650da797 5 {
JeroenAero 2:4697650da797 6 //constructor.
JeroenAero 2:4697650da797 7 SerialPort.baud(115200);
JeroenAero 2:4697650da797 8 SerialPort.attach(callback(this,&LAS_TB::Rx_interrupt), Serial::RxIrq);
JeroenAero 2:4697650da797 9
JeroenAero 2:4697650da797 10 //Dit verzenden we naar de LAS-TB. Bevat het order get measured....
JeroenAero 2:4697650da797 11 Stack[0] = 0x55; //Sync byte.
JeroenAero 2:4697650da797 12 Stack[1] = 0x08; //Order (Get measerued values from L-LAS-RAM.)
JeroenAero 2:4697650da797 13 Stack[2] = 0x00; //ARG LO.
JeroenAero 2:4697650da797 14 Stack[3] = 0x00; //ARG HI.
JeroenAero 2:4697650da797 15 Stack[4] = 0x00; //LEN LO.
JeroenAero 2:4697650da797 16 Stack[5] = 0x00; //LEN HI.
JeroenAero 2:4697650da797 17 Stack[6] = 0xAA; //CRC8 HEAD.
JeroenAero 2:4697650da797 18 Stack[7] = 0x76; //CRC8 DATA.
JeroenAero 2:4697650da797 19 }
JeroenAero 2:4697650da797 20
JeroenAero 2:4697650da797 21 union Converter
JeroenAero 2:4697650da797 22 {
JeroenAero 2:4697650da797 23 int32_t um; // occupies 4 bytes
JeroenAero 2:4697650da797 24 uint8_t byteArray[4]; // occupies 4 bytes
JeroenAero 2:4697650da797 25 };
JeroenAero 2:4697650da797 26
JeroenAero 2:4697650da797 27 //Vragen om een meting.
JeroenAero 2:4697650da797 28 void LAS_TB::MeasurementRequest()
JeroenAero 2:4697650da797 29 {
JeroenAero 2:4697650da797 30 SendStack();
JeroenAero 2:4697650da797 31 }
JeroenAero 2:4697650da797 32
JeroenAero 2:4697650da797 33 //Wordt uitgevoerd bij ontvangen bericht.
JeroenAero 2:4697650da797 34 void LAS_TB::Rx_interrupt()
JeroenAero 2:4697650da797 35 {
JeroenAero 2:4697650da797 36 while (SerialPort.readable())
JeroenAero 2:4697650da797 37 {
JeroenAero 2:4697650da797 38 for (int i = 0; i < 71; i++)
JeroenAero 2:4697650da797 39 {
JeroenAero 2:4697650da797 40 ReceivedStack[i] = ReceivedStack[i+1];
JeroenAero 2:4697650da797 41 }
JeroenAero 2:4697650da797 42 ReceivedStack[71] = SerialPort.getc();
JeroenAero 2:4697650da797 43
JeroenAero 2:4697650da797 44 //Hoe weten we dat het bericht goed is?
JeroenAero 2:4697650da797 45 if (ReceivedStack[0] == 0x55 && ReceivedStack[1] == 0x08 && ReceivedStack[4] == 64)
JeroenAero 2:4697650da797 46 {
JeroenAero 2:4697650da797 47 int32_t temp = ReceivedStack[16];
JeroenAero 2:4697650da797 48
JeroenAero 2:4697650da797 49 umvalue = temp << 24;
JeroenAero 2:4697650da797 50 temp = ReceivedStack[17];
JeroenAero 2:4697650da797 51 umvalue += temp << 16;
JeroenAero 2:4697650da797 52 temp = ReceivedStack[18];
JeroenAero 2:4697650da797 53 umvalue += temp << 8;
JeroenAero 2:4697650da797 54 temp = ReceivedStack[19];
JeroenAero 2:4697650da797 55 umvalue += temp;
JeroenAero 2:4697650da797 56 }
JeroenAero 2:4697650da797 57 }
JeroenAero 2:4697650da797 58 }
JeroenAero 2:4697650da797 59
JeroenAero 2:4697650da797 60 //Het sturen van data.
JeroenAero 2:4697650da797 61 //Sends the stack of data to the sensor module.
JeroenAero 2:4697650da797 62 void LAS_TB::SendStack()
JeroenAero 2:4697650da797 63 {
JeroenAero 2:4697650da797 64
JeroenAero 2:4697650da797 65 for (int i = 0; i < 10; i++)
JeroenAero 2:4697650da797 66 {
JeroenAero 2:4697650da797 67 SerialPort.putc(Stack[i]);
JeroenAero 2:4697650da797 68 }
JeroenAero 2:4697650da797 69
JeroenAero 2:4697650da797 70 }