initial commit
This commit is contained in:
@@ -0,0 +1,96 @@
|
||||
using LibUsbDotNet.LibUsb;
|
||||
using RTCSync.Models;
|
||||
using RTCSync.Utils;
|
||||
|
||||
namespace RTCSync.Services;
|
||||
|
||||
public class DeviceReaders
|
||||
{
|
||||
public static TimeModel GetTimeRTC(IUsbDevice device)
|
||||
{
|
||||
// Читаем все 7 байт времени начиная с регистра 0x00
|
||||
var time = I2CUtils.ReadWithRetry(device, 0x68, 0x00, 8);
|
||||
var timeModel = new TimeModel(time);
|
||||
return timeModel;
|
||||
}
|
||||
|
||||
public static void PrintTimeRTC(IUsbDevice device)
|
||||
{
|
||||
var timeModel = GetTimeRTC(device);
|
||||
PrintTimeRTC(timeModel);
|
||||
}
|
||||
|
||||
public static void PrintTimeRTC(TimeModel timeModel)
|
||||
{
|
||||
Console.WriteLine(timeModel.Time.ToString("HH:mm:ss dd.MM.yyyy"));
|
||||
}
|
||||
|
||||
|
||||
public static byte[] GetStatusRegister(IUsbDevice device)
|
||||
{
|
||||
return I2CUtils.ReadWithRetry(device, 0x68, 0x0F, 1);
|
||||
}
|
||||
|
||||
public static void PrintStatusValues(IUsbDevice device)
|
||||
{
|
||||
var status = GetStatusRegister(device);
|
||||
PrintStatusValues(status);
|
||||
}
|
||||
|
||||
public static void PrintStatusValues(byte[] status)
|
||||
{
|
||||
var statusBits = string.Concat(status.Select(b => Convert.ToString(b, 2).PadLeft(8, '0')));
|
||||
Console.WriteLine("Status Register (0Fh):");
|
||||
Console.WriteLine("| OSF | 0 | 0 | 0 | EN32kHZ | BSY | A2F | A1F |");
|
||||
Console.WriteLine($"| {statusBits[0], -3} | {statusBits[1]} | {statusBits[2]} | {statusBits[3]} | {statusBits[4], -7} | {statusBits[5], -3} | {statusBits[6], -3} | {statusBits[7], -3} |");
|
||||
Console.WriteLine();
|
||||
}
|
||||
|
||||
|
||||
public static byte[] GetControlRegister(IUsbDevice device)
|
||||
{
|
||||
return I2CUtils.ReadWithRetry(device, 0x68, 0x0E, 1);
|
||||
}
|
||||
|
||||
public static void PrintControlValues(IUsbDevice device)
|
||||
{
|
||||
var control= GetControlRegister(device);
|
||||
PrintControlValues(control);
|
||||
}
|
||||
|
||||
public static void PrintControlValues(byte[] control)
|
||||
{
|
||||
var controlBits = string.Concat(control.Select(b => Convert.ToString(b, 2).PadLeft(8, '0')));
|
||||
Console.WriteLine("Control Register (0Eh):");
|
||||
Console.WriteLine("| EOSC | BBSQW | CONV | RS2 | RS1 | INTCN | A2IE | A1IE |");
|
||||
Console.WriteLine($"| {controlBits[0], -4} | {controlBits[1], -5} | {controlBits[2], -4} | {controlBits[3], -3} | {controlBits[4], -3} | {controlBits[5], -5} | {controlBits[6], -4} | {controlBits[7], -4} |");
|
||||
Console.WriteLine();
|
||||
}
|
||||
|
||||
|
||||
public static byte[] GetTemperatureRegisters(IUsbDevice device)
|
||||
{
|
||||
return I2CUtils.ReadWithRetry(device, 0x68, 0x11, 2);
|
||||
}
|
||||
public static void PrintTemperatureValue(IUsbDevice device)
|
||||
{
|
||||
var temp = GetTemperatureRegisters(device);
|
||||
PrintTemperatureValue(temp);
|
||||
}
|
||||
public static void PrintTemperatureValue(byte[] temp)
|
||||
{
|
||||
float tempValue = temp[0];
|
||||
if (temp[1] == 0x40)
|
||||
tempValue += 0.25F;
|
||||
else if (temp[1] == 0x80)
|
||||
tempValue += 0.5F;
|
||||
else if (temp[1] == 0xC0)
|
||||
tempValue += 0.75F;
|
||||
|
||||
Console.WriteLine("Температура:");
|
||||
Console.WriteLine(tempValue);
|
||||
Console.WriteLine();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user