0
Исправлен

UROVO U2 + UROVO R70

one 3 месяца назад в UROVO обновлен Михаил Феоктистов 3 месяца назад 19

Добрый день! Имеется проблема при совместной работе ТСД Urovo U2 и кольца Urovo R70. Конкретно, при сканировании Data Matrix (код акцизной марки ЕГАИС) возвращаемые данные не всегда корректны (50% вероятность получить правильные данные). Скриншоты прилагаю. Связь с кольцом по SPP.

Urovo U2 s/n 67262010229791;

Urovo R70 UR-250913; s/n 70205270913.

IMG_20200722_103730.jpg
IMG_20200722_103721.jpg

На рассмотрении

Добрый день! А вы бы не могли скинуть фото вашей акцизной марки.

Да, конечно. Но такая проблемма наблюдается на всех акцизных марках, не только на этой.

А смотрите сверху над самой маркой нет ещё какой-либо штриха? Если есть, возможно он его считывает случайно.

Нет, других штрихкодов нет. По сути, иногда читает акцизку поностью, иногда разбивает ее на две части и отсылает два раза. В scandemo даже видно, как проскакивает первая часть кода, а потом затирается второй частью. Из приведенных мной скриншотов видно, что в неправильном варианте это последние несколько символов правильного варианта.

А как вы подключаете сканер ?  Если есть возможность запишите видео с подключение сканера и считывания.

И пожалуйста можете немного по лучше качество фото , просто не считывает на таком качестве, если опять же есть такая возможность.

Более качественное фото (у меня с него кольцо сканирует) и видео подключения и сканирования.

Видео подключения

IMG_20200722_123453.jpg

Откройте пожалуйста доступ к видео. Я вам запрос скинул. Насчёт фото попробуйте фокус на центр сделать Штрих кода. 

Прошу прощения, забыл общий доступ дать. Видео

Смотрите в кольце память на 128 символов , в вашей акцизной марке видимо больше 128 символов кода. И когда вы читаете этот ШК он начинает делить. То есть сначала один раз полностью считывает , второй раз добавляет остаточный код. Подскажите вы через своё ПО в SPP-mode читаете ? Или вы только через ScanDemo ?

Настрил передачу считываемого штрихкода через Broadcast Intent (скриншоты). Написал простое приложение для получения этого Intent'а:

package com.google.asdfghgghjdhg.urovotest;

import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.widget.TextView;

import java.nio.ByteBuffer;
import java.util.Timer;
import java.util.TimerTask;

public class MainActivity extends AppCompatActivity {
private static final String TAG = "UrovoTest";
//private static final String BARCODE_ACTION = "app.dsic.barcodetray.BARCODE_BR_DECODING_DATA";
private static final String BARCODE_ACTION = "android.intent.ACTION_DECODE_DATA";
//private static final String BARCODE_DATA = "EXTRA_BARCODE_DECODED_DATA";
private static final String BARCODE_DATA = "barcode_string";

private static final char[] CHINA = new char[] {0x90aa, 0x659c, 0x80c1, 0x8c10, 0x5199, 0x68b0, 0x8922, 0x5378, 0x87f9, 0x61c8,
0x6cfb, 0x8c22, 0x5c51, 0x85aa, 0x82af, 0x950c, 0x8909, 0x890b, 0x890c, 0x890d,
0x890e, 0x890f, 0x8911, 0x8914, 0x8915, 0x8916, 0x891c, 0x8918, 0x8917, 0x891d,
0x891e, 0x891f,
0x8897, 0x8898, 0x8899, 0x889a, 0x889b, 0x889d, 0x887c, 0x889e, 0x889f, 0x88a0,
0x88a3, 0x88a5, 0x88a6, 0x88a7, 0x88a8, 0x88a9, 0x88aa, 0x5c0f, 0x5b5d, 0x6821,
0x8096, 0x5578, 0x7b11, 0x6548, 0x6954, 0x4e9b, 0x978b, 0x874e, 0x6b47, 0x534f,
0x631f, 0x643a};
private static final String RUS = "абвгдеёжзиклмнопрстуфхцчшщьыъэюяАБВГДЕЁЖЗИКЛМНОПРСТУФХЦЧШЩЬЫЪЭЮЯ";

private String barcodeBuff = "";

private class Receiver extends BroadcastReceiver {
Timer timer = null;

public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
//Log.v(TAG, "Received " + action);

if (action.equals(BARCODE_ACTION)) {
String barcode = intent.getStringExtra(BARCODE_DATA);
Log.v(TAG, "Received " + action + " " + barcode);

//barcodeBuff = barcodeBuff + barcode;

//TimerTask task = new TimerTask() {
// @Override
// public void run() {
// Log.v(TAG, "Received barcode " + barcodeBuff);

// barcodeBuff = "";
// timer = null;
// }
//};
//if (timer == null) {
// timer = new Timer();
// timer.schedule(task, 200);
//}
}
}
}

private Receiver receiver;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

receiver = new Receiver();

TextView console = findViewById(R.id.console);
console.setText("");
}

@Override
protected void onResume() {
super.onResume();
enableReceiver();
}

@Override
protected void onPause() {
disableReceiver();
super.onPause();
}

public void enableReceiver() {
IntentFilter filter = new IntentFilter();
filter.addAction(Intent.ACTION_SCREEN_ON);
filter.addAction(Intent.ACTION_SCREEN_OFF);
filter.addAction(BARCODE_ACTION);
getApplicationContext().registerReceiver(receiver, filter);

Log.v(TAG, "Receiver registered");
}

public void disableReceiver() {
getApplicationContext().unregisterReceiver(receiver);

Log.v(TAG, "Receiver unregistered");
}
}

Вот логи:


2020-07-22 13:27:13.938 14249-14289/com.google.asdfghgghjdhg.urovotest I/OpenGLRenderer: Initialized EGL, version 1.4
2020-07-22 13:27:13.938 14249-14289/com.google.asdfghgghjdhg.urovotest D/OpenGLRenderer: Swap behavior 1
2020-07-22 13:27:13.940 14249-14289/com.google.asdfghgghjdhg.urovotest W/Adreno-ES20: <get_gpu_clk:229>: open failed: errno 13
2020-07-22 13:27:13.972 14249-14249/com.google.asdfghgghjdhg.urovotest I/ViewConfigCompat: Could not find method getScaledScrollFactor() on ViewConfiguration
2020-07-22 13:27:20.094 14249-14249/com.google.asdfghgghjdhg.urovotest V/UrovoTest: Received android.intent.ACTION_DECODE_DATA WAJFTRUMKWXESGOSXWNDKYU2TCVLAQP3WB2G54B7DVRASLIJ6WOFCK2TNCRJU7PPHEGYOLA7P4F3KERAMEUYJQBXMZP6OZDRVZTHPBEL4KESWEQQZPZKFBIL6S4ZM24N
2020-07-22 13:27:20.122 14249-14249/com.google.asdfghgghjdhg.urovotest V/UrovoTest: Received android.intent.ACTION_DECODE_DATA WAJFTRUMKWXESGOSXWNDKY
2020-07-22 13:27:22.826 14249-14249/com.google.asdfghgghjdhg.urovotest V/UrovoTest: Received android.intent.ACTION_DECODE_DATA WAJFTRUMKWXESGOSXWNDKYU2TCVLAQP3WB2G54B7DVRASLIJ6WOFCK2TNCRJU7PPHEGYOLA7P4F3KERAMEUYJQBXMZP6OZDRVZTHPBEL4KESWEQQZPZKFBIL6S4ZM24N
2020-07-22 13:27:22.836 14249-14249/com.google.asdfghgghjdhg.urovotest V/UrovoTest: Received android.intent.ACTION_DECODE_DATA WAJFTRUMKWXESGOSXWNDKY
2020-07-22 13:27:25.269 14249-14249/com.google.asdfghgghjdhg.urovotest V/UrovoTest: Received android.intent.ACTION_DECODE_DATA WAJFTRUMKWXESGOSXWNDKYU2TCVLAQP3WB2G54B7DVRASLIJ6WOFCK2TNCRJU7PPHEGYOLA7P4F3KERAMEUYJQBXMZP6OZDRVZTHPBEL4KESWEQQZPZKFBIL6S4ZM24N
2020-07-22 13:27:25.279 14249-14249/com.google.asdfghgghjdhg.urovotest V/UrovoTest: Received android.intent.ACTION_DECODE_DATA WAJFTRUMKWXESGOSXWNDKY
2020-07-22 13:27:29.058 14249-14249/com.google.asdfghgghjdhg.urovotest V/UrovoTest: Received android.intent.ACTION_DECODE_DATA WAJFTRUMKWXESGOSXWNDKYU2TCVLAQP3WB2G54B7DVRASLIJ6WOFCK2TNCRJU7PPHEGYOLA7P4F3KERAMEUYJQBXMZP6OZDRVZTHPBEL4KESWEQQZPZKFBIL6S4ZM24N
2020-07-22 13:27:29.071 14249-14249/com.google.asdfghgghjdhg.urovotest V/UrovoTest: Received android.intent.ACTION_DECODE_DATA WAJFTRUMKWXESGOSXWNDKY
2020-07-22 13:27:31.169 14249-14249/com.google.asdfghgghjdhg.urovotest V/UrovoTest: Received android.intent.ACTION_DECODE_DATA WAJFTRUMKWXESGOSXWNDKYU2TCVLAQP3WB2G54B7DVRASLIJ6WOFCK2TNCRJU7PPHEGYOLA7P4F3KERAMEUYJQBXMZP6OZDRVZTHPBEL4KESWEQQZPZKFBIL6S4ZM24N
2020-07-22 13:27:31.186 14249-14249/com.google.asdfghgghjdhg.urovotest V/UrovoTest: Received android.intent.ACTION_DECODE_DATA WAJFTRUMKWXESGOSXWNDKY
2020-07-22 13:27:33.568 14249-14249/com.google.asdfghgghjdhg.urovotest V/UrovoTest: Received android.intent.ACTION_DECODE_DATA 136302705539610519001VU2TCVLAQP3WB2G54B7DVRASLIJ6WOFCK2TNCRJU7PPHEGYOLA7P4F3KERAMEUYJQBXMZP6OZDRVZTHPBEL4KESWEQQZPZKFBIL6S4ZM24N
2020-07-22 13:27:33.586 14249-14249/com.google.asdfghgghjdhg.urovotest V/UrovoTest: Received android.intent.ACTION_DECODE_DATA WAJFTRUMKWXESGOSXWNDKY
2020-07-22 13:27:36.858 14249-14249/com.google.asdfghgghjdhg.urovotest V/UrovoTest: Received android.intent.ACTION_DECODE_DATA WAJFTRUMKWXESGOSXWNDKYU2TCVLAQP3WB2G54B7DVRASLIJ6WOFCK2TNCRJU7PPHEGYOLA7P4F3KERAMEUYJQBXMZP6OZDRVZTHPBEL4KESWEQQZPZKFBIL6S4ZM24N
2020-07-22 13:27:36.867 14249-14249/com.google.asdfghgghjdhg.urovotest V/UrovoTest: Received android.intent.ACTION_DECODE_DATA WAJFTRUMKWXESGOSXWNDKY
2020-07-22 13:27:40.358 14249-14249/com.google.asdfghgghjdhg.urovotest V/UrovoTest: Received android.intent.ACTION_DECODE_DATA 136302705539610519001VU2TCVLAQP3WB2G54B7DVRASLIJ6WOFCK2TNCRJU7PPHEGYOLA7P4F3KERAMEUYJQBXMZP6OZDRVZTHPBEL4KESWEQQZPZKFBIL6S4ZM24N
2020-07-22 13:27:40.368 14249-14249/com.google.asdfghgghjdhg.urovotest V/UrovoTest: Received android.intent.ACTION_DECODE_DATA WAJFTRUMKWXESGOSXWNDKY
2020-07-22 13:27:42.625 14249-14249/com.google.asdfghgghjdhg.urovotest V/UrovoTest: Received android.intent.ACTION_DECODE_DATA WAJFTRUMKWXESGOSXWNDKYU2TCVLAQP3WB2G54B7DVRASLIJ6WOFCK2TNCRJU7PPHEGYOLA7P4F3KERAMEUYJQBXMZP6OZDRVZTHPBEL4KESWEQQZPZKFBIL6S4ZM24N
2020-07-22 13:27:42.664 14249-14249/com.google.asdfghgghjdhg.urovotest V/UrovoTest: Received android.intent.ACTION_DECODE_DATA WAJFTRUMKWXESGOSXWNDKY
2020-07-22 13:27:44.314 14249-14249/com.google.asdfghgghjdhg.urovotest V/UrovoTest: Received android.intent.ACTION_DECODE_DATA WAJFTRUMKWXESGOSXWNDKYU2TCVLAQP3WB2G54B7DVRASLIJ6WOFCK2TNCRJU7PPHEGYOLA7P4F3KERAMEUYJQBXMZP6OZDRVZTHPBEL4KESWEQQZPZKFBIL6S4ZM24N
2020-07-22 13:27:44.324 14249-14249/com.google.asdfghgghjdhg.urovotest V/UrovoTest: Received android.intent.ACTION_DECODE_DATA WAJFTRUMKWXESGOSXWNDKY
2020-07-22 13:27:45.661 14249-14249/com.google.asdfghgghjdhg.urovotest V/UrovoTest: Receiver unregistered
2020-07-22 13:27:52.542 14249-14249/com.google.asdfghgghjdhg.urovotest V/UrovoTest: Receiver registered
2020-07-22 13:27:56.719 14249-14249/com.google.asdfghgghjdhg.urovotest V/UrovoTest: Received android.intent.ACTION_DECODE_DATA WAJFTRUMKWXESGOSXWNDKYU2TCVLAQP3WB2G54B7DVRASLIJ6WOFCK2TNCRJU7PPHEGYOLA7P4F3KERAMEUYJQBXMZP6OZDRVZTHPBEL4KESWEQQZPZKFBIL6S4ZM24N
2020-07-22 13:27:56.736 14249-14249/com.google.asdfghgghjdhg.urovotest V/UrovoTest: Received android.intent.ACTION_DECODE_DATA WAJFTRUMKWXESGOSXWNDKY
2020-07-22 13:27:58.960 14249-14249/com.google.asdfghgghjdhg.urovotest V/UrovoTest: Received android.intent.ACTION_DECODE_DATA 136302705539610519001VU2TCVLAQP3WB2G54B7DVRASLIJ6WOFCK2TNCRJU7PPHEGYOLA7P4F3KERAMEUYJQBXMZP6OZDRVZTHPBEL4KESWEQQZPZKFBIL6S4ZM24N
2020-07-22 13:27:59.020 14249-14249/com.google.asdfghgghjdhg.urovotest V/UrovoTest: Received android.intent.ACTION_DECODE_DATA WAJFTRUMKWXESGOSXWNDKY
2020-07-22 13:28:01.473 14249-14249/com.google.asdfghgghjdhg.urovotest V/UrovoTest: Received android.intent.ACTION_DECODE_DATA WAJFTRUMKWXESGOSXWNDKYU2TCVLAQP3WB2G54B7DVRASLIJ6WOFCK2TNCRJU7PPHEGYOLA7P4F3KERAMEUYJQBXMZP6OZDRVZTHPBEL4KESWEQQZPZKFBIL6S4ZM24N
2020-07-22 13:28:01.486 14249-14249/com.google.asdfghgghjdhg.urovotest V/UrovoTest: Received android.intent.ACTION_DECODE_DATA WAJFTRUMKWXESGOSXWNDKY
2020-07-22 13:28:53.043 14249-14249/com.google.asdfghgghjdhg.urovotest V/UrovoTest: Receiver unregistered
2020-07-22 13:29:08.880 14249-14249/com.google.asdfghgghjdhg.urovotest V/UrovoTest: Receiver registered
2020-07-22 13:29:09.728 14249-14249/com.google.asdfghgghjdhg.urovotest V/UrovoTest: Receiver unregistered

IMG_20200722_132946.jpg
IMG_20200722_132935.jpg

Такое ощущение, что буфер не всегда обнуляется после передачи

Добрый день.

Получение штрих-кода через Broadcast сообщение не является правильным способом.Так, как вы используете кольцо в режиме SPP , вам необходимо подключаться к кольцу из вашего приложения и работать с ним через BluetoothSocket.При обработке получения штрих-кода, важно помнить, что у любых подобных устройств есть FIFO буфер, размер которого ограничен. У кольца R70 - размер FIFO буфера составляет 128 байт. Поэтому вам необходимо обрабатывать получение штрих-кода до тех пор, пока в буфере присутствуют данные("обычно, концом является - \n\r").

В таком случае, есть ли возможность предоставить техническую информацию по протоколу обмена? Особенно интересует UUID для связи

И все же проблемма именно в кольце. Прикладываю видео работы с кольцом с телефона. Использую программу Bluetooth SPP Manager (не принципиально, можно взять любую другую). Ошибки все те же.

Видео: https://drive.google.com/file/d/14E8YAUfqqYm9xYlQN8iVmjC78FvUAO5E/view?usp=sharing

Проблема не в кольце. Программы, которые вы видите(используете) не имеют представления о FIFO - буфере. Они показывают данные, которые приходят им в сокет.  Если вы будете использовать принцип работы через BluetoothSocket, данные будут приходить так же, но вам нужно их правильно обработать(в сканерах -  конец штрих-кода заканчивается на '\n'  и '\r). Это будет правильно обработкой входящих данных для любых видов сканер-колец.

По итогу: разобрался, написал, работает. По факту, штатный софт рабочий, но не очищает буфер после предыдущего чтения. Т.е. "из коробки" не работает.

Сервис поддержки клиентов работает на платформе UserEcho