возможно, я неправильно использую sf флаг?
mov al, mas[si] cmp ax, ax jns positiveOut ;;;;
cmp ax, ax сравнивает ax с самим собой, результат немного предсказуем: они равны, т.е. sf = 0, zf = 1. Чтобы узнать знак числа нужно либо сравнивать его с нулём, либо использовать вместо cmp логическую операцию -- test, or или and.mov al, mas[si] загружает из памяти только al, в ah остаётся мусор от предыдущих операций. По-нормальному после mov нужно сделать знаковое расширение al в ax, если собираешься дальше работать с ax, например так:mov al, mas[si]
cbwsub ax, 1 not ax
neg ax? myvar=$(find "/tmp/folders" -iname "App *" -type d -maxdepth 1) count=${#myvar[@]} echo $count
И в ответ получаю число 120, которое означает количество символов, а не строк
2. Почему в моем примере выводится количество символов в переменной, а не количество строк?
${#myvar[@]} -- это длина массива. Если идея была создать в первой строке массив из имён файлов, то там не хватает пары скобок:myvar=( $(find "/tmp/folders" -iname "App *" -type d -maxdepth 1) )${#myvar[@]} выведет длину этого массива, т.е. количество строк в нём. 1. Реально ли подсчитать количество строк в файле или переменной с помощью глобов, как показано тут - https://stackoverflow.com/a/32727260 ?
wc -l. Почему компьютеры не используют четырехбитный формат для вычислений?
Разве не лучше представлять цифры в полубайтах от 1(0001) до 9(1001)?
мы получим нормальную десятичную систему счисления без приближений в таких числах, как 2,1;3,4;45,9 и т.д.
Как быть?
понял что проект VS обязательно должен быть оконным, в противном случае тупо не будет ресурсов
Нужно как-то переписать ее чтобы можно было переключаться между 3 i2c.
Как обрабатывать прерывания дальномера VL53L0X?
выяснил что проблема в sizeof(buf) который почему то равен 8 после передачи в функцию
как выполнить задержку не понимаю
io_uring_prep_timeout, но кроме этого нужно сериализовать таймаут и все предыдущие команды (чтобы таймаут начинался после их окончания) и следующую после таймаута команду и сам таймаут (чтобы последующие команды не стартовали вместе с таймаутом). Сериализация делается установкой флага IOSQE_IO_DRAIN для sqe, почитать об этом можно например здесь. У меня нарисовался следующий пример, который записывает в файл (stderr), делает паузу в одну секунду, а потом записывает ещё:#include <fcntl.h>
#include <liburing.h>
#include <stdio.h>
#include <sys/mman.h>
#define QUEUE_DEPTH 16
int main(int argc, char **argv)
{
int i;
struct io_uring ring;
struct io_uring_cqe *pcqe;
static const char msg0[] = "before timeout\n";
static const char msg1[] = "after timeout\n";
struct io_uring_sqe *sqe;
io_uring_queue_init(QUEUE_DEPTH, &ring, 0);
io_uring_prep_write(io_uring_get_sqe(&ring), 2, msg0, sizeof(msg0), 0);
sqe = io_uring_get_sqe(&ring);
io_uring_prep_timeout(sqe, (struct __kernel_timespec[]){{.tv_sec = 1}},
-1, IORING_TIMEOUT_ETIME_SUCCESS);
io_uring_sqe_set_flags(sqe, IOSQE_IO_DRAIN);
sqe = io_uring_get_sqe(&ring);
io_uring_prep_write(sqe, 2, msg1, sizeof(msg1), 0);
io_uring_sqe_set_flags(sqe, IOSQE_IO_DRAIN);
io_uring_submit(&ring);
for (i = 0; i < 3; ++i) {
int rv = io_uring_wait_cqe(&ring, &pcqe);
if (rv < 0) {
errno = -rv;
perror("io_uring_wait_cqe");
} else {
io_uring_cqe_seen(&ring, pcqe);
}
}
} Первая проблема что нужно при скорости 9600 бит/c передача одного бита должна происходить прмерно 1/9600 = 104 микорсекунды. HAL_Delay поддерживает минимальный период 1 милисекунда.
какой надо выставлять уровень напряжения на пине в простое
как я могу это сделать?
include <файл в конце стрелки> в h файл в начале стрелки. Стрелки использования добавляют include <файл в конце стрелки> в cc файл в начале стрелки. ONESTOPBIT ломало передачу блока
DWORD ComIface::write(byte* data, int count)
DWORD ComIface::read_block(byte* buffer, int size)
hpet rt; while (get_stats().cbInQue < size) { if (!SetCommMask(port_handle, EV_RXCHAR)) { printf("SetCommMask failed with error %d.\n", GetLastError()); return NumberOfBytesRead; } WaitCommEvent(port_handle, &status, &overlap); WaitForSingleObject(overlap.hEvent, read_delay); if (rt.get_ms_dt_weak().count() > read_delay * size) { return NumberOfBytesRead; } }
Какие проблемы приводят к такому и как это чинить?
static button s1; в заголовочном файле, а это значит, что каждая единица трансляции в которую ты подключил этот файл получит свой собственный, независимый экземпляр переменной s1. Функция ModesInit инициализирует s1 из ModeDriver.o, а s1 из main.o останется неинициализированным.static на extern в заголовочном файле, а в одном из исходников добавив определение для переменной -- button s1;. traverse_loop держит указатель на текущую запись в eax, но первый же вызов PrintName портит почти все регистры и не восстанавливает их, поэтому первый же movzx esi, byte [eax + 10h] после этого вызова обращается мимо памяти и вызывает segfault. Проще всего это исправить каким-нибудь pusha / popa вокруг тела PrintName. После этого ты доберёшься до вызова PrintMark, где увидишь, что эта функция ожидает в eax + 10h текстового представления оценки, а у тебя пока есть только двоичное. Шифрование происходит следующим образом:
Создается хеш ключа с помощью SHA512(его размер = 16 байт).
Для каждого из 16 блоков хеша создается случайное число с помощью Random, используя значение блока в качестве начального числа.
Создается массив байтов того же размера, что и ввод, и заполняется случайными числами.
Каждый байт ввода XOR-суммируется с соответствующим байтом массива байтов.
что я сделал не так, подскажите пожалуйста
if (b[i] >= x || b[i] <= y) { a[j] = b[i]; j++; } ... if (b[i] < x || b[i] > y) { a[j] = b[i]; j++; }
if не являются взаимоисключающими, а значит j может стать больше чем n и запись в a[j] вылезет за границу массива.if (!(b[i] >= x || b[i] <= y)) и это гарантирует, что индекс не выйдет за пределы массива, вне зависимости от правильности первого условия. sizeof(dict)/sizeof(const char)
const char а не на размер const char *. Во избежание таких ошибок для вычисления размера массива обычно пишут sizeof(dict)/sizeof(dict[0]). можно подумать, что при объявлении указателя, символ * относится к имени(не как часть, а как что-то зависящее от него), а не к типу.
const char *a, b; можно превратить в const char (*a), b, но нельзя превратить в const (char *a), b или в char (const *a), b.