IDC ( Inter Device Connection )
IDC stands for Inter-Device Connection and can be used to send and receive serial data between boards.
KLST_PANDA features two such connectors; one left (00
), one right(01
) ( see Technical Specifications ):
- ㉕ :: IDC port ( 6-pin IDC connector ) ( right
01
) - ㉛ :: IDC port ( 6-pin IDC connector ) ( left
00
)
( IDC incidentally also uses a Insulation-Displacement Contact )
SerialDevice
void serial_event(SerialDevice* serial_device)
SerialDevice* serialdevice_create(uint8_t device_type, uint32_t buffer_size, uint32_t baud_rate)
void serialdevice_delete(SerialDevice* serialdevice)
void serialdevice_send(const SerialDevice* serialdevice, const uint8_t* data, uint16_t length)
Example IDC
/**
* this example demonstrates how to use the debugging console to print messages to the serial console.
*/
#include <string>
#include "Arduino.h"
#include "System.h"
#include "Console.h"
#include "SerialDevice.h"
SerialDevice* serial_IDC_00;
SerialDevice* serial_IDC_01;
void setup() {
system_init();
serial_IDC_00 = serialdevice_create(SERIAL_DEVICE_TYPE_IDC_00);
serial_IDC_01 = serialdevice_create(SERIAL_DEVICE_TYPE_IDC_01, 64, 115200);
}
void loop() {
console_println("...");
serialdevice_send(serial_IDC_00, (uint8_t*) "Hello from serial_IDC_00", 24 + 1);
// const char* message = "Hello from serial_IDC_01";
const uint8_t message[4] = {54, 55, 56, 57};
serialdevice_send(serial_IDC_01, (uint8_t*) message, 4);
delay(1000);
}
void serial_event(SerialDevice* serial_device) {
console_println("client: serial event ID %i", serial_device->device_id);
if (serial_device == serial_IDC_00) {
if (serial_device->data != nullptr && serial_device->length > 0) {
std::string data = std::string((char*) serial_device->data, serial_device->length);
console_println("IDC 00 data ( as ASCII ): %s", data.c_str());
console_print("IDC 00 data ( as HEX ) : ");
for (int i = 0; i < serial_device->length; ++i) {
console_print("0x%02X, ", serial_device->data[i]);
}
console_println("");
}
}
if (serial_device == serial_IDC_01) {
console_println("IDC 01 data ( as ASCII ): %s", serial_device->data);
}
}