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.
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.
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.
Ú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.
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.