Pular para o conteúdo principal

memo (memória retentiva)

memo

Função global utilizada para tratar dados com a memória retentiva interna. São 2 kB de memória disponibilizados para utilização no mhoJS. Os dados são salvos em conjuntos de bytes (8 bits).

Tipos de dados definidas:

  • 8: 8 bits (de 0 a 255);
  • 32: inteiros (4 bytes / 32 bits de −2147483648 até 2147483647);
  • u32: inteiros positivos (4 bytes / 32 bits de 0 até 4294967295);
  • d: números com precisão (8 bytes / 64 bits de -7.2E+75 a 7.2E+75);

memo.writeData

Salva um valor na memória retentiva.

memo.writeData(address, value, datatype='32');

Dados:

  • address: Posição de memória (de 0 a 2048 bytes);
  • value: Valor a ser salvo;
  • datatype: Tipo de dado definido (por padrão, quando não especificado é 32);

Resposta: true se o dado foi salvo com sucesso ou false se o comando não estiver disponível.

Exemplo 1

Salvar um valor inteiro (32 bits) na memória retentiva.

Atenção

Como a memória atual foi salva em 32 bits (4 bytes), o próximo endereço de memória disponível a ser utilizado deve estar deslocado em 4 bytes. Nesse exemplo o dado salvo tem 32 bits e será salvo na memória 0, por consequência essa memória terá dados salvos nas posições 0, 1, 2, 3.

memo.writeData(0, 12000);

Resposta: true se o dado foi salvo com sucesso ou false se falhou.

Exemplo 2

Salvar um valor de precisão (64 bits) na memória retentiva.

Atenção

Como a memória atual foi salva em 64 bits (8 bytes), o próximo endereço de memória disponível a ser utilizado deve estar deslocado em 4 bytes. Nesse exemplo o dado salvo tem 64 bits e será salvo na memória 4, por consequência essa memória terá dados salvos nas posições 4, 5, 6, 7, 8, 9, 10, 11.

memo.writeData(4, 555.123, 'd');

Resposta: true se o dado foi salvo com sucesso ou false se falhou.


memo.readData

Lê um valor na memória retentiva.

memo.readData(address, datatype='32');

Dados:

  • address: Posição de memória (de 0 a 2048 bytes);
  • datatype: Tipo de dado definido (por padrão, quando não especificado é 32);

Resposta: valor salvo na memória.

Exemplo 1

Ler um valor inteiro (32 bits) na memória retentiva.

memo.readData(0);

Resposta: 12000 (conforme exemplo anterior).

Exemplo 2

Ler um valor de precisão (64 bits) na memória retentiva.

memo.readData(4, 'd');

Resposta: 555.123 (conforme exemplo anterior).


memo.writeBit

Escreve um valor binário em um bit na memória retentiva.

memo.writeBit(address, bit, value);

Dados:

  • address: Posição de memória (de 0 a 2048 bytes);
  • bit: Posição do bit (0 a 7, sendo 0 o menos significativo);
  • value: Valor a ser escrito (true/false).

Resposta: true ou erro.

Exemplo

Escrever true no bit0 da posição de memória 1.

memo.writeBit(1, 0, true);

Resposta: true.


memo.readBit

Lê um valor binário em um bit na memória retentiva.

memo.readBit(address, bit);

Dados:

  • address: Posição de memória (de 0 a 2048 bytes);
  • bit: Posição do bit (0 a 7, sendo 0 o menos significativo);

Resposta: true/false.

Exemplo

Escrever true no bit0 da posição de memória 1.

memo.readBit(1, 0);

Resposta: true conforme exemplo anterior.


memo.clear

Limpa os bytes da memória (apenas a faixa reservada ao mhoJS).

memo.clear(init = 0, final = 2048);

Resposta: true se for limpo com sucesso e error se o valor setado for fora do range.

Exemplo 1

Limpar toda a memória retentiva reservada ao mhoJS. Como o desejo é limpar toda a memória, não é necessário passar nenhum parâmetro.

memo.clear();

Resposta: true.

Exemplo 2

Limpar os bytes de endereço de memória do 0 ao 16;

memo.clear(0, 16);

Resposta: true.



memo.setTelemetrySize

Seta o tamanho (em bits) de alocação de memória retentiva para os dados de telemetria customizados (CT). Caso não declarado, o valor padrão é 64 bits.

Utilidade

Útil para definir qual o escopo de memória para salvar os dados em telemetria em casos de desconexões do servidor. Por padrão a memória vem setada para 64 bits, então se por exemplo a utilização máxima for 32 bits, a memória pode ser setada em 32 bits para que consiga guardar mais dados.

atenção

Essa função deve ser chamada na inicialização do programa, antes da utilização de outras funções de telemetria. Declare ela no início do código.

Valores possíveis: 1, 32, 64 bits.

memo.setTelemetrySize(size);

Resposta: true se for setado com sucesso e error se o valor setado for fora do range.

Exemplo

Setar tamanho de memória para 32 bits de alocação de dados.

memo.setTelemetrySize(32);

Resposta: true.

Essa função deve ser chamada quando precisamos otimizar a memória retentiva de telemetria ou aumentar a alocação para um valor maior. Por padrão a memória vem setada para alocação de 64 bits, então só serão alocados dados de até 32 bits.