Сканер баркода и штрихкода - проблемы с подключением

sazanof
sazanof аватар
Offline
Зарегистрирован: 08.12.2017

Здравствуйте! Приобрел сканер на али. Протестировал по проводу USB, который шел в комплекте: открыл блокнот - сканирование успешно прошло. 

Теперь хотел с помощью библиотеки SoftwareSerial считывать данные.

Для этого на сканере есть точно такая же колодка с UART

Будучи в трезвом уме и здравой памяти, подключаю так:

Сканер       UNO

5v              5v

gnd           gnd

tx             3pin

rx             2pin

Загружаю скетч (стандартный)

/*
  Software serial multple serial test

 Receives from the hardware serial, sends to software serial.
 Receives from software serial, sends to hardware serial.

 The circuit:
 * RX is digital pin 10 (connect to TX of other device)
 * TX is digital pin 11 (connect to RX of other device)

 Note:
 Not all pins on the Mega and Mega 2560 support change interrupts,
 so only the following can be used for RX:
 10, 11, 12, 13, 50, 51, 52, 53, 62, 63, 64, 65, 66, 67, 68, 69

 Not all pins on the Leonardo and Micro support change interrupts,
 so only the following can be used for RX:
 8, 9, 10, 11, 14 (MISO), 15 (SCK), 16 (MOSI).

 created back in the mists of time
 modified 25 May 2012
 by Tom Igoe
 based on Mikal Hart's example

 This example code is in the public domain.

 */
#include <SoftwareSerial.h>

SoftwareSerial mySerial(2, 3); // RX, TX

void setup() {
  // Open serial communications and wait for port to open:
  Serial.begin(9600);
  while (!Serial) {
    ; // wait for serial port to connect. Needed for native USB port only
  }


  Serial.println("Goodnight moon!");

  // set the data rate for the SoftwareSerial port
  mySerial.begin(9600);
  mySerial.println("Hello, world?");
}

void loop() { // run over and over
  if (mySerial.available()) {
    Serial.write(mySerial.read());
  }
  if (Serial.available()) {
    mySerial.write(Serial.read());
  }
}

Ну и все. Что-то пусто)

Лампочки rx tx не могают при сканировании. Что я сделал не так?

b707
Offline
Зарегистрирован: 26.05.2017

rx tx местами поменяйте, их нужно подключать зеркально

sazanof
sazanof аватар
Offline
Зарегистрирован: 08.12.2017

b707 пишет:

rx tx местами поменяйте, их нужно подключать зеркально

Спаисибо за ответ. Прежде чем сюда написать, я раз 100 менял провода местами. И вот прямо сейчас еще раз поменял. Толку ноль. Есть еще идеи?

sazanof
sazanof аватар
Offline
Зарегистрирован: 08.12.2017

b707 пишет:

rx tx местами поменяйте, их нужно подключать зеркально

Оказывается в этой херне есть доки по КОНФИГУРИРОВАНИЮ =)

https://www.dropbox.com/sh/buysgr2aeutuub3/AADsvupiGseFm-6IowMBWGCOa?dl=0

b707
Offline
Зарегистрирован: 26.05.2017

sazanof пишет:

Спаисибо за ответ. Прежде чем сюда написать, я раз 100 менял провода местами. И вот прямо сейчас еще раз поменял. Толку ноль. Есть еще идеи?

Я не генерю никаких"идей" - а лишь реагирую на вашу информацию. В первом сообщении вы указали, как  подключили модуль - и подключили его неверно, только и всего. О том, что вы его 100 раз подключали, в сообщении не было.

"Других идей" у меня нет,  да и если б были - не очень охота их высказывать.

Код у вас интересный. Вы "hello world" в сканер посылаете - думаете, он ответит?

sadman41
Offline
Зарегистрирован: 19.10.2016

Ну, вообще, вменяемый сканер переключает режимы работы / интерфейсы при сканировании специального ШК, который напечатан в книжке, идущей в комплекте.

b707
Offline
Зарегистрирован: 26.05.2017

sadman41 пишет:

Ну, вообще, вменяемый сканер переключает режимы работы / интерфейсы при сканировании специального ШК, который напечатан в книжке, идущей в комплекте.

точно, что-то из головы вылетело.

Сканер ШК - весьма сложная умная штука, даже в самых простых китайских моделях десятки параметров настройки - в первую очередь тип кодирования, префиксы-суффиксы, табличная замена символов и тд... И настраиваются они, как правило, считыванием серсисных ШК.

arduinec
Offline
Зарегистрирован: 01.09.2015

b707 пишет:

Код у вас интересный. Вы "hello world" в сканер посылаете - думаете, он ответит?

Не ответит, нужно "hello scanner" посылать :)

sazanof
sazanof аватар
Offline
Зарегистрирован: 08.12.2017

Никогда не понимал, зачем злится и язвить в ответ. Я благодарен вам за помощь, честно. На форумах впринципе мало кто кому помогает или отвечает. А вы вот, помогаете)

В моем сообщении выше не было никакого подтекста, который мог бы вас задеть.

b707 пишет:

Я не генерю никаких"идей" - а лишь реагирую на вашу информацию. В первом сообщении вы указали, как  подключили модуль - и подключили его неверно, только и всего. О том, что вы его 100 раз подключали, в сообщении не было.

"Других идей" у меня нет,  да и если б были - не очень охота их высказывать.

Код у вас интересный. Вы "hello world" в сканер посылаете - думаете, он ответит?

Да, не, этот пример я взял с офф сайта. Ничего он не ответит, конечно же, но и работать от этого не перестанет) Оказывается эти сканеры программируются считыванием с мануала баркодов.

sazanof
sazanof аватар
Offline
Зарегистрирован: 08.12.2017

sadman41 пишет:

Ну, вообще, вменяемый сканер переключает режимы работы / интерфейсы при сканировании специального ШК, который напечатан в книжке, идущей в комплекте.

Да, переключает, только доки вот нарыл в инете недавно. Переключил режим работы на uart

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

И скорость посмотрите заодно

sazanof
sazanof аватар
Offline
Зарегистрирован: 08.12.2017
#include <SoftwareSerial.h>
String resp;
int i = 0;
SoftwareSerial mySerial(2, 3); // RX, TX

void setup() {
  // Open serial communications and wait for port to open:
  Serial.begin(9600);
  while (!Serial) {
    ; // wait for serial port to connect. Needed for native USB port only
  }
  mySerial.begin(9600);
}

void loop() { // run over and over
  while (mySerial.available()) {
    resp += char(mySerial.read());
    byte b = mySerial.read();
    if (i == 9) {
      Serial.println(resp + " "+ i);
      resp = "";
      i = 0;
    }
    i++;
  }

}

Теперь все работает) Непонятно только то, как определить, что байт последний.

b707
Offline
Зарегистрирован: 26.05.2017

sazanof пишет:

Теперь все работает) Непонятно только то, как определить, что байт последний.

для этого в считывателе настраивается т.н. "суффикс" - символ или комбинация символов, которые он будет отсылать после прочитанного кода