MDB ARDUINO + банковский терминал VENDOTEK 3

Kabasya
Offline
Зарегистрирован: 20.05.2018

Добрый день ! 

Может кто сталкивался с подключение банковского терминала Vendotek 3 к ардуино 

Какая-то ошибка в коде, не пойму какая 

вроди бы все работает , но с инициализацией какая-то проблема 

Может кто поможет ? 

Код ниже : 


//#define F_CPU 16000000L

#include <avr/pgmspace.h>
#include <avr/interrupt.h>
#include <avr/io.h>
#include <util/delay.h>
int  i ;
int cnt ;
int zapom=0;
int ya = 0;
#define C_TH1   0x10
#define C_TL1   0x10
#define C_TCCR1B  0x01
#define C_TH2   0x10
#define C_TL2   0x10
#define C_TCCR2B  0x01
#define C_TH3   0x10
#define C_TL3   0x10
#define C_TCCR3B  0x05
#define C_TH4   0x10
#define C_TL4   0x10
#define C_TCCR4B  0x03
#define C_TH5   0x10
#define C_TL5   0x10
#define C_TCCR5B  0x01


//#define   bitSet(a,b)   (a|=(1<<b))
//#define   bitClear(a,b) (a&=~(1<<b))
//#define   bitRead(a,b)  (a&(1<<b))


//int i;


volatile  unsigned char table_note[16]  = {0x01,0x05,0x0a,0x32,0x64,0,0,0,0,0,0,0,0,0,0,0};
volatile  unsigned char scaling_bill  ;
volatile  unsigned int  type_bill;
volatile  unsigned int  tek_bill;
volatile  uint8_t     tek_note;
volatile  uint8_t     cnt_err_mdb_bill;
//volatile  unsigned int  credit;

volatile  unsigned char buf_setup_0[6]    = {0x05,0x00,0x01,0x00,0x00,0x07};
volatile  unsigned char buf_setup_1[6]    = {0x05,0x01,0x01,0xF4,0x00,0x32};
//volatile  unsigned char buf_vend_req[6]   = {0x05,0x00,0x00,0x0A,0xFF,0xFF};
//volatile  unsigned char buf_vend_cacel[2] = {0x01,0x01};
//volatile  unsigned char buf_vend_success[4] = {0x03,0x00,0xFF,0xFF};
volatile  unsigned char buf_cash_sale[6]  = {0x05,0x05,0x00,0x0A,0xFF,0xFF};
volatile  unsigned char buf_expansion[] = {30,0x00,'I','V','T','0','0','0','0','0','0','0','0','0','1','2','3',
' ','0','0','0','0','0','0','0','0','0','4','5','1',0x01,0x16,0};
volatile  unsigned char buf_config_info_cash1[8];
volatile  unsigned char buf_credit_cash1[2];
volatile  unsigned char buf_perif_id_cash1[30];
volatile  uint8_t buf_data_tx_mdb[32];

volatile  unsigned char errors_cash1  = 0;



volatile  uint8_t flags_vmc =0;
#define   f_ack_f1      0
#define   f_ok_init_cash1   1
#define   f_ok_init_cash2   2
#define   f_work_cash2    3

volatile  uint8_t flags_vmc1_com  =0;
#define   f_setup_cash_vmc    0
#define   f_request_vmc     1
#define   f_success_vmc     2
#define   f_complete_vmc      3
#define   f_cancel_vmc      4
#define   f_failure_vmc     5
#define   f_reset_cash_vmc    6
#define   f_cash_sale_vmc     7

#define   C_CASHLESS_1      0x10

volatile  uint8_t crc_vmc   = 0;
volatile  uint8_t cnt_data_vmc  = 0;
volatile  uint8_t num_cashless  = 0;
volatile  void *u ;


volatile  char  in_rx_mdb;
//volatile  unsigned char  buf_rx_mdb[50];

//volatile  uint8_t buf_data_tx_mdb[32];
volatile  unsigned char buf_data_rx_mdb[32];
volatile  uint8_t cnt_tx_mdb  = 0;

volatile  uint8_t flags_mdb = 0xee;

#define   f_stop_bill     0
#define   f_end_rx_mdb    1
#define   f_not_pay_mdb   2
#define   f_stop_coin     3
#define   f_not_ans_mdb   4
#define   f_to_mdb      5
#define   f_com_mdb     6
#define   f_err_ans_mdb   7

volatile  uint8_t     to_s_mdb;

uint8_t   r_a ;
uint8_t   r_b;
uint8_t   r_c;
uint8_t   r_d;
uint8_t   r_e;
int *p  = (int*)0x500;


volatile  int cnt_rx_mdb  = 0;

volatile  int flags_tx_mdb  = 0;

#define   error_rx_mdb  7
volatile  int cnt_data_rx_mdb;
volatile  int crc_mdb;
volatile  int cnt_data_out_mdb;
volatile  int com_out_mdb;
volatile  char  out_tx_mdb;
volatile  int temp_tx_mdb;
volatile  int cnt_buf_mdb = 0;
volatile  uint8_t   in_test_mdb = 0;
volatile  uint8_t   check_mdb = 0;
volatile  uint8_t   com_mdb   = 0;
volatile  uint8_t   cnt_data_mdb  = 0 ;
volatile  uint8_t   in_rx_usart0;
volatile  uint8_t   in_price = 0;
volatile  uint8_t   in_num = 0;
volatile  uint8_t   in_num1 = 0;
volatile  uint8_t flags_tek_kkt = 0;
uint8_t   f_cashless    = 1;

void  wait_rx_mdb();
void  wait_tx_mdb();
void  trans_ks();
void  start_com_mdb();

//#define    UDR_MDB    UDR2
#define   USART_MDB_RX  USART2_RX_vect

void  reset_cash();
void  test_cashless_1();
void  pool_cash();
void  test_responce();
void  work_mdb_cash();
void  test_cashless_1();
void  tx_vmc();
void  pool_cashless();

void  test_responce_1();
void  test_config_info();
void  test_begin_session();
void  test_session_cancel();
void  test_approved();
void  test_denied();
void  test_end_session();
void  test_cancelled();
void  test_perif_id();
void  test_errors();
void  test_err_com();
void  init_mdb_cash();

void  vend_request();
void  setup_cash();
void  vend_cancel();
void  vend_success();
void  vend_failure();
void  session_complete();
void  cash_sale();
void  expansion_vmc();

void  desable_reader_vmc();
void  setup_cash_0();
void  setup_cash_00();
void  setup_cash_1();
void  enable_reader_vmc();
void  enable_reader_vmc_0();

void  vend_request_0();
void  vend_request_1();
void  vend_request_2();
void  setup_cash_001();

void  start_init();
void  init_ports();
void  init_tmr();
void  init_usart();
void  init_usart_mdb();
void  ack_mdb();
void  set_ok_vend();


//*************************************
void  work_mdb_cash()
//********************

{
  r_a = 0xaa;
test_cashless_1();
//_delay_ms(100);
return;
}

//*************************************

//*************************************
void  test_cashless_1()
//********************
{
  num_cashless = C_CASHLESS_1;
  if (bitRead(flags_vmc1_com,f_reset_cash_vmc) != 0)
  {
    reset_cash();
    return;
  }
  else
  if (bitRead(flags_vmc,f_ok_init_cash1)  ==  0)
  {
    init_mdb_cash();
  }
  else
  if (bitRead(flags_vmc1_com,f_setup_cash_vmc)  !=  0)
  {
    setup_cash();
  }
  else
  if (bitRead(flags_vmc1_com,f_request_vmc) !=  0)
  {
    vend_request();
  }
  else
  if (bitRead(flags_vmc1_com,f_cancel_vmc)  !=  0)
  {
    vend_cancel();
  }
    else
    if (bitRead(flags_vmc1_com,f_success_vmc) !=  0)
    {
      vend_success();
    }
    else
    if (bitRead(flags_vmc1_com,f_failure_vmc) !=  0)
    {
      vend_failure();
    }     
  
    else
    if (bitRead(flags_vmc1_com,f_complete_vmc)  !=  0)
    {
      session_complete();
    }
    else
    if (bitRead(flags_vmc1_com,f_cash_sale_vmc) !=  0)
    {
      cash_sale();
    }
    else
    pool_cashless();
    
}

//*************************************

//*************************************
void  tx_vmc()
//********************
{
  start_com_mdb();
  
}

//*************************************

//*************************************
void  reset_cash()
//********************
{
  
  com_mdb = num_cashless;
  cnt_data_mdb  = 0;
  tx_vmc();
  if (bitRead(flags_mdb,f_end_rx_mdb) != 0)
  {
    pool_cashless();
    bitClear(flags_vmc1_com,f_reset_cash_vmc);
  }
  
  
}

//*************************************
void  pool_cashless()
//********************
{
  pool_cash();
  if (bitRead(flags_mdb,f_end_rx_mdb) != 0)
  {
    test_responce();
  }
}

//*************************************
void  pool_cash()
//********************
{
  //buf_data_rx_mdb[0]  = 0xf0; // ?????? buf_data_tx_mdb[] ????
  com_mdb = (num_cashless+2);
  cnt_data_mdb  = 0;
  tx_vmc();
}
//*************************************
void  test_responce()
//********************
{
      r_a = buf_data_rx_mdb[0];
      //r_a = 0;
      switch(r_a)
      {
        case 0:test_responce_1(); break;
        case 1:test_config_info(); break;
        case 3:test_begin_session(); ack_mdb();break;
        case 4:test_session_cancel();ack_mdb(); break;
        case 5:test_approved();ack_mdb(); break;
        case 6:test_denied(); break;
        case 7:test_end_session(); break;
        case 8:test_cancelled(); break;
        case 9:test_perif_id(); break;
        case 10:test_errors();break;
        case 11:test_err_com();ack_mdb();break;
        default : break;
      }

}

//*************************************
void  test_responce_1()
//********************
{
        //if ((*p) == 2)
        if (cnt_rx_mdb == 2)
        
      {
        ack_mdb();
        bitClear(flags_vmc,f_ok_init_cash1);
        bitClear(flags_vmc1_com,f_reset_cash_vmc);
        
      }
      
}
//*************************************
void  test_config_info()
//********************
{
  for (i=0;i<7;i++)
  {
    *(buf_config_info_cash1+i)   =  *(buf_data_rx_mdb+i);
  }
}
//*************************************
void  test_begin_session()
//********************
{
    for (i=0;i<2;i++)
    {
      *(buf_credit_cash1+i)   = *(buf_data_rx_mdb+i);

    }
    
        //UDR0  = '_';
              // Serial.println("J");   // оплатить картой ( нажали "О")
          // Serial1.println("_");   // оплатить картой ( нажали "О")    
          Serial.println("\nz\n_\nz\n");Serial1.println("\nz\n_\nz\n");delay(1);
          Serial.println("\nz\n_\nz\n");Serial1.println("\nz\n_\nz\n");delay(1);
          Serial.println("\nz\n_\nz\n");Serial1.println("\nz\n_\nz\n");delay(1);
}
//*************************************
void  test_session_cancel()
//********************
{
  bitSet(flags_vmc1_com,f_complete_vmc);
               //Serial.println("W");   // отмена оплаты ( нажали "Х" или закончилось ожидание)
       // UDR3  = 'w';
         //b_price  = 5;
          //set_ok_vend();
         
         
}
//*************************************
void  test_approved()
//********************
{
  bitSet(flags_vmc1_com,f_success_vmc);
  bitSet(flags_vmc1_com,f_complete_vmc);
               //Serial.println("R");   // подтверждение оплаты ( банк подтвердил оплату
          //     UDR3 = 'r';
        //   b_price   = 5;
         set_ok_vend();
}
//*************************************
void  test_denied()
//********************
{
    bitSet(flags_vmc1_com,f_complete_vmc);
              //   Serial.println("Z");   // отказ в оплате ( банк отказал в оплате)
        //         UDR3 = 'z';   
}
//*************************************
void  test_end_session()
//********************
{
  ack_mdb();
}
//*************************************
void  test_cancelled()
//********************
{
  
}
//*************************************
void  test_perif_id()
//********************
{
      for (i=0;i<29;i++)
      {
        *(buf_perif_id_cash1+i)   = *(buf_data_rx_mdb+i);
      }
}
//*************************************
void  test_errors()
//********************
{
  errors_cash1  = *(buf_data_rx_mdb+1);
}
//*************************************
void  test_err_com()
//********************
{
  bitSet(flags_vmc1_com,f_reset_cash_vmc);
}

//*************************************
void  init_mdb_cash()
//********************
{
  expansion_vmc();
  if (bitRead(flags_mdb,f_end_rx_mdb) !=0)
  {
    //ack_mdb();
    desable_reader_vmc();
    if (bitRead(flags_mdb,f_end_rx_mdb) !=0)
    
    {
      setup_cash_0();
      if (bitRead(flags_mdb,f_end_rx_mdb) !=0)
      {
        //ack_mdb();
        setup_cash_1();
        
          if (bitRead(flags_mdb,f_end_rx_mdb) !=0)
          {
              //ack_mdb();
              pool_cash();
            if (bitRead(flags_mdb,f_end_rx_mdb) !=0)
            {
              enable_reader_vmc();
                
              if (bitRead(flags_mdb,f_end_rx_mdb) !=0)    
              {
                pool_cash();
                if (bitRead(flags_mdb,f_end_rx_mdb) !=0)
                {
                  bitSet(flags_vmc,f_ok_init_cash1);
                  
                }
                return;
              }
              return;
                      
            }
            return;
          }
        
        return;
      }
      return;
    }
    return;
  }
  return;
  
}

//*************************************
void  vend_request()
//********************
{ 
  com_mdb = (num_cashless+3);
in_price  = (b_price*1);
in_num    = 1; in_num1=0x00;  
if(b_price>=250){ in_num1=1;in_price=(b_price-256);}
    //UDR3  = 'd';
buf_data_tx_mdb[0]  = 0x00;
buf_data_tx_mdb[1]  = in_num1;
buf_data_tx_mdb[2]  = in_price;
buf_data_tx_mdb[3]  = 0x00; 
buf_data_tx_mdb[4]  = in_num;
cnt_data_mdb  = 5;
tx_vmc();
if (bitRead(flags_mdb,f_end_rx_mdb) !=0)
{
  test_responce();
}
  //if (buf_data_rx_mdb ==  0)
  //{
    bitClear(flags_vmc1_com,f_request_vmc);
  //}

}

//*************************************
void  setup_cash()
//********************
{
  vend_request_0();
if (bitRead(flags_mdb,f_end_rx_mdb) !=0)
  {
    bitClear(flags_vmc1_com,f_setup_cash_vmc);
  }
}

//*************************************
void  vend_cancel()
//********************
{
  buf_data_tx_mdb[0]  = 1;
  r_a = 1;
  vend_request_1();
  
  if (bitRead(flags_mdb,f_end_rx_mdb) !=0)
  {
      bitClear(flags_vmc1_com,f_cancel_vmc);
                              
  }
  
}

//*************************************
void  vend_success()
//********************
{
  buf_data_tx_mdb[0]  = 2;
  buf_data_tx_mdb[1]  = 0;
  buf_data_tx_mdb[2]  = 1;
  r_a = 3;  
      vend_request_1();
      
      if (bitRead(flags_mdb,f_end_rx_mdb) !=0)
      {
        bitClear(flags_vmc1_com,f_success_vmc);
        
      }
  
}

//*************************************
void  vend_failure()
//********************
{
  buf_data_tx_mdb[0]  = 3;  
  r_a = 1;    
    vend_request_1();
    
    if (bitRead(flags_mdb,f_end_rx_mdb) !=0)
    {
      bitClear(flags_vmc1_com,f_failure_vmc);
    }
}

//*************************************
void  session_complete()
//********************
{
  buf_data_tx_mdb[0]  = 4;
    
    r_a = 1;
    vend_request_1();
    
    if (bitRead(flags_mdb,f_end_rx_mdb) !=0)
    {
      if (buf_data_rx_mdb[0] == 0)
      {
            bitClear(flags_vmc1_com,f_complete_vmc);
             
  
      }
    }
  //return; 
}
//  (uint8_t *)u++;
//*************************************
void  cash_sale()
//********************
{
  u = &buf_cash_sale;
  vend_request_0();
    if (bitRead(flags_mdb,f_end_rx_mdb) !=0)
    {
      bitClear(flags_vmc1_com,f_cash_sale_vmc);
    } 
  
}
//*************************************
void  expansion_vmc()
//********************
{
  u = &buf_expansion;
  r_a = (num_cashless+7);
  setup_cash_001();
}
//*************************************
void  desable_reader_vmc()
//********************
{
  r_a = 0;
  enable_reader_vmc_0();  
}

//*************************************
void  setup_cash_0()
//********************
{
  u = &buf_setup_0;
  setup_cash_00();
}
//*************************************
void  setup_cash_00()
//********************
{
  r_a = (num_cashless + 1);
  setup_cash_001();
}

//*************************************
void  setup_cash_1()
//********************
{
  u =  &buf_setup_1;
  setup_cash_00();
}

//*************************************
void  enable_reader_vmc()
//********************
{
  r_a = 1;
  enable_reader_vmc_0();
}
//*************************************
void  enable_reader_vmc_0()
//********************
{
  buf_data_tx_mdb[0]  = r_a;
  cnt_data_mdb  = 1;
  r_a = (num_cashless+4);
  vend_request_2();
}


//*************************************
void  vend_request_0()
//********************
{
  r_a = (num_cashless+3);
  setup_cash_1();
}
//*************************************
void  vend_request_1()
//********************
{
  cnt_data_mdb  = r_a;
  r_a = num_cashless+3;
  vend_request_2();
}
//*************************************
void  vend_request_2()
//********************
{
  com_mdb = r_a;
  tx_vmc();
  if (bitRead(flags_mdb,f_end_rx_mdb) !=0)
  {
    test_responce();
  } 
}
//*************************************
void    setup_cash_001()
//********************
{
  com_mdb = r_a;
    r_a = *(int*)u;
    u++;
    cnt_data_mdb  = r_a;
    for (i=0;i<r_a;i++)
    {
      *(buf_data_tx_mdb+i)  = *(uint8_t*)u;
      u++;
    }
      tx_vmc();
      if (bitRead(flags_mdb,f_end_rx_mdb) !=0)
      {
        test_responce();
      } 
    
    
}

//************************************************
void  test_mdb()
//************************************************
{
  
if (bitRead (flags_mdb,f_to_mdb) != 0)
{

work_mdb_cash();
to_s_mdb  = 0x70;
bitClear (flags_mdb,f_to_mdb);
}
return;
}

//************************************************
//void  init_t_mdb()
//************************************************

//{
  
//}

//************************************************
void  start_com_mdb()
//************************************************
{
  cnt_tx_mdb  = 0;
  UCSR2B  = 0x0d;
  //delay(1);
  _delay_ms(1);
  check_mdb = com_mdb;
  r_a = com_mdb;
  wait_tx_mdb();
  UCSR2B  = 0x0c; 
  _delay_ms(1);
  while (cnt_data_mdb !=  0)
  {
    cnt_data_mdb--  ;
    r_a = *(buf_data_tx_mdb + cnt_tx_mdb);
    cnt_tx_mdb++;
    check_mdb = check_mdb + r_a;  
    wait_tx_mdb();
    
  }
  
  
  trans_ks();
  
  
}
//***************************************************************
void  ack_mdb()
//**************************
{
  r_a = 0;
  wait_tx_mdb();
}

//************************************************
void  trans_ks()
//************************************************
{
    r_a = check_mdb;
    wait_tx_mdb();
    wait_rx_mdb();
    return;
}

//************************************************
void  wait_tx_mdb()
//************************************************
{
    UDR2  = r_a;
    //UDR3  = r_a;
    
    while (bitRead (UCSR2A,TXC2) == 0)
    {
      
    }
    
    bitSet  (UCSR2A,TXC2);
  
  
}

//************************************************
void  wait_rx_mdb()
//************************************************
{
    cnt_data_mdb  = 0;
    cnt_rx_mdb  = 0;

    to_s_mdb  = 0x20;
    UCSR2B  = 0x9c;
    //_delay_ms(1);
        //bitClear  (flags_mdb,(f_err_ans_mdb|f_not_ans_mdb|f_to_mdb|f_end_rx_mdb));
        flags_mdb =(flags_mdb & 0x4d);
TCNT4H  = C_TH4;
TCNT4L  = C_TL4;
TCCR4B  = C_TCCR4B;

while(bitRead(flags_mdb,f_end_rx_mdb)==0){ 
  if(bitRead(flags_mdb,f_to_mdb)!=0){ya=ya+1;bitSet(flags_mdb,f_err_ans_mdb);bitClear(flags_mdb,f_to_mdb);return;}
  if(ya>=30){ya=0;reset_cash();}
  }
    
//    ack_mdb();
}




//************************************************
void  init_usart_mdb()
//************************************************
{
  UCSR2A  = 0;
  UCSR2B  = 0x1c; //
  UCSR2C  = 0X06; //  
  UBRR2H  = 0;  //
  UBRR2L  = 103;  // 

  UCSR3A  = 0;
  UCSR3B  = 0x98; // ����. �� ��.\ ����.��.\����.���.\9���
  UCSR3C  = 0X06; //  9 ��� , 1 ���� ��� , ������.
  UBRR3H  = 0;  //
  UBRR3L  = 52; // 
  
  
  UCSR0A  = 0;
  UCSR0B  = 0x08; // ����. �� ��.\ ����.��.\����.���.\8���
  UCSR0C  = 0X06; //  9 ��� , 1 ���� ��� , ������.
  UBRR0H  = 0;  //
  UBRR0L  = 52; // ����� 16.0 MHg  9600
  
}

//************************************************
ISR (TIMER4_OVF_vect) //
//************************************************
{
  to_s_mdb--;
  if  (to_s_mdb  ==  0)
  {
  bitSet  (flags_mdb,f_to_mdb);
  }
}

//**************************************************************************
void  init_ports()
//*******************
{
  
  PORTA = 0xff;
  DDRA  = 0x00;
  
  PORTB = 0x09;
  DDRB  = 0xf6;
  
  PORTC = 0xff;
  DDRC  = 0x00;
  
  PORTD = 0xf7;
  DDRD  = 0x08;
  
  PORTE = 0xfd;
  DDRE  = 0x02;

  PORTF = 0xfb;
  DDRF  = 0x04;

  PORTG = 0xdf;
  DDRG  = 0x20;

  PORTH = 0x85;
  DDRH  = 0x7a;
  
  PORTJ = 0xfd;
  DDRJ  = 0x02;
  
  PORTK = 0xb6;
  DDRK  = 0x49;

  PORTL = 0xff;
  DDRL  = 0x00;

}

//**************************************************************************
void  init_tmr()
//*****************
{
//  INIT_TMR1:
TCNT1H  = C_TH1;
TCNT1L  = C_TL1;
TCCR1B  = C_TCCR1B;
//bitSet(TIMSK1,TOIE1);

//  INIT_TMR3:
TCNT3H  = C_TH3;
TCNT3L  = C_TL3;
TCCR3B  = C_TCCR3B;
//bitSet(TIMSK3,TOIE3);

//  INIT_TMR4:
TCNT4H  = C_TH4;
TCNT4L  = C_TL4;
TCCR4B  = C_TCCR4B;
bitSet(TIMSK4,TOIE4);

//  INIT_TMR5:
TCNT5H  = C_TH5;
TCNT5L  = C_TL5;
TCCR5B  = C_TCCR5B;
//bitSet(TIMSK5,TOIE5);
}

//**************************************************************************
void  init_usart()
//*******************
{
  init_usart_mdb(); 
//INIT_USART0:
/*
  UCSR0A  = 0x00;
  UCSR0B  = 0x98;   
  UCSR0C  = 0x06;
  UBRR0H  = 0x00;   
  UBRR0L  = 103 ; //�������� 9600 ���;����� 16MHg
*/
//INIT_USART1:  
/*
  UCSR1A  = 0x00;
  UCSR1B  = 0x98;   
  UCSR1C  = 0x06;
  UBRR1H  = 0x00;   
  UBRR1L  = 103 ; //�������� 9600 ���;����� 16MHg
*/  
//INIT_USART2:
/*
  UCSR2A  = 0x00;
  UCSR2B  = 0x98;   
  UCSR2C  = 0x06;
  UBRR2H  = 0x00;   
  UBRR2L  = 103 ; //�������� 9600 ���;����� 16M
  */
//INIT_USART3:
/*
  UCSR3A  = 0x00;
  UCSR3B  = 0x98;   
  UCSR3C  = 0x06;
  UBRR3H  = 0x00;   
  UBRR3L  = 103 ; //�������� 9600 ���;����� 16MHg
  */

}

//**************************************************************************
void  start_init()
//*******************
{
  //init_ports();
  _delay_ms(30);
  init_tmr();
  init_usart();
  bitSet(flags_vmc1_com,f_reset_cash_vmc);
  sei();
}

/*
//************************************************
ISR(USART0_RX_vect)  // ���������� �� USART2
//************************************************
{

  in_test_mdb = UCSR0B;
  in_rx_usart0 = UDR0;
  bitSet(flags_vmc1_com,f_request_vmc);
  
  //UDR3  = in_rx_usart0;

}
*/
//************************************************
ISR(USART2_RX_vect) // ���������� �� USART2
//************************************************
{
  TCNT3H  = 0x80; //
  TCNT3L  = 0;  //
  in_test_mdb = UCSR2B;
  in_rx_mdb = UDR2;
  ///////UDR3  = in_rx_mdb;

    
  
  *(buf_data_rx_mdb+cnt_rx_mdb)  = in_rx_mdb;  // IN RX3
  cnt_rx_mdb++;           // ������� �������� ����
  
  
  if (bitRead (in_test_mdb,RXB82) != 0)
  {
      *p  = cnt_rx_mdb;
    bitSet(flags_mdb,f_end_rx_mdb);
  
  }
  
      //return;
      
}

//*************************************
void  set_ok_vend()
//********************
{

  for (int i = 0; i < in_price; i=i+10) {  // Serial.println("\nz\nd\nz\n");Serial1.println("\nz\nd\nz\n");
  } 
    if(in_price>0){Serial.println("\nz\n/\nz\n");Serial1.println("\nz\n/\nz\n");  }in_price=0;  bitSet (flags_tek_kkt,f_cashless);
  
  //  for (int i = 0; i < b_price; i++)
    
 //   {
 //     Serial1.println("c");
      //UDR3  = 'c';
 //   }
  
  return;
}

От службы поддержки пришли вот эти логи: 
 
Пример лога стандартной инициализации по MDB:
Sep 30 19:33:28 jibe user.info EftVending[1658]: put: [46087][VMC][OUT] : 00
Sep 30 19:33:29 jibe user.info EftVending[1658]: performIO: [47012][VMC][IN] : ACK after 1 attempts
Sep 30 19:33:29 jibe user.info EftVending[1658]: performIO: [47013][VMC][IN] : 110003000000
Sep 30 19:33:30 jibe user.info EftVending[1658]: put: [48342][VMC][OUT] : 0103FFFF01007809
Sep 30 19:33:31 jibe user.info EftVending[1658]: performIO: [48380][VMC][IN] : 1101FFFF0000
Sep 30 19:33:31 jibe user.info EftVending[1658]: performIO: [48673][VMC][IN] : ACK after 1 attempts
Sep 30 19:33:31 jibe user.info EftVending[1658]: performIO: [49215][VMC][IN] : 17004D45493030303030303030303030304E4743204D444220303030310127
Sep 30 19:33:32 jibe user.info EftVending[1658]: put: [49537][VMC][OUT] : 0956444B37303030303030303534353956656E646F74656B322E3520004300000020
Sep 30 19:33:32 jibe user.info EftVending[1658]: performIO: [50016][VMC][IN] : ACK after 1 attempts
Sep 30 19:33:33 jibe user.info EftVending[1658]: performIO: [50522][VMC][IN] : 170400000020
Sep 30 19:33:34 jibe user.info EftVending[1658]: performIO: [51751][VMC][IN] : 1401
 
 
Лог вашей инициализации:
Nov  4 19:06:46 jibe user.info EftVending[1588]: put: [25352][VMC][OUT] : 00
Nov  4 19:06:46 jibe user.info EftVending[1588]: put: [25492][VMC][OUT] : 00
Nov  4 19:06:47 jibe user.info EftVending[1588]: performIO: [26963][VMC][IN] : ACK after 1 attempts
Nov  4 19:06:47 jibe user.info EftVending[1588]: performIO: [26969][VMC][IN] : 17004956543030303030303030303132332030303030303030303034353101
Nov  4 19:06:48 jibe user.info EftVending[1588]: put: [27616][VMC][OUT] : 0956444B37303030303030303933353556656E646F74656B322E35200045
Nov  4 19:06:48 jibe user.info EftVending[1588]: performIO: [27704][VMC][IN] : 1400
Nov  4 19:06:49 jibe user.info EftVending[1588]: performIO: [28100][VMC][IN] : 110001000007
Nov  4 19:06:49 jibe user.info EftVending[1588]: put: [28572][VMC][OUT] : 0101FFFF01007809
Nov  4 19:06:49 jibe user.info EftVending[1588]: performIO: [28624][VMC][IN] : 110101F40032
Nov  4 19:06:50 jibe user.info EftVending[1588]: performIO: [29116][VMC][IN] : 1401
Nov  4 19:06:53 jibe user.info EftVending[1588]: performIO: [32277][VMC][IN] : 17004956543030303030303030303132332030303030303030303034353101
Nov  4 19:06:53 jibe user.info EftVending[1588]: put: [32433][VMC][OUT] : 0956444B37303030303030303933353556656E646F74656B322E35200045
Nov  4 19:06:53 jibe user.info EftVending[1588]: performIO: [32536][VMC][IN] : 1400
Nov  4 19:06:54 jibe user.info EftVending[1588]: performIO: [33179][VMC][IN] : 110001000007
Nov  4 19:06:54 jibe user.info EftVending[1588]: put: [33871][VMC][OUT] : 0101FFFF01007809
Nov  4 19:06:55 jibe user.info EftVending[1588]: performIO: [34050][VMC][IN] : 110101F40032
Nov  4 19:06:55 jibe user.info EftVending[1588]: performIO: [34844][VMC][IN] : 1401
Nov  4 19:07:01 jibe user.info EftVending[1588]: performIO: [40187][VMC][IN] : 10
Nov  4 19:07:01 jibe user.info EftVending[1588]: put: [40424][VMC][OUT] : 00
Nov  4 19:07:02 jibe user.info EftVending[1588]: performIO: [41387][VMC][IN] : 10
Nov  4 19:07:03 jibe user.info EftVending[1588]: performIO: [42101][VMC][IN] : ACK after 1 attempt 
 

 

 

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

Очень мало информации. Что за ошибка в инициализации? - предлагаете искать вслепую в сотнях строк кода?

Что за ардуино? пять таймеров. три Сериал? - Мега?

Ну и потом, это хоббийный сайт. А торговый автомат - это бизнес. Такие услуги оказываются только платно. Служба поддержки, я так понял, помогать вам не хочет. А мы почему должны?

 

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

B707, а для чего ещё форумы нужны? Для этого.

Пока ты чай на работе пьешь, форум за тебя ошибки в исходниках ищет. Найдет, все расскажет-исправит, ты клиенту проект сдашь, денежку получишь и красавчик со всех сторон.

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Так и запишем, Ошибка в ДНК вопрошающего. 

Kabasya
Offline
Зарегистрирован: 20.05.2018

Это проект не для клиента 

это мой терминал который работает в моей прачечной

запарился уже с этим банковским терминалом 

Ардуино Мега 

Сюда пишу потому что уже сам не знаю где искать 

поддержка помогать не хочет ...

 

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

Если не можешь справиться с бешенной кобылой - продай ее и живи спокойно.

imp
Онлайн
Зарегистрирован: 20.06.2020

Kabasya пишет:

...поддержка помогать не хочет ...

А весьма верояно, что и не может. Подключите параллельно терминалу к выходу и выходу Вашего устройства два входа RS232 компьютера, и просматривайте передаваемые запросы и ответы на них, сравнивая их с даташитом на устройство. Правьте программу устраняя отличия.

Возможно, что отличий не будет (маловероятно, но в принципе возможно) тогда возьмите программу для работы с терминалом, и точно так же снифайте сравнивая с даташитом. Различия перенесите в свою программу.

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

Kabasya пишет:

Это проект не для клиента 

это мой терминал который работает в моей прачечной

То есть прачечная - это не бизнес?

Ваша личная стиральная машина оборудована банковским терминалом? А деньги с кого берете, с жены?

Kabasya
Offline
Зарегистрирован: 20.05.2018

решение найдено 

более не актуально 

 

 

 

Kabasya
Offline
Зарегистрирован: 20.05.2018

прошу удалить тему 

SAB
Offline
Зарегистрирован: 27.12.2016

Год назад запускал вендотековские терминалы по COM порту. Все прекрасно работало. Правда приемник В конечном итоге просто перешли на пульс и без всяких контроллеров втыкаем вместо купюрника