Π‘ΠΊΠ°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ QR-ΠΊΠΎΠ΄Π° ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π½ΠΎΡΠΌΠ°Π»ΡΠ½ΠΎ. ΠΠ½Π΅ Π±ΡΠ»ΠΎ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Π»ΠΈ ΡΡΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π΄Π΅ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π»ΡΠ±ΡΡ Π΄ΡΡΠ³ΠΈΡ ΡΠΎΡΠΌΠ°ΡΠΎΠ² ΡΡΡΠΈΡ -ΠΊΠΎΠ΄Π°. ΠΠ΅Π½Ρ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΡΠ΅Ρ Π΄Π΅ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ΄ΠΎΠ² Data Matrix.
ΠΡΡΡ Π»ΠΈ ΡΠΏΠΎΡΠΎΠ± ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΠΊΠΎΠ΄ Π΄Π»Ρ Π΄Π΅ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΌΠ°ΡΡΠΈΡΡ Π΄Π°Π½Π½ΡΡ ?
ΠΠ·Π²ΠΈΠ½ΠΈΡΠ΅ Π·Π° Π·Π°Π΄Π΅ΡΠΆΠΊΡ Ρ ΠΎΡΠ²Π΅ΡΠΎΠΌ. ΠΠ° Π΄Π°Π½Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΠΎ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Π½ΠΈΡΠ΅Π³ΠΎ, ΠΊΡΠΎΠΌΠ΅ QR-ΠΊΠΎΠ΄ΠΎΠ², Ρ ΠΎΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΡΠΎΡΠΌΠ°ΡΠΎΠ² ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΊΠΎΠ΄ΠΎΠ² Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ°Π΄ΡΠ΅ ΡΠ²Π»ΡΠ΅ΡΡΡ Π±ΠΎΠ»Π΅Π΅ Π΄ΠΎΠ»Π³ΠΎΡΡΠΎΡΠ½ΠΎΠΉ ΡΠ΅Π»ΡΡ.
Π―Π΄ΡΠΎΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΡΠΎ-ΡΠΎ Π²ΡΠΎΠ΄Π΅ Π€ΡΠ°Π½ΠΊΠ΅Π½ΡΡΠ΅ΠΉΠ½Π°. ΠΠ½ ΠΎΡΠ½ΠΎΠ²Π°Π½ Π½Π° ΡΠ±ΠΎΡΠΊΠ΅ Emscripten JavaScript ΠΏΠΎΡΡΠ° C++ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ZXing Java .
ΠΡΠ»ΠΈ Π²Ρ ΠΏΠΎΡΠΌΠΎΡΡΠΈΡΠ΅ Π½Π° ΠΏΡΠΈΠΌΠ΅Ρ Emscripten , Π²Ρ ΡΠ²ΠΈΠ΄ΠΈΡΠ΅, ΡΡΠΎ ΠΎΠ½ΠΈ Π²ΡΠ·ΡΠ²Π°ΡΡ ZXing._decode_qr
(ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΡΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°), Π° ΡΠ°ΠΊΠΆΠ΅ ZXing._decode_any
. ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ZXing ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Data Matrix , Ρ ΡΡΠΈΡΠ°Ρ, ΡΡΠΎ ZXing._decode_any
ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π΅Ρ QR-ΠΊΠΎΠ΄Ρ, ΡΡΡΠΈΡ
-ΠΊΠΎΠ΄Ρ, Data Matrix, Aztec ΠΈ Ρ. Π΄.
Π‘ΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ Π²ΡΠ·ΠΎΠ² Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π² scan.js. Π ΡΠΎΠΆΠ°Π»Π΅Π½ΠΈΡ, Ρ ΠΌΠ΅Π½Ρ Π½Π΅Ρ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠΈΡΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ, Π½ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠ΅, Π΅ΡΠ»ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΠΏΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°ΡΡ.
Π₯ΠΎΡΠΎΡΠΎ. Π― ΠΏΠΎΠΏΡΠΎΠ±ΡΡ ΠΈ Π΄Π°ΠΌ Π²Π°ΠΌ Π·Π½Π°ΡΡ.
ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅: Π΅ΡΡΡ Π»ΠΈ Ρ Π²Π°Ρ ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ ΠΈΠ΄Π΅ΠΈ, ΠΏΠΎΡΠ΅ΠΌΡ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠ°ΡΠΈΠΎΠ½Π½ΡΠΉ Π²Π΅Π±-ΡΠ°ΠΉΡ ΠΏΠ΅ΡΠ΅ΡΡΠ°Π» ΡΠ°Π±ΠΎΡΠ°ΡΡ? Π― ΠΏΠΎΠ»ΡΡΠ°Ρ ΠΎΡΠΈΠ±ΠΊΡ Error: Cannot access video stream (DevicesNotFoundError).
Π²ΠΎ Π²ΡΠ΅Ρ
Π±ΡΠ°ΡΠ·Π΅ΡΠ°Ρ
ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Ρ Π²Π°Ρ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π·Π°Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½ Π΄ΠΎΡΡΡΠΏ ΠΊ ΠΊΠ°ΠΌΠ΅ΡΠ΅ ΠΈΠ»ΠΈ Π²Ρ ΠΊΠΎΠ³Π΄Π°-ΡΠΎ Π·Π°Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π»ΠΈ Π΄ΠΎΡΡΡΠΏ ΠΊ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΌΡ ΡΠ°ΠΉΡΡ?
ΠΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠ²ΠΈΠ΄Π΅ΡΡ ΡΡΠΎ ΠΏΡΠΈΠ³Π»Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΈ ΠΏΠ΅ΡΠ²ΠΎΠΌ ΠΏΠΎΡΠ΅ΡΠ΅Π½ΠΈΠΈ Π΄Π΅ΠΌΠΎ-ΡΠ°ΠΉΡΠ°:
ΠΠΎΡΡΡΠΏ ΠΊ ΠΊΠ°ΠΌΠ΅ΡΠ΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½:
ΠΠ°ΠΊΡΡΡΠΈΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π²ΡΠ΅ ΡΠΎΡΠΌΠ°ΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΡΡ ΠΏΡΠΈ Π·Π°ΠΌΠ΅Π½Π΅ ZXing._decode_qr
Π½Π° ZXing._decode_any
Π² ΡΡΡΠΎΠΊΠ΅ https://github.com/schmich/instascan/blob/master/src/scanner.js#L145 .
Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ Π·Π° Π²Π°ΡΡ ΠΏΠΎΠΌΠΎΡΡ.
Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ Π·Π° ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΠΎΡΡΠ΅Ρ. Π― Π½Π΅ ΡΠ΅ΡΠ°ΡΡΡ ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΠΎ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ Π΄ΡΡΠ³ΠΈΠ΅ ΡΠΎΡΠΌΠ°ΡΡ ΠΏΡΡΠΌΠΎ ΡΠ΅ΠΉΡΠ°Ρ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ Ρ Π½Π΅ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π» ΠΈΡ Π²ΡΠ΅ ΡΠ°ΠΌ, Π½ΠΎ ΠΎΠΏΡΡΡ ΠΆΠ΅, Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎ Ρ ΠΎΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ ΠΈΡ Π² Π±ΡΠ΄ΡΡΠ΅ΠΌ. ΠΠ° Π΄Π°Π½Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ Ρ ΡΠΎΠ·Π΄Π°Π» # 61, ΡΡΠΎΠ±Ρ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°ΡΡ ΡΡΠΎ. ΠΡΠ΅ ΡΠ°Π· ΡΠΏΠ°ΡΠΈΠ±ΠΎ.
ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈ ΡΠ°ΠΊΠΆΠ΅, ΡΡΠΎ ΠΊΠΎΠ³Π΄Π° Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ instascan.min.js Π΄Π»Ρ ΡΠΊΠ°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΡΡΠΈΡ
-ΠΊΠΎΠ΄ΠΎΠ²?
Π― ΠΏΠΎΠΏΡΡΠ°Π»ΡΡ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ u._decode_qr(this.decodeCallback)
Π½Π° u._decode_any(this.decodeCallback)
QR ΡΠ΅ΠΏΠ΅ΡΡ Π²ΡΠ΅ Π΅ΡΠ΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ, Π° ΡΡΡΠΈΡ
-ΠΊΠΎΠ΄ β Π½Π΅Ρ.
Π’ΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅ Π·Π΄Π΅ΡΡ, Ρ ZXing._decode_any
QR-ΠΊΠΎΠ΄Ρ Π²ΡΠ΅ Π΅ΡΠ΅ ΡΠ°Π±ΠΎΡΠ°ΡΡ, Π½ΠΎ ΡΡΡΠΈΡ
-ΠΊΠΎΠ΄Ρ Π²ΡΠ΄Π°ΡΡ ΠΎΡΠΈΠ±ΠΊΡ Runtime.functionPointers[index] is not a function
Π― ΡΠ°ΠΊΠΆΠ΅ ΡΡΠΎΠ»ΠΊΠ½ΡΠ»ΡΡ Ρ ΡΠ΅ΠΌΠΈ ΠΆΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°ΠΌΠΈ Ρ @eggyyy
Π‘Π°ΠΌΡΠΉ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ
Π’ΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅ Π·Π΄Π΅ΡΡ, Ρ
ZXing._decode_any
QR-ΠΊΠΎΠ΄Ρ Π²ΡΠ΅ Π΅ΡΠ΅ ΡΠ°Π±ΠΎΡΠ°ΡΡ, Π½ΠΎ ΡΡΡΠΈΡ -ΠΊΠΎΠ΄Ρ Π²ΡΠ΄Π°ΡΡ ΠΎΡΠΈΠ±ΠΊΡRuntime.functionPointers[index] is not a function