Сложно потому что IO_PENDING, OVERLAPPED в асинхронном режиме должна быть не NULL в WriteFile
GetOverlappedResult(port_handle, &overlap, &NumOfWritten, TRUE)
идёт сразу следом за WriteFile
?DWORD ComIface::read_block(byte* buffer, int size) должна за 1 ReadFile заполнить byte[N]
&NumberOfBytesRead
и &overlap
в ReadFile не рекомендуется, см. Отсутствие проверки результата вызова ReadFile выглядит стрёмно. uint32_t' {aka 'long unsigned int'}
я специально посмотрел в исходники и…
typedef unsigned int __uint32_t;
Таким образом мы только можем получить ксор всех этапов. Т.е. первых х байт из всех 16 этапов. Это не даёт никаких преимуществ потому, что мы не можем знать полный хеш
я думаю что не стоит рассматривать ситуации, когда большая часть текста является раскрытой. Это просто не имеет смысла
одно я понял точно: универ, где я учусь, параша: нас учили использовать в таких случаях fflish(stdin)
и у всех как ни странно работало
с какой операционной системы или что у вас за терминал
так ваш вариант с пробелом после спецификатора формата в scanf не работает должным образом
и да будет вам счастье с ожидаемым поведением, описанное стандартом и чем-угодно
fflush(stdin)
не работает и показал, что этому есть обоснование в мануале (кстати, в стандарте C99 вообще написано, что fflush для потока ввода -- UB). Не нужно из-за этого чувствовать себя уязвлённым, так работает этот сайт: люди указывают вам на ваши ошибки, а вы им -- на их. лучше, скорее всего, очистить буфер используя fflush(stdin), как я указал выше.
не совсем понятно зачем в scanf("%d ", &num) нужен пробел. scanf будет бесконечно ожидать ввода любого непробельного символа после ввода num.
getchar()
заменить на scanf("%*[^+-*:]%1[+-*:]", &op);
Это теперь конечно немного обесценивает мою интерпретацию порта E в двоичном коде.
мы же сдвинули это число на 8 разрядов влево, чтобы работать с битами от 8 по 15
HAL_GPIO_WritePin(..., led_state + 1, ...)
, led_state не увеличился бы на 1, со сдвигом всё то же самое. led_state = led_state >> 1 | led_state << 7; Сдвиг выполняется от изначального числа два раза, т.е. 00000001.00000000 и 1.10000000.00000000 и тд.
target_include_directories(test PRIVATE ${YOUR_DIRECTORY})
#include
.add_executable(main ${PROJECT_SRC})
file(GLOB PROJECT_SRC
"*.h"
"*.cpp"
)
*.h
в список исходников -- идея не очень.
Павел Соколов, чем плох просто ReadFile?
В возвращаемом DWORD будет мусор, если операция чтения не завершилась, а проверки на это нет.
Только если вместе с параметром overlapped функций ReadFile/WriteFile.