Внешняя компонента, в сканируемый штрихкод добавляются китайские символы
Всем привет! Использую 1С на планшете, к которому подключил usb-сканер. Для планшета сделал внешнюю компоненту, которая подключает usb-сканер к планшету и получает ШК при сканировании. Проблема в том, что в 1С в штрихкоде появляются кракозябры:
При сканировании в мобильном приложении (на Java) вызывается dcssdkEventBarcode:
Через logcat вижу, что на данном этапе штрихкод корректный.
Далее в С++ :
Т.е., предположительно, штрихкод портится в С++ коде. Что делаю не так?(
При сканировании в мобильном приложении (на Java) вызывается dcssdkEventBarcode:
public static native void OnBarcodeScan(long pObject, byte[] barcodeData);
@Override
public void dcssdkEventBarcode(byte[] barcodeData, int barcodeType, int fromScannerID) {
Log.e("RSUSB", "Sending barcode: " + new String(barcodeData));
OnBarcodeScan(m_V8Object, barcodeData);
}
ПоказатьЧерез logcat вижу, что на данном этапе штрихкод корректный.
Далее в С++ :
extern "C" JNIEXPORT void JNICALL Java_rs_usbscan_RSUsbScanDriver_OnBarcodeScan(JNIEnv * env, jclass jClass, jlong pObject,
jstring barcode)
{
IAddInDefBaseEx* pAddIn = (IAddInDefBaseEx*)pObject;
std::wstring barcode_w = jstring2wstring(env, barcode);
pAddIn->ExternalEvent(s_EventSource, s_EventName, WcharWrapper(barcode_w.c_str()));
}
std::wstring jstring2wstring(JNIEnv* jenv, jstring aStr)
{
std::wstring result;
if (aStr)
{
const jchar* pCh = jenv->GetStringChars(aStr, 0);
jsize len = jenv->GetStringLength(aStr);
const jchar* temp = pCh;
while (len > 0)
{
result += *(temp++);
--len;
}
jenv->ReleaseStringChars(aStr, pCh);
}
return result;
}
ПоказатьТ.е., предположительно, штрихкод портится в С++ коде. Что делаю не так?(
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот