Member 14635598 Ответов: 1

Vba: как я могу принудительно применить кодировку к utf-8 при использовании api writefile


Мне нужно использовать VBA для связи по rs232 с модулем, который ожидает 8-битные кадры. Я использую filewrite из API32
Я думал, что этого будет достаточно, чтобы отправить как один байт, но я вижу, что каждый байт выходит на rs232 как два байта. Точно один видит, что я получаю исходный байт, преобразованный в utf-16. Например, стремясь транслировать 0x35, я на самом деле отправлю 0x33 в качестве первого байта и 0x35 в качестве второго. Получатель тогда не поймет, что имелось в виду.

Что я уже пробовал:

Пока без понятия - я рассматриваю возможность использования методов из systemio вместо этого

Richard MacCutchan

Это говорит о том, что ваш код пытается отправить строку "35", а не один шестнадцатеричный символ "\x35". К сожалению, вы забыли показать нам код, так что это что-то вроде Дикой догадки.

Patrice T

В вашем секретном коде есть секретная ошибка.
Решение зависит от вашего кода.

1 Ответов

Рейтинг:
1

RickZeeland

Попробуйте использовать строки вместо FileWrite, см. пример здесь:
Как отправить строки в последовательные порты в Visual Basic | Microsoft Docs[^]

Также видеть: Как конвертировать строки Юникода VBA/VB6 в UTF-8[^]