Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Emily en 13 Junio 2017, 06:25 am



Título: Conexión de lenguaje en C a Arduino
Publicado por: Emily en 13 Junio 2017, 06:25 am
hola disculpen tengo este codigo :
Código
  1. #include <stdio.h>
  2. #include <conio.h>
  3. #include <stdlib.h>
  4. #include <string.h>
  5. #include <windows.h>
  6.  
  7. void SerialSendByte(HANDLE hPort, char byte); //envía datos enn el puerto
  8. char SerialRecieveByte(HANDLE hPort); //recive datos en el puerto
  9. BOOL CloseSerialPort(HANDLE hPort); //cierra puerto
  10.  
  11. HANDLE OpenSerialPort(char *psPort,//es pecifica en que COM se trbajará
  12.                      DWORD dwBaudRate, // tasa de transferencia
  13.                      BYTE dwByteSize, //especifica el tamaño de la cadena
  14.                      BYTE bParity, // para asegurar si la cadena se envió completa o no
  15.                      BYTE bStopBits, // para la cadena de caracteres
  16.                      DWORD Timeout) // espera cierto tiempo para recibir orden y si no recieb nada despliega un mensaje
  17. {
  18.    HANDLE hPort;
  19.    DCB dcbPort;
  20.    DWORD dwError;
  21.    COMMTIMEOUTS commTimeouts;
  22.    hPort = CreateFile(psPort, //se crea un archivo el cual contiene ciertos parametros para poder funcionar
  23.    GENERIC_READ | GENERIC_WRITE,
  24.    0,
  25.    NULL,
  26.    OPEN_EXISTING,
  27.    0,
  28.    NULL);
  29.    if(hPort == INVALID_HANDLE_VALUE) //se crea un if para saber si se creó el archivo
  30.    {
  31.         dwError = GetLastError();
  32.         system("pause");
  33.         return(hPort);
  34.    }
  35.    FillMemory(&dcbPort/*indica memoria de puerto*/, sizeof(dcbPort)/*indica el tamaño de la memoria designada al puerto*/,0/*indica si esta activo*/); //permite la administracion de la memoria del puerto, para esto es necesario la variable DCBport
  36.    dcbPort.DCBlength = sizeof(dcbPort);
  37.    GetCommState (hPort, &dcbPort); //recoge el puerto, el tamaño y el estado
  38.    dcbPort.BaudRate = dwBaudRate; //atributo del objeto dcb port e indica la tasa de transferencia
  39.    dcbPort.ByteSize = dwByteSize;
  40.    dcbPort.Parity = bParity;
  41.    dcbPort.StopBits = bStopBits;
  42.    if(!SetCommState(hPort, &dcbPort)) //Verificar el estado del puerto
  43.    {
  44.        dwError = GetLastError();
  45.        CloseSerialPort(hPort);
  46.        hPort = INVALID_HANDLE_VALUE;
  47.        return(hPort);
  48.    }
  49.    if(!SetCommTimeouts(hPort, &commTimeouts)) //Verificar el tiempo de espera
  50.    {
  51.        dwError = GetLastError();
  52.        CloseSerialPort(hPort);
  53.        hPort = INVALID_HANDLE_VALUE;
  54.        return(hPort);
  55.    }
  56.    return hPort;
  57. }
  58.  
  59. char SerialReceiveByte(HANDLE hPort)
  60. {
  61.  
  62.   DWORD bytesread;
  63.   DWORD *ptrbytesread = &bytesread;
  64.   char read;
  65.   char *ptrread = &read;
  66.  
  67.   ReadFile(hPort,ptrread,1,ptrbytesread,NULL);
  68.    if (read == 'a')
  69.    {
  70.       printf("\nProceso\n\n");
  71.       printf("aqui %c\n",read );
  72.    }
  73.  
  74.   return (read);
  75.  
  76. }
  77.  
  78. void SerialSendByte(HANDLE hPort, char byte) // permite enviar datos
  79. {
  80.  
  81.     DWORD byteswritten;
  82. DWORD *ptrbyteswritten = &byteswritten;
  83.     char *ptrwrite = &byte;
  84.     WriteFile(hPort,&byte,1,ptrbyteswritten,NULL);
  85.  
  86. }
  87.  
  88.  
  89.  
  90.  
  91. BOOL CloseSerialPort(HANDLE hPort)
  92. {
  93.   BOOL bRes;
  94.   DWORD dwError;
  95.   bRes = CloseHandle(hPort);
  96.   if(!bRes)
  97.   {
  98.     dwError = GetLastError();
  99.   }
  100.   return bRes;
  101. }
  102. int main()
  103. {
  104.   HANDLE hPort;
  105.   char byte;
  106.   char a='a';
  107.   hPort = OpenSerialPort("COM3",CBR_9600,8,NOPARITY,ONESTOPBIT,10000);
  108.   if(hPort == INVALID_HANDLE_VALUE)
  109.   {
  110.      printf("Error al abrir el puerto\n");
  111.      system("pause");
  112.      return 1;
  113.   }
  114.   while(1)
  115.   {    
  116.      SerialSendByte(hPort, a);
  117.      byte = SerialReceiveByte(hPort);
  118.      if (byte == 'a')
  119.           printf("dato %c\n",byte);
  120.   }
  121.  
  122.   CloseSerialPort(hPort);
  123.   system ("pause");
  124.   return 0;
  125. }
me preguntaba como puedo hacer para que este mande un mensaje a arduino y que arduino me muestre el mensaje en su monitor serie

hola a todos
hice este código pero deseo que las horas se manden a arduino y aparezcan en una pantalla lcd

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <conio.h>
  4. #include <windows.h>
  5. void america(int a,int b, int c)
  6. {
  7.        if (a<23) { printf ("Caracas Venezuela: %d:%d:%d\n",a+1,b,c); }
  8.        else      { printf ("Caracas Venezuela: 00:%d:%d",b,c);       }
  9. }
  10. void asia (int a,int b,int c)//10:00 - 00:00
  11. {
  12.     if (a<10) { printf ("Corea del Sur: %d:%d:%d\n",a+14,b,c); }
  13. else if (a==10){ printf ("Corea del Sur: 00:%d:%d\n",b,c);      }
  14.   else        { printf ("Corea del Sur: %d:%d:%d\n",a-10,b,c); }
  15.  
  16. }
  17. void africa (int a,int b, int c)// 17:00 - 00:00
  18. {
  19.     if (a<17) { printf ("Egipto: %d:%d:%d\n",a+7,b,c); }
  20. else if (a==17){ printf ("Egipto: 00:%d:%d\n",b,c);     }
  21.   else        { printf ("Egipto: %d:%d:%d\n",a-17,b,c);}
  22. }
  23. void oceania (int a, int b, int c)// 11:00 - 00:00
  24. {
  25.     if (a<11) { printf ("Sydney: %d:%d:%d\n",a+13,b,c); }
  26. else if (a==11){ printf ("Sydney: 00:%d:%d\n",b,c);      }
  27.   else        { printf ("Sydney: %d:%d:%d\n",a-11,b,c); }
  28. }
  29. void europa (int a, int b, int c)//18:00 - 00:00
  30. {
  31.     if (a<18) { printf ("Londres: %d:%d:%d\n",a+6,b,c);  }
  32. else if (a==18){ printf ("Londres: 00:%d:%d\n",b,c);      }
  33.   else        { printf ("Londres: %d:%d:%d\n",a-18,b,c); }
  34. }
  35. void local (int a, int b, int c)
  36. {
  37.     if (c>59) printf ("%d:%d:0",a,b+1);
  38. else if (b>59) printf ("%d:0:%d",a+1,c);
  39. else if (a>23) printf ("0:%d:%d",b+c);
  40. else printf ("%d:%d:%d",a,b,c+1);
  41.  
  42. }
  43. int main ()
  44. {
  45.      int a,b,c;
  46.      char opc;
  47.      WORD pausa=1000;
  48.       printf ("ingrese los datos\n");
  49.                  printf ("ingrese la hora (24 hrs)\t");    
  50.                  scanf ("%i",&a);
  51.                  printf ("\ningrese los minutos           \t");
  52.                  scanf ("%i",&b);
  53.                  printf ("\ningrese los segundos          \t");
  54.                  scanf ("%i",&c);
  55.                  printf("%d:%d:%d",a,b,c);
  56.                  getch();
  57.                  inicio:
  58.                  system("cls");
  59.                  printf ("\n");
  60.                  local (a,b,c);
  61.                     if (a<24&&b<=59&&c<=59)
  62.                  {
  63.                    printf ("\namerica\t");//  (^u^)/
  64.                    america (a,b,c);
  65.                    printf ("\nasia\t");//     (^u^)/
  66.                    asia (a,b,c);
  67.                    printf ("\nafrica\t");//   (^u^)/
  68.                    africa (a,b,c);
  69.                    printf ("\noceania\t");//  (^u^)/
  70.                    oceania (a,b,c);
  71.                    printf ("\neuropa\t");//   (^u^)/
  72.                    europa (a,b,c);
  73.                    c++;
  74.                  if (c==60) {c=0; b++;}
  75.                  if (b==60) {b=0; a++;}
  76.                  if (a==24) a=0;
  77.                  Sleep(pausa);
  78.                    goto inicio;
  79.                  }
  80.  getch();
  81. }
  82.  
alguien de favor me podría decir el como hacer que aparezcan




· No hagas dos temas sobre el mismo asunto
>aquí las reglas del foro (http://foro.elhacker.net/reglas.htm)
-Engel Lex


Título: Re: Conexión de lenguaje en C a Arduino
Publicado por: engel lex en 13 Junio 2017, 07:16 am
con esa función sendbyte le enviarías via serial al arduino lo que quieras, ya lo que haga el arduino con lo que le mandes depende del codigo en el arduino


Título: Re: Conexión de lenguaje en C a Arduino
Publicado por: MAFUS en 13 Junio 2017, 08:56 am
Aclarando lo que quiere decirte engel lex: tiene que construir el código para el arduino y subírselo.


Título: Re: Conexión de lenguaje en C a Arduino
Publicado por: Emily en 13 Junio 2017, 11:29 am
Muchas por su ayuda
Una duda mas
Y en Arduino cómo sería el código para recibir ese dato que se envía ??


Título: Re: Conexión de lenguaje en C a Arduino
Publicado por: engel lex en 13 Junio 2017, 12:40 pm
depende de como armes todo... pero el mismo IDE de arduino tiene ejemplos de codigos simples, revisalo