Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft Access Новый топик    Ответить
 Перевод строки в массив данных (ККТ Атол 10)  [new]
KeshaGraf
Member

Откуда:
Сообщений: 1
Доброго времени суток, бьюсь над интеграции ККТ атол через драйвер. Сделал через веб-интерфейс проблем нету. а тут столкнулся. На сайте Атола Есть примеры на большенство, но не на VBA. Столкнулся с такой проблемой.

Есть пример:

fptr.SetParam(fptr10.LIBFPTR_PARAM_MARKING_CODE_TYPE, fptr10.LIBFPTR_MCT_EGAIS_20)

fptr.SetParam(fptr10.LIBFPTR_PARAM_MARKING_CODE, []byte{<массив байтов от сканера>})


Делаю вот так:

If Len(fsm) = 68 Then
Call fptr.SetParam(fptr.LIBFPTR_PARAM_MARKING_CODE_TYPE, fptr.LIBFPTR_MCT_EGAIS_20)
fsm_am = right(Left(fsm, 31), 23)
Call fptr.SetParam(fptr.LIBFPTR_PARAM_MARKING_CODE, CStr(fsm_am))
End If

Ошибок никаких не выдает, но когда проверяю чек в кассе данные марки туда не поступают (Думал проблема в самой ККТ не через веб все работает). Думаю может необходимо из этого CStr(fsm_am) сделать это []byte{<массив байтов от сканера>}. Немогу разобраться как пробовал CByte(fsm_am), но тогда ККТ вообще молчит.

setParam - это функция драйвера ККТ
Переменная fsm_am которую нужно перевести в массив байтов обрезанная отсканираванная марка от алкоголя которая содержи к примеру "20420029976309"
23 мар 21, 13:03    [22298756]     Ответить | Цитировать Сообщить модератору
 Re: Перевод строки в массив данных (ККТ Атол 10)  [new]
Кривцов Анатолий
Member

Откуда:
Сообщений: 613
VBA работает со строками в Unicode (два байта на символ), поэтому для начала попробуйте StrConv(fsm_am, vbFromUnicode) вместо CStr(fsm_am). Если не прокатит, то нужно объявить байтовый массив, присвоить ему StrConv и затем его передать.
23 мар 21, 15:57    [22298893]     Ответить | Цитировать Сообщить модератору
 Re: Перевод строки в массив данных (ККТ Атол 10)  [new]
court
Member

Откуда:
Сообщений: 2271
KeshaGraf
Переменная fsm_am которую нужно перевести в массив байтов обрезанная отсканираванная марка от алкоголя которая содержи к примеру "20420029976309"


Sub test1()
    Dim byMyArray() As Byte
    Dim i As Long
    
    byMyArray = StrConv("20420029976309", vbFromUnicode)
    
    For i = 0 To UBound(byMyArray)
        Debug.Print byMyArray(i)
    Next i
    
    For i = 0 To UBound(byMyArray)
        byMyArray(i) = CByte(Chr(byMyArray(i)))
    Next i
    
    For i = 0 To UBound(byMyArray)
        Debug.Print byMyArray(i)
    Next i
    
End Sub
23 мар 21, 15:59    [22298895]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft Access Ответить