π
<-
Chat plein-écran
[^]

Ndless / nspireio UART Chat

C, C++, ASM...

Re: Ndless / nspireio UART Chat

Message non lude critor » 15 Oct 2017, 13:26

Adriweb a écrit:et " "if(*inptr!=oldc) {" makes no sense "

Ben c'est un workaround temporaire pour ignorer les caractères successifs identiques. Sinon ça floode l'écran en une fraction de seconde et je n'ai pas le temps de lire le bootlog et donc pas la possibilité de comprendre le problème.

Pour le reste ok, dès que j'ai le temps je vais donc me faire ma propre fonction mygetchar() qui n'accusera pas réception avec putchar(), et on verra si ça permet de corriger le problème sans casser autre chose.
Image
Avatar de l’utilisateur
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Prochain niv.: 41.8%
 
Messages: 41465
Images: 14479
Inscription: 25 Oct 2008, 00:00
Localisation: Montpellier
Genre: Homme
Calculatrice(s):
MyCalcs profile
YouTube: critor3000
Twitter/X: critor2000
GitHub: critor

Re: Ndless / nspireio UART Chat

Message non lude Adriweb » 15 Oct 2017, 14:32

Je vois que le problème originel a été résolu via compu sur github : https://github.com/compujuckel/nspire-i ... -336710873 :)
Image

MyCalcs: Help the community's calculator documentations by filling out your calculators info!
MyCalcs: Aidez la communauté à documenter les calculatrices en donnant des infos sur vos calculatrices !
Inspired-Lua.org: All about TI-Nspire Lua programming (tutorials, wiki/docs...)
Avatar de l’utilisateur
AdriwebAdmin
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Prochain niv.: 80.1%
 
Messages: 14605
Images: 1216
Inscription: 01 Juin 2007, 00:00
Localisation: France
Genre: Homme
Calculatrice(s):
MyCalcs profile
Twitter/X: adriweb
GitHub: adriweb

Re: Ndless / nspireio UART Chat

Message non lude TheStaticTurtle » 15 Oct 2017, 14:43

Ok problemme regler (https://github.com/compujuckel/nspire-io/issues/6) mais maintenant quand j'envoie un message ver s la TI elle se bloque jusqu'a l'arrive d'un autre message quelqu'un a une idée pourquoi. Mon code maintenant:
Code: Tout sélectionner
#include <os.h>
//#include <nspireio/nspireio.h>
#include <nspireio/uart.hpp>
#include <nspireio/console.hpp>

int key_already_pressed = 0;
char oldinput[100] = {0};
char voidlist[100] = {0};
int dispInput = 0;

char* uart_getsn_mdf(char* str, int num)
{
   int i;
   for(i = 0; i < num-1; i++)
   {
      char c = uart_getchar();
      str[i] = c;
      if(c == '\b')
      {
         //uart_puts(" \b");
         i -= 2;
      }
      else if(c == '\r')
      {
         str[i] = 0;
         //uart_putchar('\n');
         return str;
      }
   }
   str[num] = 0;
   return str;
}

int main(void)
{
   assert_ndless_rev(874);
   //clrscr();
   nio_console csl;
   nio_init(&csl,NIO_MAX_COLS,NIO_MAX_ROWS,0,0,NIO_COLOR_WHITE,NIO_COLOR_BLACK,TRUE);
   nio_set_default(&csl);
   nio_color(&csl,NIO_COLOR_BLACK,NIO_COLOR_WHITE);
   nio_printf("Nspire UART Chat by Samy. Compiled the %s At %s\n",__DATE__,__TIME__);
   nio_color(&csl,NIO_COLOR_WHITE,NIO_COLOR_BLACK);
   nio_puts("Press any ESC to exit and CTRL to send msg...\n");
   while(!isKeyPressed(KEY_NSPIRE_ESC)){
      if(isKeyPressed(KEY_NSPIRE_CTRL) && !key_already_pressed){
         nio_printf(">");
         char input2[100] = {0};
         nio_getsn(input2,100);
         uart_printf("\r\n");
         uart_printf(input2);
         key_already_pressed = 1;
      }
      if(!any_key_pressed())
         key_already_pressed = 0;
      if(uart_ready()) {
         char input[100] = {0};
         uart_getsn_mdf(input,100);
         nio_puts(input);
      }
   }
   nio_puts("Tests finished.");
   nio_free(&csl);   
   return 0;
}



et donc la partie uart de la lib:
Code: Tout sélectionner
BOOL uart_ready(void)
{
   volatile unsigned *line_status_reg = IO(0x90020014,0x90020018);
   return is_classic ? *line_status_reg & 0b1 : !(*line_status_reg & 0b10000);
   //return is_classic ? *line_status_reg & 0b1 : !(*line_status_reg & 0b10);
}

char uart_getchar(void)
{
   volatile unsigned *recv_buffer_reg = (unsigned*)0x90020000;
   while(!uart_ready())
      idle();
   char tmp = *recv_buffer_reg;
   uart_putchar(tmp);
   return tmp;
}

char* uart_getsn(char* str, int num)
{
   int i;
   for(i = 0; i < num-1; i++)
   {
      char c = uart_getchar();
      str[i] = c;
      if(c == '\b')
      {
         uart_puts(" \b");
         i -= 2;
      }
      else if(c == '\r')
      {
         str[i] = 0;
         uart_putchar('\n');
         return str;
      }
   }
   str[num] = 0;
   return str;
}

char* uart_gets(char* str)
{
   return uart_getsn(str,50);
}

char uart_putchar(char character)
{
   volatile unsigned *line_status_reg = IO(0x90020014,0x90020018);
   volatile unsigned *xmit_holding_reg = (unsigned*)0x90020000;
   if(is_classic)
   {
      while(!(*line_status_reg & 0b100000)) // wait for empty xmit holding reg
         idle();
   }
   else
   {
      while(!(*line_status_reg & 0b10000000))
         idle();
   }
   *xmit_holding_reg = character;
    return character;
}

int uart_puts(const char *str)
{
   while(*str) {
      uart_putchar(*str++);
   }
    return 1;
}

void uart_printf(char *format, ...)
{
   char buf[256];
   memset(buf,'\0',256);
   va_list arglist;
   va_start(arglist,format);
   vsprintf(buf,format,arglist);
   uart_puts(buf);
   va_end(arglist);
}
Avatar de l’utilisateur
TheStaticTurtle
Niveau 4: MC (Membre Confirmé)
Niveau 4: MC (Membre Confirmé)
Prochain niv.: 8%
 
Messages: 16
Inscription: 01 Oct 2016, 11:47
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: 1ere année DUT Informatique
GitHub: TurtleForGaming

Re: Ndless / nspireio UART Chat

Message non lude critor » 15 Oct 2017, 14:56

Je confirme que l'appel à uart_getchar est censé être bloquant en l'absence de données :
Code: Tout sélectionner
char uart_getchar(void)
{
   volatile unsigned *recv_buffer_reg = (unsigned*)0x90020000;
   while(!uart_ready())
      idle();
   char tmp = *recv_buffer_reg;
   uart_putchar(tmp);
   return tmp;
}
Image
Avatar de l’utilisateur
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Prochain niv.: 41.8%
 
Messages: 41465
Images: 14479
Inscription: 25 Oct 2008, 00:00
Localisation: Montpellier
Genre: Homme
Calculatrice(s):
MyCalcs profile
YouTube: critor3000
Twitter/X: critor2000
GitHub: critor

Re: Ndless / nspireio UART Chat

Message non lude TheStaticTurtle » 15 Oct 2017, 19:03

Ok probleme resolut j'ai modifier la lib pour que sa donne sa:
Code: Tout sélectionner
char uart_getchar(void)
{
   volatile unsigned *recv_buffer_reg = (unsigned*)0x90020000;
   volatile unsigned *line_status_reg = IO(0x90020014,0x90020018);
   bool uartready = is_classic ? *line_status_reg & 0b1 : !(*line_status_reg & 0b10000);
   if(!uartready)
    {
      idle();
   } else {
      char tmp = *recv_buffer_reg;
      //uart_putchar(tmp);
      return tmp;
   }
}

Et en enlevant le fait que les Warning donnes des erreur de compilation et c'est bon cela fonctione.
Avatar de l’utilisateur
TheStaticTurtle
Niveau 4: MC (Membre Confirmé)
Niveau 4: MC (Membre Confirmé)
Prochain niv.: 8%
 
Messages: 16
Inscription: 01 Oct 2016, 11:47
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: 1ere année DUT Informatique
GitHub: TurtleForGaming

Précédente

Retourner vers Native: Ndless, Linux, ...

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 4 invités

-
Rechercher
-
Social TI-Planet
-
Sujets à la une
Comparaisons des meilleurs prix pour acheter sa calculatrice !
Aidez la communauté à documenter les révisions matérielles en listant vos calculatrices graphiques !
Phi NumWorks jailbreak
123
-
Faire un don / Premium
Pour plus de concours, de lots, de tests, nous aider à payer le serveur et les domaines...
Faire un don
Découvrez les avantages d'un compte donateur !
JoinRejoignez the donors and/or premium!les donateurs et/ou premium !


Partenaires et pub
Notre partenaire Jarrety Calculatrices à acheter chez Calcuso
-
Stats.
1028 utilisateurs:
>1006 invités
>17 membres
>5 robots
Record simultané (sur 6 mois):
6892 utilisateurs (le 07/06/2017)
-
Autres sites intéressants
Texas Instruments Education
Global | France
 (English / Français)
Banque de programmes TI
ticalc.org
 (English)
La communauté TI-82
tout82.free.fr
 (Français)