(init): Print const label
commit
cc7b8e863e
|
@ -0,0 +1,5 @@
|
|||
{
|
||||
"files.associations": {
|
||||
"godex500.h": "c"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,72 @@
|
|||
#include "Godex500.h"
|
||||
const int OFFSET = 0;
|
||||
int GODEX500_setup_serial(const char* device) {
|
||||
int serial_port = open(device, O_RDWR);
|
||||
if (serial_port < 0) {
|
||||
perror("Ошибка открытия последовательного порта");
|
||||
return -1;
|
||||
}
|
||||
|
||||
struct termios tty;
|
||||
memset(&tty, 0, sizeof tty);
|
||||
|
||||
if (tcgetattr(serial_port, &tty) != 0) {
|
||||
perror("Ошибка получения атрибутов TTY");
|
||||
close(serial_port);
|
||||
return -1;
|
||||
}
|
||||
|
||||
cfsetospeed(&tty, B9600);
|
||||
cfsetispeed(&tty, B9600);
|
||||
|
||||
tty.c_cflag &= ~PARENB;
|
||||
tty.c_cflag &= ~CSTOPB;
|
||||
tty.c_cflag &= ~CSIZE;
|
||||
tty.c_cflag |= CS8;
|
||||
|
||||
tty.c_cflag |= CREAD | CLOCAL;
|
||||
|
||||
if (tcsetattr(serial_port, TCSANOW, &tty) != 0) {
|
||||
perror("Ошибка установки атрибутов TTY");
|
||||
close(serial_port);
|
||||
return -1;
|
||||
}
|
||||
|
||||
return serial_port;
|
||||
}
|
||||
|
||||
void GODEX500_send_to_printer(int serial_port, const char* data) {
|
||||
write(serial_port, data, strlen(data));
|
||||
tcdrain(serial_port);
|
||||
}
|
||||
|
||||
void GODEX500_print_label(int serial_port, const char* id, const char* model) {
|
||||
char buffer[1024];
|
||||
char datamatrix_data[200];
|
||||
|
||||
snprintf(datamatrix_data, sizeof(datamatrix_data), "%s", id);
|
||||
int datamatrix_length = strlen(datamatrix_data);
|
||||
|
||||
snprintf(buffer, sizeof(buffer),
|
||||
"^Q10,2\n"
|
||||
"^W25\n"
|
||||
"^H14\n"
|
||||
"^P1\n"
|
||||
"^S2\n"
|
||||
"^AT\n"
|
||||
"^C1\n"
|
||||
"^R0\n~Q+0\n"
|
||||
"^O0\n^D0\n^E30\n~R255\n"
|
||||
"^L\n"
|
||||
"Dy2-me-dd\nTh:m:s\n"
|
||||
"AB,%d,10,1,1,0,0E,%s\n"
|
||||
"AB,%d,45,1,1,0,0E,%s\n"
|
||||
"XRB%d,14,4,0,%d\n"
|
||||
"%s\n"
|
||||
"E\n",
|
||||
5 + OFFSET, id,
|
||||
40 + OFFSET, model,
|
||||
130 + OFFSET, datamatrix_length, datamatrix_data);
|
||||
|
||||
GODEX500_send_to_printer(serial_port, buffer);
|
||||
}
|
|
@ -0,0 +1,16 @@
|
|||
#ifndef GODEX500_H
|
||||
#define GODEX500_H
|
||||
|
||||
#include <stdio.h>
|
||||
#include <fcntl.h>
|
||||
#include <termios.h>
|
||||
#include <unistd.h>
|
||||
#include <string.h>
|
||||
#include <time.h>
|
||||
|
||||
// Прототипы функций
|
||||
int GODEX500_setup_serial(const char* device);
|
||||
void GODEX500_send_to_printer(int serial_port, const char* data);
|
||||
void GODEX500_print_label(int serial_port, const char* id, const char* model);
|
||||
|
||||
#endif /* GODEX500_H */
|
|
@ -0,0 +1,29 @@
|
|||
# Переменные
|
||||
CC = gcc
|
||||
CFLAGS = -Wall -g
|
||||
LDFLAGS =
|
||||
TARGET = program
|
||||
|
||||
SRCS = \
|
||||
main.c \
|
||||
GODEX500/Godex500.c \
|
||||
|
||||
OBJS = $(SRCS:.c=.o)
|
||||
|
||||
# Цель по умолчанию
|
||||
all: $(TARGET) clean launch
|
||||
|
||||
# Правило для создания исполняемого файла
|
||||
$(TARGET): $(OBJS)
|
||||
$(CC) $(CFLAGS) -o $(TARGET) $(OBJS) $(LDFLAGS)
|
||||
|
||||
# Правило для компиляции .c файлов в .o файлы
|
||||
%.o: %.c
|
||||
$(CC) $(CFLAGS) -c $< -o $@
|
||||
|
||||
# Чистка проекта от скомпилированных файлов
|
||||
clean:
|
||||
rm -f $(OBJS)
|
||||
|
||||
launch:
|
||||
./$(TARGET)
|
|
@ -0,0 +1,10 @@
|
|||
#include "./GODEX500/Godex500.h"
|
||||
#define SerialDevice "/dev/ttyUSB0"
|
||||
int main() {
|
||||
const char* id = "2E000504";
|
||||
const char* model = "LS3";
|
||||
int serial_port = GODEX500_setup_serial(SerialDevice);
|
||||
GODEX500_print_label(serial_port, id, model);
|
||||
close(serial_port);
|
||||
return 0;
|
||||
}
|
Loading…
Reference in New Issue