Чтение формата BCD C#

103
28 ноября 2021, 13:50

Есть устройство подключенное к шине ISA, которое периодически слушаю программой. Устройство передает пакет состоящий из 4х байт (32 бит), в пакете закодирована дата, я так понимаю в формате BCD (выделил красным полигоном), что интересно, устройство передает пакет не как массив байт, а как целое число (так реализовано в апи):

Не знаю как правильно собрать эту информацию и в какой вид привести правильно и по фен шую. Больше всего склоняюсь к тому, что бы перевести значение в строку.

Допустим я битовыми сдвигами выделю каждую тетраду из целого числа и так же переведу в целое число. А дальше как, перевести в строку? Можно ли так делать? Или лучше перевести в байты и манипулировать уже ими?

Ну для примера я набросал что-то вроде такого псевдокода:

public struct MyDate
{
    public int Day { get; set; }
    public int Month { get; set; }
    public int Year { get; set; }
}
public MyDate HwDate
    {
        get
        {
            date.Day = GetFrame(data, сдвиг1, сдвиг2);
            date.Month = GeFrame(data, сдвиг1, сдвиг2));
            date.Year = GetFrame(data, сдвиг1, сдвиг2);
            return date
        }
    }
// value - входящие данные от устройства
public int GetFrame(uint value, int length, int shift)
    {
        var mask = ((1U << length) - 1) << shift;
        var frame = value & mask;
        return (int) frame;
    }
READ ALSO
Помощь с циклами

Помощь с циклами

Задание: Друзья составили про Петю задачу: наш друг Петя ест невкусную макаронину длиной 60кмКаждый день он съедает N метров этой макаронины...

205
Десереализация XML ответа от SOAP

Десереализация XML ответа от SOAP

Есть сторонний SOAP сервискоторый возвращает ответ виде XML

203
Laravel, Eloquent - method find() not found in App

Laravel, Eloquent - method find() not found in App

Описываю метод destroy класса TasksController: Написал вот такую функцию:

136
Извлечь данные в цикле php

Извлечь данные в цикле php

Прошу помочь с задачей: есть цикл, в котором выводяться личные сообщения, юзера с его рефером (собеседником)

85