Сгенерируйте код Datamatrix GS1 в Python, используя любую подходящую библиотеку/модуль. Включите ведущий символ FNC1Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Сгенерируйте код Datamatrix GS1 в Python, используя любую подходящую библиотеку/модуль. Включите ведущий символ FNC1

Сообщение Anonymous »

Задача состоит в том, чтобы генерировать GS1 код Datamatrix (позже в тексте - GS1 DM) в Python с использованием любой подходящей библиотеки/модуля. Проблема заключается в том, как включить ведущий функциональный символ FNC1 при генерации кода DM.
GS1 DM широко используется в области сериализации и трассы и трассировки, например, Для лекарственных средств Serialization.
GS1 Datamatrix - это обычная данных Datamatrix (позже в Text - DM), но с ведущим символом FNC1, которая позволяет устройству сканирования идентифицировать, что это Datamatrix GS1, а не обычная Datamatrix.

Код: Выделить всё

    01048123231123452172KAVEK5HqOQW{GS}91KZF0{GS}92endxMQYZAymmN9rTCsWwm4gcU1oihAn726B86OLBnh0=
01048702231123452179LimKz7sKYyF{GS}91KZF0{GS}92VllFTqxoBYKxfjjd/uLpXe4Sbm3+3foXpen0DLGIgWQ=
< /code>
Эти примеры являются уникальными идентификаторами отдельных медицины + так называемых криптово-ключа и крипто-кода. Такие идентификаторы используются в сериализации в таких странах СНГ, как Казахстан, Узбекистан и Беларусь, Россия. {Gs1} - это символ сепаратора группы с ASCII 29 кодом. Это не имеет значения для самой задачи, просто для того, чтобы дать вам какой -то контекст. Код, чтобы «преобразовать» этот код в GS1 DataMatrix, когда я генерирую DM, используя упомянутую библиотеку Python. < /p>
** мои выводы и вопросы до сих пор ** (пожалуйста, исправьте мой, если я неправ): < /p>

 Символ FNC1 не включен в один коды ASCI или ASCI. ASCII 256 означает, как нет такой специфической кодирования). Насколько я понимаю, он не включен в какую -либо существующую кодирование, поскольку FNC1: a) не имеет графического представления, и B) не предназначено для того, чтобы быть частью какого -либо кодирования, поскольку это функциональный «символ», который является частью самого стандарта DM GS1. Что бы это ни значило. Но, насколько я понимаю, это не так, поскольку FNC1 не включен в какую -либо таблицу кодирования по причинам, которые я дал в предыдущем пункте. Например. Для UTF-8 или других кодировки символом с кодом 232 является «è» или какой-то другой символ, который определенно не является FNC1, поскольку FNC1 не может иметь какого-либо графического представления. 0104607045191708211NSBA931BA63A \ F91EE07 \ F92OOQOEKYX9KUYMJ2ZUDHHFVAM5IP2M/R3BO5+JE4QE4 = 
, где \ F включает в себя GS -Symbol Symbor, и FNC1 является ведущим, а затем FNC1 включает в себя FNC1, а FNC1 -ведущий. Форматы кода с использованием последовательностей побега, например, в форме {fnc1}. Но это не отвечает на вопрос о том, как включить FNC1 в DM, когда я создаю его сам по коду Python. Некоторые инструменты включают FNC1 в качестве ведущего символа автоматически при выборе формата Datamatrix GS1. Библиотека должна включать FNC1 в момент кода DM «рендеринг» / рисунок. Но я не нашел ни одной библиотеки для Python, которая генерирует точно код DM GS1, но только код DM. < /Li>
Существующие библиотеки для генерации DataMatrix для Python в основном очень задокументированы, особенно на деталях использования или примерах. Или даже не иметь никакой документации. Но, насколько я понимаю, FNC1 как ведущий символ должен быть пропущен сканером и служит исключительно для идентификации формата DM GS1. Поэтому мне интересно, является ли это неправильной обработкой GS1 DM на стороне мобильного приложения или неправильного здания GS1 DM производителями (гораздо менее вероятно). Или также, может быть, я неправильно понимаю проблему. from PIL import Image
from pylibdmtx.pylibdmtx import encode
from datetime import datetime
import os

# FNC1 = chr(232)
# FNC1 = FNC1.encode("utf-8")
# FNC1 = bytes.fromhex("E8").decode('utf-8')
GS1 = chr(29)

DMs = []

class Dm:

def __init__(self, gtin, sn, key, code):
self.gtin = gtin
self.sn = sn
self.key = key
self.code = code
self.dmImg = self.generateDmImg()

def strToUTF8(self, str):
return str.encode('utf_8')

def __str__(self):
return self.getDmContent()

def getSgtin(self):
return "01" + self.gtin + "21" + self.sn

def getDmContent(self):
str = "01" + self.gtin + "21" + self.sn + GS1 + "91" + self.key + GS1 + "92" + self.code
# str = FNC1 + "01" + self.gtin + "21" + self.sn + GS1 + "91" + self.key + GS1 + "92" + self.code

return str

def generateDmImg(self):
dmContent = self.getDmContent()
encoded = encode(dmContent)
dmImg = Image.frombytes('RGB', (encoded.width, encoded.height), encoded.pixels)
return dmImg

def saveDmImgToFile(self, filename):
self.dmImg.save(filename)

def read_file(filename):

# read text strings from the file
with open(filename) as f:
text_strings = f.readlines()

return text_strings

def getListOfDMs(text_strings):

DMs = []

for text in text_strings:

if (len(text.strip()) > 0):
text_split = text.split(";")
dm = Dm(text_split[0].strip(), text_split[1].strip(), text_split[2].strip(), text_split[3].strip())
DMs.append(dm)

return DMs

# ============ MAIN PROGRAM =================

# res = read_file("src_files/source1.csv")
res = read_file("source1.csv")
DMs = getListOfDMs(res)

# for dm in DMs:
# print(dm)

# generate a PNG image for each text string
i = 1
for dm in DMs:
now = datetime.now()
timestamp = now.strftime("%d_%m_%Y_%H_%M_%S")
dm.saveDmImgToFile(os.path.join("results", dm.sn + "_" + timestamp + "_" + str(i) + ".png"))
i += 1

# dm = DMs[0]
# now = datetime.now()
# timestamp = now.strftime("%d_%m_%Y_%H_%M_%S")
# dm.saveDmImgToFile(os.path.join("results", dm.sn + "_" + timestamp + "_" + str(i) + ".png"))
< /code>
Вот текстовый пример файла Source1.csv (4 столбцы: Gtin, SN, Crypto-Key, Crypto-Code): < /p>
04812323112345;72KAVEK5HqOQW;KZF0;endxMQYZAymmN9rTCsWwm4gcU1oihAn726B86OLBnh0=
04812323112345;79LimKz7sKYyF;KZF0;VllFTqxoBYKxfjjd/uLpXe4Sbm3+3foXpen0DLGIgWQ=
04812323112345;7GaGJ1jCrfxID;KZF0;c2l2SH8LOYmbZK95S8ENwhCQXjmwKWd5BgfA+Pwv6nE=
04812323112345;7HKrat9IGg2wZ;KZF0;cmt5NuKP23flUwDyJolFj7NMVR+K7vALjEO3ktFToGY=


Подробнее здесь: https://stackoverflow.com/questions/754 ... ule-includ
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Код Java Zxing Datamatrix не сканирует Datamatrix
    Anonymous » » в форуме JAVA
    0 Ответы
    22 Просмотры
    Последнее сообщение Anonymous
  • Распокация штрих -кода GS1 - кажется, что нет отдельного характера
    Anonymous » » в форуме C#
    0 Ответы
    8 Просмотры
    Последнее сообщение Anonymous
  • Декодирование штрих-кода GS1-128 с использованием сканеров Unitech (например, EA630)
    Anonymous » » в форуме Android
    0 Ответы
    10 Просмотры
    Последнее сообщение Anonymous
  • Декодирование штрих-кода GS1-128 с использованием сканеров Unitech (например, EA630)
    Anonymous » » в форуме Android
    0 Ответы
    6 Просмотры
    Последнее сообщение Anonymous
  • Печать DataMatrix дает пустую страницу
    Anonymous » » в форуме Javascript
    0 Ответы
    20 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»