MDB ARDUINO + банковский терминал VENDOTEK 3
- Войдите на сайт для отправки комментариев
Чт, 05/11/2020 - 16:23
Добрый день !
Может кто сталкивался с подключение банковского терминала 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, а для чего ещё форумы нужны? Для этого.
Пока ты чай на работе пьешь, форум за тебя ошибки в исходниках ищет. Найдет, все расскажет-исправит, ты клиенту проект сдашь, денежку получишь и красавчик со всех сторон.
Так и запишем, Ошибка в ДНК вопрошающего.
Это проект не для клиента
это мой терминал который работает в моей прачечной
запарился уже с этим банковским терминалом
Ардуино Мега
Сюда пишу потому что уже сам не знаю где искать
поддержка помогать не хочет ...
Если не можешь справиться с бешенной кобылой - продай ее и живи спокойно.
...поддержка помогать не хочет ...
А весьма верояно, что и не может. Подключите параллельно терминалу к выходу и выходу Вашего устройства два входа RS232 компьютера, и просматривайте передаваемые запросы и ответы на них, сравнивая их с даташитом на устройство. Правьте программу устраняя отличия.
Возможно, что отличий не будет (маловероятно, но в принципе возможно) тогда возьмите программу для работы с терминалом, и точно так же снифайте сравнивая с даташитом. Различия перенесите в свою программу.
Это проект не для клиента
это мой терминал который работает в моей прачечной
То есть прачечная - это не бизнес?
Ваша личная стиральная машина оборудована банковским терминалом? А деньги с кого берете, с жены?
решение найдено
более не актуально
прошу удалить тему
Год назад запускал вендотековские терминалы по COM порту. Все прекрасно работало. Правда приемник В конечном итоге просто перешли на пульс и без всяких контроллеров втыкаем вместо купюрника
Sab, здравствуйте, у меня сейчас похожая задача стоит, нужно подружить Ардуино и вендотек, вы могли мне помочь за оплату, свяжитесь со мной по почте mbmb0mbmb0@yandex.ru, пожалуйста.
Спасибо
то Idex: За пару лет работы с Vendotek пришли к выводу, что легче с ним работать по протоколу пульс. Он работает точно так же как обычный купюрник ICT V7, причем вешается параллельно выходу купюрнтка. И там и там, выход на открытый коллектор. Стоимость импульса можно задавать через обновления прошивки через сервис Vendotek или через банк. Если вешаете на один канал с кпюрником то 1 импульс = 10 рублям. Физически, питание +12 вольт подаете на ХР2 контакт 1 GND-контакт 2 Импульсы снимаете с XP1 с контакта 11 (IO1/COIN OUT1). Скважность импульса так же можно задать программно, но обычно 50 мс 50%
Sab, здравствуйте, прошу вас помочь разобраться с работой вендотек по com порту, прошу связаться со мной dm-iv@bk.ru Отблагодарю финансово за помощь. С пульсом все понятно, я не могу разобраться с работой по протоколу vtk.
Это работало на Vendotek 1. Наверняка, что то пригодится. Тот же алгоритм вычисления CRC остался тот же. Atmega328 работала на этом скетче. Я уже не буду вспоминать, что и как там по алгоритмам, разбирайтесь сами, там некоторые пояснения есть. Договоритесь с вендотеком, чтобы вам прошили ваш присланный им терминал прошивкой для интеграции. Потому что по воздуху они не шьют данную прошивку. Когда получите данный терминал, то у вас появится возможность без связи с банком, прикладывая карту получать валидную транзакцию без снятия средств с карты. Только так вы сможете у себя откатать данный протокол. Всё чем мог , я помог. Больше не просите меня, даже за деньги, вернуться к этому проекту.
Огромное спасибо
Здравствуйте. Как решили проблему? Нашли ошибки в коде? Хотелось бы пообщаться на данную тему s_shershnev@mail.ru