parameters: (self, datos, tipo_tag, marca_ro=False)
docstring: Escribe datos de usuario en el tag.
              Los datos de usuario se guardan a partir del PRIMER_BLOQUE_USUARIO.
              El tipo de tag se almacena aparte, y sirve p/clasificar/diferenciar
              tags.
docstring_summary: Escribe datos de usuario en el tag.
              Los datos de usuario se guardan a partir del PRIMER_BLOQUE_USUARIO.
              El tipo de tag se almacena aparte, y sirve p/clasificar/diferenciar
              tags.
docstring_tokens: Escribe datos de usuario en el tag . Los datos de usuario se guardan a partir del PRIMER_BLOQUE_USUARIO . El tipo de tag se almacena aparte y sirve p / clasificar / diferenciar tags .
function: def escribe_datos(self, datos, tipo_tag, marca_ro=False):
          """ Escribe datos de usuario en el tag.
              Los datos de usuario se guardan a partir del PRIMER_BLOQUE_USUARIO.
              El tipo de tag se almacena aparte, y sirve p/clasificar/diferenciar
              tags.
          """
          # Levanto una excepción si la longitud supera a la capacidad del TAG
          if len(datos) > self.MAX_BYTES_DATOS:
              raise TAGError(u'Tamaño excedido para escritura ' + \
                             str(len(datos)) + '/' + str(self.MAX_BYTES_DATOS))
  
          # Grabo el bloque de Tipo de Tag
          self.set_tipo(tipo_tag)
          # Grabo el bloque de información con la long de los datos al final
          # (Debo mantener la compatibilidad)
          # BYTES_POR_BLOQUE - LONG_BYTES_QTY es a partir de donde se ubica
          # la longitud de los datos (los últimos N bytes del bloque)
          bloque_info = self.lee_bloque(self.BLOQUE_INFO)
          # Primero escribo el token, luego obtengo el espacio que hay
          # entre el token y el último byte del bloque, luego escribo la longitud
          # (Debo mantener la compatibilidad entre ICODE 1 e ICODE 2).
          self.escribe_bloque(self.BLOQUE_INFO, self.token_id + \
              bloque_info[self.long_token_id:self.BYTES_POR_BLOQUE-self.LONG_BYTES_QTY]
              + struct.pack(self.PACK_TYPE_QTY, len(datos)))
  
          # Escribo el CRC de los datos
          self.escribe_bloque(self.BLOQUE_CRC, \
                              struct.pack(self.PACK_TYPE_CRC, crc32(datos)))
  
          bloque_actual = self.PRIMER_BLOQUE_USUARIO
  
          # Parto el dato por tamaño de bloque
          for i in range(0, len(datos), self.BYTES_POR_BLOQUE):
              dato_bloque = datos[i:i + self.BYTES_POR_BLOQUE]
              # Agrego \0 como padding para llegar a la longitud de bloque
              dato_bloque = dato_bloque + '\x00' * \
                              (self.BYTES_POR_BLOQUE - len(dato_bloque))
              self.escribe_bloque(bloque_actual, dato_bloque)
              bloque_actual += 1
  
          if marca_ro:
              self.lector.set_read_only(self)
function_tokens: def escribe_datos ( self , datos , tipo_tag , marca_ro = False ) : # Levanto una excepción si la longitud supera a la capacidad del TAG if len ( datos ) > self . MAX_BYTES_DATOS : raise TAGError ( u'Tamaño excedido para escritura '  str ( len ( datos ) ) + '/' + str ( self . MAX_BYTES_DATOS ) ) # Grabo el bloque de Tipo de Tag self . set_tipo ( tipo_tag ) # Grabo el bloque de información con la long de los datos al final # (Debo mantener la compatibilidad) # BYTES_POR_BLOQUE - LONG_BYTES_QTY es a partir de donde se ubica # la longitud de los datos (los últimos N bytes del bloque) bloque_info = self . lee_bloque ( self . BLOQUE_INFO ) # Primero escribo el token, luego obtengo el espacio que hay # entre el token y el último byte del bloque, luego escribo la longitud # (Debo mantener la compatibilidad entre ICODE 1 e ICODE 2). self . escribe_bloque ( self . BLOQUE_INFO , self . token_id + bloque_info [ self . long_token_id : self . BYTES_POR_BLOQUE - self . LONG_BYTES_QTY ] + struct . pack ( self . PACK_TYPE_QTY , len ( datos ) ) ) # Escribo el CRC de los datos self . escribe_bloque ( self . BLOQUE_CRC , struct . pack ( self . PACK_TYPE_CRC , crc32 ( datos ) ) ) bloque_actual = self . PRIMER_BLOQUE_USUARIO # Parto el dato por tamaño de bloque for i in range ( 0 , len ( datos ) , self . BYTES_POR_BLOQUE ) : dato_bloque = datos [ i : i + self . BYTES_POR_BLOQUE ] # Agrego \0 como padding para llegar a la longitud de bloque dato_bloque = dato_bloque + '\x00' * ( self . BYTES_POR_BLOQUE - len ( dato_bloque ) ) self . escribe_bloque ( bloque_actual , dato_bloque ) bloque_actual += 1 if marca_ro : self . lector . set_read_only ( self )