Получится сделать задержку каждых 104 микросекунды с тактовой частотой чипа 2мгц,
И еще, если все вже использовать задержку длино 1мс, то это не будет работать на меьшей скорости?
Когда ставишь скорость 9600 то чип прям ожидает что сигнал будет меняться точно с такой скоростью? Просто стало интересно если например подрят идут две логические единицы, то как он понимает что это два разных бита, а не один и тот же или переход в режим ожидания.
Я не просто так указал verilog здесь
как я понял мне нужно убрать указатель на число обозначающее сколько было записано/прочтено, но оставить GetOverlappedResult для асинхронного порта
Это и есть причина таких смещений и ошибок?
то есть ReadFileEx должно упростить и исправить ситуацию?
Проверка чтения идет по возвращаемому DWORD.
Я уберу GetOverlappedResult
Сложно потому что 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);
Никак не интерпретирует, это нарастающий фронт.