ГОСТ ISO/1EC 24724—2011
Г
............................. *....................................*..................................
* подпрограмма elementsExp() определяет ширину элементов знака (п,к)
* при по крайней мере одном элементе с нечетным номером шириной ровно один модуль
• { П р и м е ч а н и е — Элементы с нечетными номерами — 1-й. 3-й, 5-й и тд. имеют четные индексы)
.......*...........................*.................................................................. V
void etementsExp (int ‘eDist, ini “widths, int N. int K) {
int i:
int minOdd;
int barSum;
/• получение размеров ширины элементов из нормированных измерений «от края до подобного края»*/
minOdd = 8: /* начинают с минимума == предполагаемая ширина первого элемента 7
barSum = widths[0] = 8; /’ сначала предполагают, что ширина первого штриха максимальная/8 модулей 7
for (i = 1: i < К*2-2: i += 2) {
widths[i] = eDistlHJ - widths[i-1]:
widths|i+1] = eDist(iJ - widths{i):
barSum ♦= widths[i] + widths[i+1];
if (widths(i+1J < minOdd) minOdd = widths{i+1];
}
widths[K‘2-1) = N - barSum; Г последний четный элемент составляет N модулей 7
if (minOdd > 1){
Г минимальная ширина нечетных элементов слишком велика, следует уточнить, чтобы минимальная ширина
нечетных элементов составляла 1 7
for (i = 0; i < К*2; i ♦= 2) {
widths[i| -= minOdd-1;
vndthsji+1] += minOdd-1;
}
}
return:
}
r....................*.......*.........................................
* пример () демонстрирует подпрограммы «elements» для GS1 DataBar Всенаправленный, GS1 DataBar Усечен
ный, GS1 DataBar Двустрочный, GS1 DataBar Двустрочный Всенаправленный. GS1 DataBar Ограниченный и GS1
DataBar Расширенный.
7
void main (void) {
int eDist14[6] = { 5.3.3.3.4.5 };
int eDistLim[12] = { 2.3.4.3.4.4.6.6.2.2.3.4 };
int eDistExp[6) = { 2.3.3.3.3.3 };
int widthsl14):
int i;
/• для внешнего знака символа символов штрихового кода GS1 DataBar Всенаправленный, GS1 DataBar
Усеченный, GS1 DataBar Двустрочный или GS1 DataBar Двустрочный Всенаправленный г 7
elements(eDist14, widths. 16.4);
printfCVi GS1 DataBar (16,4) elements: ");
for (i = 0; i < 8; i++) printf(*%d ". widths[i));
Г для внутреннего знака символа символов штрихового кода GS1 DataBar Всенаправленный. GS1
DataBar Усеченный. GS1 DataBar Двустрочный или GS1 DataBar Двустрочный Всенаправленный г 7
elements(eDist14, widths. 15,4); printfCVi GS1 DataBar (15,4) elements: *);
for (i = 0; i < 8; i++) printf(*%d ". widths(il):
/* для GS1 DataBar Ограниченный 7
elements(eDistLim. widths. 26.7);
printfCVi GS1 DataBar Limited elements:"):
for (i = 0; i < 14; i++) printf("%d". vndthsfi]);
64