ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Четверг
12 июня
1524172 Топик полностью
Nikolay_Po (Вчера, 09:43, просмотров: 57) ответил klen на С LTO понтно, там нет гарантий. особенно в старых компиляторах, я gcc 16 использую - очень много проблем починили. а вот про "case 0x86:" ... это да. херь какая то. у меня все нормально работает. есть подозрение что это может быть связано с тем с какой хост библиотекой вязать - я самую из транка libusb cую, но согласен - странный костыль.
Насчёт костыля для LinkE - в пакете USB_out USB_IN просто был другой байт, а остальные - те же, что и для строенного в отладочную плату CH549. 

Я смотрел USB сниффером, никаких вопросов к libusb нет, дело лишь в прошивке инструмента. У тебя, судя по скриншоту в заглавном сообщении - WCH-Link-CH549. А у меня WCH-LinkE. И он третий байт во втором обмене даёт 0x86, тогда как у Link-CH549 он 0x06.

Я, бывало, так делал сам - когда по ходу разработки, нужно было добавить в пакет флагов и было ясно, что диапазон значений байта ограничен, добавлял флаги в старшие биты, чтобы не менять размеров посылки. Подумал - ведь 0x86 это то же самое, что и 0x06, если предположить, что 0x80 - это не число, а прицепленный поверх флаг.


В том switch() похожих кейсов не было, и число их было ограниченным. Поэтому внаглую добавил 0х86 к уже имеющемуся 0x06.