Страница 1 из 4

GPT Aurora vs Linux

СообщениеДобавлено: 24 окт 2006, 14:29
Anton B
Доброго времени суток  ;)
Есть такой вот трабл...пишу софт под *nix.
Купюроприемник GPT Aurora, команды шлю такие, которые описаны в протоколе V2.2. Я слышал что их есть несколько версий, может я не потому протоколу работаю?
Вот он исходник...
Код: выделить все
#include <stdio.h>
#include <string.h>
#include <fcntl.h>
#include <termios.h>
#include <unistd.h>
#include <errno.h>
#include <pthread.h>
#include <iostream>
using namespace std;

int fd;
int open_port();
void* status_req(void* ptr);
void* reading_port(void* ptr);
int main()
{
   
   open_port();
   pthread_t thread1, thread2;
   termios options;
   tcgetattr(fd,&options);
   cfsetispeed(&options,B9600);
   cfsetospeed(&options,B9600);
   options.c_cflag |= PARENB;
   options.c_cflag &= ~PARODD;
   options.c_cflag &= ~CSTOPB;
   options.c_cflag &= ~CSIZE;
   options.c_cflag |= CS8;
   options.c_cflag |= (CLOCAL | CREAD);
   tcsetattr(fd,TCSANOW,&options);
   int  iret1, iret2;
   iret1 = pthread_create( &thread1, NULL,reading_port, 0);
   iret2 = pthread_create( &thread2, NULL, status_req, 0);

   unsigned char inhibit[7]={2,0,0,7,240,255,7};
   unsigned char uninhibit[7]={2,0,0,7,241,255,6};
   pthread_join( thread1, NULL);
   pthread_join( thread2, NULL);
   while(1)
   {
      int b=0 ;
      cin>>b;
      int w=0;
      switch(b)
      {
         case 1:
            write(fd,inhibit,7);
            printf("Status request: %d bytes sended\n",w);
            break;
         case 2:
            w=write(fd,uninhibit,7);
            printf("Status request: %d bytes sended\n",w);
            break;
      }
   }
   
   
   printf("Thread 1 returns: %d\n",iret1);
   printf("Thread 2 returns: %d\n",iret2);
   
   
   return 1;
}


int open_port()
{
   fd=open("/dev/ttyS0",O_RDWR|O_NOCTTY|O_NDELAY);
   
   if(fd == -1)
      perror("open_port: Unable to open /dev/ttyS0 -\n");
   else
      fcntl(fd,F_SETFL,0);
   return fd;
}

void* reading_port(void* ptr)
{
   unsigned char buff[255]={0};
   int r=0;
   while(1) {
      
      r = read(fd,&buff,255);
      if(r!=-1) {
         for(int i=0;i<r;i++){
            printf("%X ",buff[i]);
         }
         printf("\n");
      }
      
      bzero(&buff,sizeof(buff));
      tcflush(fd,TCIFLUSH);
   }
}
void* status_req(void* ptr)
{
   unsigned char status_req[7]={2,0,0,7,204,255,43};
   int w =0;
   while(1){
      usleep(1500);
      w=write(fd,status_req,7);
   }
}


Прошу прощение, за неаккуратность кода, ибо нервый уже не пределе :)

Вот что получаю в ответ...
Код: выделить все
2 0 0 A
2 0 0 A
0 0 0 FF
0 0 0 FF 24 2 0 0 7 FF FE F8 2 0 0 A
2 0 0 A
0 0 FF 24 2 0 0 A
2 0 0 A
0 0 FF 24 2 0 0 7 FF FE F8 2 0 0 A
0 0 0 FF 24 2 0 0 A
0 0 0 FF 24 2 0 0 7 FF FE F8 2 0 0 A
0 0 0 FF 24 2 0 0 A
0 0 0 FF 24 2 0 0 A
0 0 0 FF 24 2 0 0 A
0 1 0 0 0 0 FF 24 2 0 0 A
0 0 0 FF 24 2 0 0 7 FF FE F8 2 0 0 A
FF 24 2 0 0 A
0 0 0 0 FF 24 2 0 0 A
0 0 0 FF 24 2 0 0 7 FF FE F8 2 0 0 A
0 0 0 FF 24 2 0 0 A
0 0 0 FF 24 2 0 0 A
0 0 FF 24 2 0 0 7 FF FE F8 2 0 0 A
0 0 0 FF 24 2 0 0 A
0 0 0 FF 24 2 0 0 A
0 0 0 FF 24 2 0 0 A
1 0 0 0 0 FF 24 2 0 0 7 FF FE F8 2 0 0 A
0 0 0 FF 24 2 0 0 A
0 0 0 FF 24 2 0 0 A
0 0 0 FF 24 2 0 0 A
0 0 0 0 FF 24 2 0 0 7 FF FE F8 2 0 0 A
0 1 0 0 0 0 FF 24 2 0 0 A
0 0 0 FF 24 2 0 0 A
0 FF 24 2 0 0 A
0 0 0 FF 24 2 0 0 A
0 0 0 FF 24 2 0 0 A
0 0 FF 24 2 0 0 A
CC 0 1 0 0 0 0 FF 24 2 0 0 7 FF FE F8 2 0 0 A
1 0 0 0 0 FF 24 2 0 0 A
0 0 0 FF 24 2 0 0 A
1 0 0 0 0 FF 24 2 0 0 A
0 0 FF 24 2 0 0 A
0 0 0 FF 24 2 0 0 A
0 0 0 0 FF 24 2 0 0 A
0 0 0 FF 24 2 0 0 A
0 0 0 FF 24 2 0 0 A
CC 0 1 0 0 0 0 FF 24 2 0 0 A
0 0 0 FF 24 2 0 0 A
0 0 0 FF 24 2 0 0 A
0 0 0 FF 24 2 0 0 A
0 0 0 FF 24 2 0 0 A
0 0 FF 24 2 0 0 A
1 0 0 0 0 FF 24 2 0 0 A
0 0 0 FF 24 2 0 0 7 FF FE F8 2 0 0 A
0 0 0 FF 24 2 0 0 7 FF FE F8 2 0 0 A



Т.е. купюпроприемник меня понимает прекрасно, а то что он мне шлет в ответ я понять не могу :) либо гдето происходить потеря байт, либо я осел.

Что я не правильно делаю?
Кто с этим сталкивался, будьте добры в асю или на мэйл, пивом не обижу...

Re: GPT Aurora vs Linux

СообщениеДобавлено: 25 окт 2006, 11:36
Anton B
Ау..
Мне кто нибудь подскажет? это очень важно :(

Re: GPT Aurora vs Linux

СообщениеДобавлено: 25 окт 2006, 14:28
ANY
Anton B
У меня есть програмка, для теста GPT по протоколу v.2.2 атм есть вкладка где показываются какие команды отправляются на купюрник, и какие с него приходят, больше ничем помочь немогу в программировании несилен :)

лови на почте!

Re: GPT Aurora vs Linux

СообщениеДобавлено: 25 окт 2006, 14:46
ANY
Вроде неотправилось письмо ругательное прислали с твоего ящика.
Дай другой адрес.

Re: GPT Aurora vs Linux

СообщениеДобавлено: 25 окт 2006, 14:51
Anton B
ANY писал(а):Вроде неотправилось письмо ругательное прислали с твоего ящика.
Дай другой адрес.

странно...какой размер файла?
[email protected]
[email protected]

адреса валидные 100%..

Программа под линукс? ;) как я понял у тебя v2e host иль чет такое, у меня она есть, мне бы что нибудь подобное под Linux и в исходникак :))

Re: GPT Aurora vs Linux

СообщениеДобавлено: 25 окт 2006, 15:50
ANY
Не под линукс нету, а програмка называется V2test наверно тожесамое ??? На твои адреса  нехочет отпровлять заведи ящик на mail.ru

А интересно зачем ты под GPT пишеш есть же много других купюрников пиши под Cach Сode по протоколу ID003? Хотя я недавно узнал что и Cach Code бывает по протоколу v.2.2

Re: GPT Aurora vs Linux

СообщениеДобавлено: 25 окт 2006, 15:58
Anton B
ANY писал(а):А интересно зачем ты под GPT пишеш есть же много других купюрников пиши под Cach Сode по протоколу ID003? Хотя я недавно узнал что и Cach Code бывает по протоколу v.2.2

Хорошо рассуждаешь :))
Начальство сказало под GPT писать... протокол id003 намного проще, я бы сам был рад под него писать. а вод под gpt никак не могу вкурить :((

Re: GPT Aurora vs Linux

СообщениеДобавлено: 25 окт 2006, 17:36
ANY
Да знакомая ситуация. Начальство с технарями нисоветуется и покупает большую партию купюрников, а можноли их приклеить к тому куда они хотят это вопрос  :'( Вот и приходится с помощю топора и какойто матери лепить

А еси не так повлияй на них скажи мол никак это неподружить давайте купим другой

Re: GPT Aurora vs Linux

СообщениеДобавлено: 25 окт 2006, 17:51
AR_Favorit
Начальство не всегда такое тупое ;)

Re: GPT Aurora vs Linux

СообщениеДобавлено: 26 окт 2006, 08:39
Anton B
AR_Favorit писал(а):Начальство не всегда такое тупое ;)

Правильно подметил :) Так что вопрос еще остается в силе...

Re: GPT Aurora vs Linux

https://forum.rarib.net/viewtopic.php?f=66&t=35049