У меня проблемы с двумя пакетами, которые я сейчас использую, и которые будут открыты для замены.
Это мой вариант использования: часть бэкэнда должна генерировать код. Интерфейс должен сканировать код. Затем внешний интерфейс должен получить полученные данные по запросу без ошибок.
Я пробовал https://github.com/milon/barcode в бэкэнде вместе с ионной версией плагина Cordova Scan, https://ionicframework.com/docs/native/barcode-scanner
Проблема в том, что я получаю измененные коды (часто одно или два числа отличаются) при сканировании, и поскольку коды не совпадают с сервером, я не получаю связанные данные (все привязано к коду, а не Идентификатор)
import { BarcodeScanner } from '@ionic-native/barcode-scanner/ngx';
constructor(private barcoder: BarcodeScanner)
//some function in the frontend
this.barcoder.scan(
{
preferFrontCamera : false, // iOS and Android
showFlipCameraButton : true, // iOS and Android
showTorchButton : true, // iOS and Android
torchOn: false, // Android, launch with the torch switched off
prompt : "Place a barcode inside the scan area", // Android
resultDisplayDuration: 500, // Android, display scanned text for X ms.
orientation : "landscape", // Android only (portrait|landscape), default unset so it rotates with the device
disableAnimations : true, // iOS
disableSuccessBeep: true // iOS and Android
}
)
.then(data =>
{
if(data.cancelled){
alert( "Scanning failed because " + data.cancelled);
}
else {
alert(
"We got a barcode\n" +
"Result: " + data.text + "\n" +
"Format: " + data.format
);
}
}
)
.catch(err =>
{
alert("Scanning failed: " + err)
}
);
}
//Laravel blade example
{!! \Milon\Barcode\DNS2D::getBarcodeSVG($tag->code, $tag->type) !!}
//Laravel Controller php example
return view('backend.tag.edit')
->withTag($tag)
->with('puzzlepieces', $puzzlepieceRepository->getByTag($tag));
//Laravel Model example
protected $fillable = [
'name',
'type',
'code',
'some more
];
//Für die erste Beta brauchen wir nur QR Codes.
protected $types = ['EAN8' => 7, 'EAN13' => 12, 'UPCA' => 11, 'UPCE' => 6, 'C128' => 128, 'C39' => 43, 'QRCODE' => 1817];
public static function getTypes()
{
return (new self())->types;
}
public static function getMaxLenForType($type)
{
return self::getTypes()[$type] ?? 0;
}
public static function type($key)
{
return self::getTypes()[$key] ?? '';
}
Ожидаемым результатом будет то, что я получу тот же определенный код в Бэкэнде, сканируя в Frontend