Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Аватара для morgan1991

Старожил


Сообщения: 398
Благодарности: 13

Профиль | Сайт | Отправить PM | Цитировать


Нашел еще информации на вики. На словах все просто.

Структура кода EAN-13

Цитата:
Код: Выделить весь код
Первая      Первая (левая)           Вторая (правая)
цифра	    группа из 6 цифр         группа из 6 цифр
0	              LLLLLL	              RRRRRR
1	              LLGLGG	              RRRRRR
2	              LLGGLG	              RRRRRR
3	              LLGGGL	              RRRRRR
4	              LGLLGG	              RRRRRR
5	              LGGLLG	              RRRRRR
6	              LGGGLL	              RRRRRR
7	              LGLGLG	              RRRRRR
8	              LGLGGL	              RRRRRR
9	              LGGLGL	              RRRRRR
Кодирование цифр
Цитата:
Код: Выделить весь код
Цифра	L-код	R-код	G-код
0	0001101	1110010	0100111
1	0011001	1100110	0110011
2	0010011	1101100	0011011
3	0111101	1000010	0100001
4	0100011	1011100	0011101
5	0110001	1001110	0111001
6	0101111	1010000	0000101
7	0111011	1000100	0010001
8	0110111	1001000	0001001
9	0001011	1110100	0010111
Источник

Исходя из этого:
0 = 1 пиксель белого цвета,
1 = 1 пиксель черного цвета.

Также нашел решение на C++.
Код: Выделить весь код
int shtrixcode[13] = {4,6,0,1,2,5,0,2,0,2,1,7,4};
 
int sxem_table[10][12] = { {0,0,0,0,0,0,1,1,1,1,1,1},
                          {0,0,2,0,2,2,1,1,1,1,1,1},
                          {0,0,2,2,0,2,1,1,1,1,1,1},
                          {0,0,2,2,2,0,1,1,1,1,1,1},
                          {0,2,0,0,2,2,1,1,1,1,1,1},
                          {0,2,2,0,0,2,1,1,1,1,1,1},
                          {0,2,2,2,0,0,1,1,1,1,1,1},
                          {0,2,0,2,0,2,1,1,1,1,1,1},
                          {0,2,0,2,2,0,1,1,1,1,1,1},
                          {0,2,2,0,2,0,1,1,1,1,1,1} };
bool LGR_codes[10][3][7] = { { {0,0,0,1,1,0,1}, {1,1,1,0,0,1,0}, {0,1,0,0,1,1,1} },
                             { {0,0,1,1,0,0,1}, {1,1,0,0,1,1,0}, {0,1,1,0,0,1,1} },
                             { {0,0,1,0,0,1,1}, {1,1,0,1,1,0,0}, {0,0,1,1,0,1,1} },
                             { {0,1,1,1,1,0,1}, {1,0,0,0,0,1,0}, {0,1,0,0,0,0,1} },
                             { {0,1,0,0,0,1,1}, {1,0,1,1,1,0,0}, {0,0,1,1,1,0,1} },
                             { {0,1,1,0,0,0,1}, {1,0,0,1,1,1,0}, {0,1,1,1,0,0,1} },
                             { {0,1,0,1,1,1,1}, {1,0,1,0,0,0,0}, {0,0,0,0,1,0,1} },
                             { {0,1,1,1,0,1,1}, {1,0,0,0,1,0,0}, {0,0,1,0,0,0,1} },
                             { {0,1,1,0,1,1,1}, {1,0,0,1,0,0,0}, {0,0,0,1,0,0,1} },
                             { {0,0,0,1,0,1,1}, {1,1,1,0,1,0,0}, {0,0,1,0,1,1,1} } };
 
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
        int i_sxem = shtrixcode[0];
        bool visual_strixcode[95];
        int visual_height[95];
        for ( int i = 0; i < 95; i++ ) visual_height[i] = 40;
        int v_count = 0;
 
        String s = "";
 
        // -------------------------- íà÷àëüíûå 2 ÷åðíûõ øòðèõà -------------------------
        visual_strixcode[v_count] = 1; visual_height[v_count] = 45; v_count++;
        visual_strixcode[v_count] = 0; visual_height[v_count] = 45; v_count++;
        visual_strixcode[v_count] = 1; visual_height[v_count] = 45; v_count++;
        // -------------------------------------------------------------------------------------
 
        // --------------------------------- ëåâàÿ ÷àñòü --------------------------------------
        for ( int i = 1; i < 7; i++ )
        {
                int cifra = shtrixcode[i];
                for ( int j = 0; j < 7; j++ )
                {
                        visual_strixcode[v_count++] = LGR_codes[cifra][sxem_table[i_sxem][i-1]][j];
                        s += String((int)visual_strixcode[v_count-1]);
                }
                s += "\r\n";
        }
        // -------------------------------------------------------------------------------------
 
        s += "\r\n";
 
        // ----------------------------- 2 ÷åðíûõ øòðèõà ïî ñåðåäèíå ---------------------------
        visual_strixcode[v_count] = 0; visual_height[v_count] = 45; v_count++;
        visual_strixcode[v_count] = 1; visual_height[v_count] = 45; v_count++;
        visual_strixcode[v_count] = 0; visual_height[v_count] = 45; v_count++;
        visual_strixcode[v_count] = 1; visual_height[v_count] = 45; v_count++;
        visual_strixcode[v_count] = 0; visual_height[v_count] = 45; v_count++;
        // -------------------------------------------------------------------------------------
 
 
        // --------------------------------- ïðàâàÿ ÷àñòü --------------------------------------
        for ( int i = 7; i < 13; i++ )
        {
                int cifra = shtrixcode[i];
                for ( int j = 0; j < 7; j++ )
                {
                        visual_strixcode[v_count++] = LGR_codes[cifra][sxem_table[i_sxem][i-1]][j];
                        s += String((int)visual_strixcode[v_count-1]);
                }
                s += "\r\n";
        }
        // -------------------------------------------------------------------------------------
 
        //ShowMessage(s);
 
        // -------------------------- ïîñëåäíèå 2 ÷åðíûõ øòðèõà -------------------------
        visual_strixcode[v_count] = 1; visual_height[v_count] = 45; v_count++;
        visual_strixcode[v_count] = 0; visual_height[v_count] = 45; v_count++;
        visual_strixcode[v_count] = 1; visual_height[v_count] = 45; v_count++;
        // -------------------------------------------------------------------------------
 
        // ---------------------------------- îòðèñîâêà ---------------------------------
        for ( int i = 0; i < 96; i++ )
        {
                if (visual_strixcode[i]) Image1->Canvas->Pen->Color = clBlack;
                else Image1->Canvas->Pen->Color = clWhite;
                Image1->Canvas->MoveTo(i, 0);
                Image1->Canvas->LineTo(i, visual_height[i]);
        }
        // ------------------------------------------------------------------------------
}
Источник
Попробую реализовать на Autoit, по идее даже не нужен шрифт. Нужно только прорисовать графику. Мне не принципиально сохранять в img файл. Можно просто вывести в gui.
Попробую написать код. Но все же буду признателен за помощь.

-------
Хочу научиться писать драйвера на с++


Отправлено: 19:30, 01-02-2022 | #2