这篇文章似乎与Windows IoT 和 DS3231 RTC 时钟 重复,但它似乎对我不起作用。我没有在这种环境中使用 i2c 的经验。
我的预期功能是,
- 在启动时检查是否有任何网络连接来更新系统时钟
- 如果离线,系统将读取
datetime
并DS3231
更新系统datetime
datetime
from的任何更改,datepicker
否则timepicker
它将更新DS3231
我的问题是
- 如何检查网络可用性以更新系统时钟。
从
DS3231
使用i1cdevice.writeread
要求中write
read address
分别读取?是否会i2c
自动读取所有数据,直到stop
收到位或我必须设置一个计数器?private const byte DS3231_I2C_WADDR = 0xD0; private const byte DS3231_I2C_RADDR = 0xD1; private I2cDevice DS3231_RTC; byte[] i2CWriteBuffer; byte[] i2CReadBuffer; private async void Read_DS3231_RTC() { var settings = new I2cConnectionSettings(DS3231_I2C_RADDR); settings.BusSpeed = I2cBusSpeed.StandardMode; var controller = await I2cController.GetDefaultAsync(); DS3231_RTC = controller.GetDevice(settings); try { DS3231_RTC.WriteRead(new byte[] { DS3231_I2C_RADDR }, i2CReadBuffer); } catch (Exception e) { StatusMessage.Text = "Fail to Init I2C:" + e.Message; return; } }
在设置我如何更新到
DS3231
时写入时间设置dateicker
timepicker
datetime
DS3231
private void DatePicker_DateChanged(object sender, DatePickerValueChangedEventArgs e) { DateTimeSettings.SetSystemDateTime(e.NewDate.UtcDateTime); SetTime_DS3231(); } private void TimePicker_TimeChanged(object sender, TimePickerValueChangedEventArgs e) { var currentDate = DateTime.Now.ToUniversalTime(); var newDateTime = new DateTime(currentDate.Year, currentDate.Month, currentDate.Day, e.NewTime.Hours, e.NewTime.Minutes, e.NewTime.Seconds); DateTimeSettings.SetSystemDateTime(newDateTime); }
谢谢你。