Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Atualização para funcionar no Debian 10 / Raspberry #3

Open
fabriciogcbh opened this issue Jul 15, 2021 · 3 comments
Open

Atualização para funcionar no Debian 10 / Raspberry #3

fabriciogcbh opened this issue Jul 15, 2021 · 3 comments

Comments

@fabriciogcbh
Copy link

  • Erro ao executar.

Não entendo de C para saber o motivo, o que eu entendi, é que a variável "J" em "results_to_human" começava com 0, depois "J" somava "+1", dentro do "for", "J" passava a ter um valor aleatório com 5 casas decimais, sem ser atribuido a nada, que era inválido como índice de "rawvalues[j]" e ocorria erro. (falha de segmentação)
Solução? Talvez o correto seria substituir "sprintf" por outra estrutura, mas esta solução de atribuir "sprintf" a uma variável "nula", resolveu. Deixei assim, futuramente, se alguém animar de ir mais a fundo no erro.

char buf[2], *endptr;

char buf[2], *endptr;

Linha 167 e linha 227
De:
char buf[2], *endptr;
Para:
char nil, buf[2], *endptr;

sprintf (buf, "0x%02x%02x", (unsigned char)rawvalues[j],

sprintf (buf, "0x%02x%02x", (unsigned char)rawvalues[j],

Linha 208 e linha 244
de:
sprintf (buf, "0x%02x%02x", (unsigned char)rawvalues[j],
Para:
nil = sprintf (buf, "0x%02x%02x", (unsigned char)rawvalues[j],

  • Adicional.

Fiz um adicional para facilitar o propósito do uso que eu tenho, colocar uma saída formatada para facilitar a leitura dos dados,(criação de uma web simples),
Adicionar o código abaixo na linha 295

// Pega data e hora do sistema
time_t t = time(0);
struct tm tm = *localtime(&t);

// Valores impressos como string para formatação, mesma sequência de exibição
printf ("%s:%3.2f:%3.2f:%3.2f:%3.2f:%3.2f:%3.2f:%d:%d:%d:%d:%d:%d:%d:%d:", "String", *ordered_values[1], *ordered_values[2], *ordered_values[3], *ordered_values[4], *ordered_values[5], *ordered_values[6], *ordered_bits[0], *ordered_bits[1], *ordered_bits[2], *ordered_bits[3], *ordered_bits[4], *ordered_bits[5], *ordered_bits[6], *ordered_bits[7]);

// Adiciona Data e Hora no final da string acima, adiciona na mesma linha.
printf("%d-%d-%d_%d-%d-%d\n", tm.tm_year + 1900, tm.tm_mon + 1, tm.tm_mday, tm.tm_hour, tm.tm_min, tm.tm_sec);

Formato desta String
String:128.00:112.00:1.00:60.00:100.00:43.00:0:0:0:1:0:0:0:0:2021-7-15_14-17-42
String:TensaoEntrada:TensaoSaida:PotenciaSaida:FrequenciaSaida:PorcentagemBateria:Temperatura:Beep Ligado:Shutdown Ativo:Teste Ativo:UpsOK:Boost:ByPass:Bateria Baixa:Bateria Ligada:YYYY-MM-DD_HH-MM-SS

  • Outro detalhe.

Outro detalhe que alterei, foi remover o -O2 (otimização de compilação), com a otimização, não havia retorno na saída da aplicação.
Ficou assim: gcc nobreakSMS.c -o nobreakSMS

Testado em meu NobreakSMS (:M3 SENOIDAL 2.0') Modelo: Manager III Senoidal , SM1400BiFX
OS: Debian 10.8 armv7l (Raspberry)

@petersenna
Copy link
Owner

Oi @fabriciogcbh muito obrigado! Se você enviar um merge request com as suas alterações eu verifico o código para você. Abraço!

@fabriciogcbh
Copy link
Author

Fiz a alteração no código pela web mesmo. Confere se validou pra você.
Não consegui fazer upload do binario "armv7l" pela web, so fazendo um push. Como não sou familiarizado com git, preferi não arriscar trabalhar no repositório, para não apagar algo. Caso queira postar o binario, me avise que disponibilizo em algum local.

@petersenna
Copy link
Owner

@fabriciogcbh As alterações não estão disponíveis para eu ver. Minha recomendação é a seguinte:
1 - Faça as alterações no seu fork (https://github.com/fabriciogcbh/nobreakSMS) e veja se elas aparecem na interface web do github.
2 - Faça um pull request das suas alterações.

Aí eu vou poder ver suas alterações e te ajudar com melhorar o código. Abraço!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants