private async Task SelectAndInitSerial(SerialDevice myserial)
{
try
{
if (myserial == null)
{
string aqs = SerialDevice.GetDeviceSelector();
var dis = await DeviceInformation.FindAllAsync(aqs);
for (int i = 0; i < dis.Count; i++)
{
Debug.WriteLine(string.Format("Serial device found: {0}", dis[i].Id));
if (dis[i].Id.IndexOf("UART0") != -1)
{
serialPort = await SerialDevice.FromIdAsync(dis[i].Id);
}
}
}
else
serialPort = myserial;
if (serialPort != null)
{
serialPort.BaudRate = 500000; //the communication speed with the 2 arduinos.
// you may need to do the following steps into your RaspberryPi rinnong Windows IoT core:
//Reg add hklm\system\controlset001\services\serpl011\parameters /v MaxBaudRateNoDmaBPS /t REG_DWORD /d 921600
//Devcon restart acpi\bcm2837
//initializing the defaults timeout and other serial data
serialPort.WriteTimeout = TimeSpan.FromMilliseconds(BrickPi.Timeout);
serialPort.ReadTimeout = TimeSpan.FromMilliseconds(BrickPi.Timeout);
serialPort.Parity = SerialParity.None;
serialPort.StopBits = SerialStopBitCount.One;
serialPort.DataBits = 8;
//this will be used only for debug. Nothing else is implemented so far
serialPort.ErrorReceived += SerialPort_ErrorReceived;
}
}
catch (Exception ex)
{
Debug.WriteLine(string.Format("Exception initializing serrail port: {0}", ex.Message));
}
}