12 static struct sercom_data sercom;
13 static pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
37 unsigned char getOpcode(commandes command)
71 case REQUEST_REVISION:
98 int send_command(commandes command, unsigned char *data, int dataLength)
100 unsigned char length;
101 int i; //pomocne cyklitko
108 printf("\ndelka paketu je %d\n", length);
111 unsigned char message[length];
116 message[1]=getOpcode(command);
120 message[3]=0x00; //to se musi najit, co jaky bit dela
124 for (i=0; i<dataLength; i++)
125 message[4+i]=data[i];
128 //necham prazdna data
133 count_checksum(message, length);
137 printf("\ncelkovy paket je:\n");
138 for (i=0; i<length; i++)
139 printf("0x%0.2X ", message[i]);
142 barcode_write(message, length);
148 void count_checksum(unsigned char *message, int length)
150 //to jako nevim jak spocitat
151 message[length-1]=0xAA;
152 message[length-2]=0xBB;
156 int barcode_sercom_init(char * tty, void(*sighandler)(int))
159 strcpy((char *)&sercom.devname, tty);
160 sercom.baudrate = 9600;
161 sercom.parity = SERCOM_PARNONE;
165 sercom.sighandler = NULL;
166 ret = sercom_open(&sercom);
173 /* this part is used for testing purposess with ebboard,
174 remove this when conected to real scanner */
175 /* toogle DTR and RTS signal to drive the ebboard from reset */
178 ioctl(sercom.fd, TIOCMGET, &status); /* get the serial port status */
180 status &= ~TIOCM_DTR;
181 status &= ~TIOCM_RTS;
183 ioctl(sercom.fd, TIOCMSET, &status); /* set the serial port status */
185 printf("Open serial connection to barcode scanner!");
191 int barcode_read(unsigned char *buff, int size)
194 pthread_mutex_lock(&mutex);
195 ret = read(sercom.fd, buff, size);
196 pthread_mutex_unlock(&mutex);
199 printf("READ FAILED!\n");
205 int barcode_write(unsigned char *buff, int size)
209 pthread_mutex_lock(&mutex);
210 printf("sending command (%2d bytes): ", size);
213 ret = write(sercom.fd, buff, size);
214 pthread_mutex_unlock(&mutex);
216 printf("uoled: WRITE FAILED!\n");
227 barcode_sercom_init("/dev/ttyUSB0", NULL);
230 send_command(AIM_OFF, NULL, 0);
233 //cekam na odpoved, coz je delka prijimane zpravy
234 barcode_read(rcmd,1);
236 printf("\ndelka nadchazejici zpravy 0x%0.2X\n", rcmd[0]);
243 barcode_read(rcmd, 4);
249 //printf("%s", rcmd);