Я пытаюсь отправить строку JSON через I2C от Arduino Uno до RaspPi, запускающего Win IOT Core.Отправка строки JSON через I2C между Arduino и RPi IOT C#
Соединение работает нормально, я зарегистрировал обработчик событий на стороне Arduino, который называется прекрасным, когда master (rpi) запрашивает данные.
void I2CRequest()
{
Serial.println("I2C Request received");
/*Send data to WinIoT */
int bt = Wire.write(lastJSON.c_str());
Serial.println(lastJSON);
Serial.print("Send bytes: ");
Serial.println(bt);
}
Выход на монитор последовательного порта выглядит также хорошо ...
I2C Request received
{"Sensor":"OneWire","data":["28ffc8675216451",23.9375,"28ff9feb521645e",24.0625]}
Send bytes: 81
Метод C# на RPi выглядит следующим образом:
public static async Task<byte[]> GetI2CTemperatures()
{
var ReceivedData = new byte[1024];
/* Arduino Nano's I2C SLAVE address */
int SlaveAddress = 64; // 0x40
try
{
// Initialize I2C
var Settings = new I2cConnectionSettings(SlaveAddress);
Settings.BusSpeed = I2cBusSpeed.StandardMode;
if (AQS == null || DIS == null)
{
AQS = I2cDevice.GetDeviceSelector("I2C1");
DIS = await DeviceInformation.FindAllAsync(AQS);
}
using (I2cDevice Device = await I2cDevice.FromIdAsync(DIS[0].Id, Settings))
{
if (Device==null)
{
Debug.Write("No access to I2C Device");
}
/* Read from Arduino */
Device.Read(ReceivedData);
}
}
catch (Exception ex)
{
Debug.WriteLine("Exception occurred on reading I2C",ex);
// SUPPRESS ANY ERROR
}
/* Return received data or ZERO on error */
return ReceivedData;
}
}
К сожалению, все, что я делаю, я просто получить в результате в ReceivedData
a 00
в качестве первого байта, а затем FF
s.
Я пробовал также Device.ReadPartial()
вместо Device.Read()
с тем же результатом.
Может кто-нибудь указать мне в правильном направлении, что я делаю неправильно?
вы пробовали removin g 'Serial.println (« Полученный запрос I2C »);' в 'I2CRequest()'? –
Я пробовал (конечно) с тем же результатом ... Как следует удалить сообщение журнала? –