Advertisement
sandro1234

Untitled

Jun 26th, 2015
211
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 8.11 KB | None | 0 0
  1. #include <stdlib.h>
  2. #include <windows.h>
  3. #include <stdio.h>
  4. #include <conio.h>
  5. #include <bits/stdc++.h>
  6. #include <stdlib.h>     /* srand, rand */
  7. #include <time.h>
  8. #include "neuron class.h"
  9. #include "adv_neuron.h"
  10. using namespace std;
  11. int hextodec(char c)
  12. {
  13.     switch(c)
  14.     {
  15.     case '0':
  16.     {
  17.         return 0;
  18.     }
  19.     case '1':
  20.     {
  21.         return 1;
  22.     }
  23.     case '2':
  24.     {
  25.         return 2;
  26.     }
  27.     case '3':
  28.     {
  29.         return 3;
  30.     }
  31.     case '4':
  32.     {
  33.         return 4;
  34.     }
  35.     case '5':
  36.     {
  37.         return 5;
  38.     }
  39.     case '6':
  40.     {
  41.         return 6;
  42.     }
  43.     case '7':
  44.     {
  45.         return 7;
  46.     }
  47.     case '8':
  48.     {
  49.         return 8;
  50.     }
  51.     case '9':
  52.     {
  53.         return 9;
  54.     }
  55.     case 'A':
  56.     {
  57.         return 10;
  58.     }
  59.     case 'B':
  60.     {
  61.         return 11;
  62.     }
  63.     case 'C':
  64.     {
  65.         return 12;
  66.     }
  67.     case 'D':
  68.     {
  69.         return 13;
  70.     }
  71.     case 'E':
  72.     {
  73.         return 14;
  74.     }
  75.     case 'F':
  76.     {
  77.         return 15;
  78.     }
  79.     }
  80. }
  81. int main(int argc, char *argv[])
  82. {
  83.     int n=0;
  84.     DCB dcb= {0};
  85.     HANDLE hCom;
  86.     BOOL fSuccess;
  87.     char *pcCommPort = "COM3";
  88.     char szBuff[40]= {0};
  89.     char otherBuff[40]= {"300<CR>"};
  90.     DWORD dwBytesRead=0;
  91.     DWORD dwBytesWrite=0;
  92.     /***************************************CommTimeouts******************************************/
  93.     COMMTIMEOUTS timeouts= {0};
  94.     timeouts.ReadIntervalTimeout=50;
  95.     timeouts.ReadTotalTimeoutConstant=50;
  96.     timeouts.ReadTotalTimeoutMultiplier=10;
  97.     timeouts.WriteTotalTimeoutConstant=50;
  98.     timeouts.WriteTotalTimeoutMultiplier=10;
  99.  
  100.  
  101.  
  102.  
  103.     /*******************************************Handle*******************************************/
  104.     hCom = CreateFile( pcCommPort,
  105.                        GENERIC_READ | GENERIC_WRITE,
  106.                        FILE_SHARE_READ,    // must be opened with exclusive-access
  107.                        NULL, // no security attributes
  108.                        OPEN_EXISTING, // must use OPEN_EXISTING
  109.                        FILE_ATTRIBUTE_NORMAL,    // not overlapped I/O
  110.                        NULL  // hTemplate must be NULL for comm devices
  111.                      );
  112.  
  113.     /***************************************SET*UP*COM*PORT**************************************/
  114.     if (hCom == INVALID_HANDLE_VALUE)
  115.     {
  116.         printf ("CreateFile failed with error %d.\n", GetLastError());
  117.         return (1);
  118.     }
  119.  
  120.     if(!SetCommTimeouts(hCom, &timeouts))
  121.     {
  122.         /*Well, then an error occurred*/
  123.     }
  124.  
  125.     fSuccess = GetCommState(hCom, &dcb);
  126.  
  127.     if (!fSuccess)
  128.     {
  129.         /*More Error Handling*/
  130.         printf ("GetCommState failed with error %d.\n", GetLastError());
  131.         return (2);
  132.     }
  133.  
  134.  
  135.     dcb.BaudRate = 115200;     // set the baud rate
  136.     dcb.ByteSize = 8;             // data size, xmit, and rcv
  137.     dcb.Parity = NOPARITY;        // no parity bit
  138.     dcb.StopBits = ONESTOPBIT;    // one stop bit
  139.     fSuccess = SetCommState(hCom, &dcb);
  140.  
  141.     if (!fSuccess)
  142.     {
  143.         printf ("SetCommState failed. Error: %d.\n", GetLastError());
  144.         return (3);
  145.     }
  146.  
  147.     printf ("Serial port %s successfully configured.\n", pcCommPort);
  148. //  return (0);
  149.  
  150.     /*************************************Reading************************************************/
  151.     srand (time(NULL));
  152.     int a[10],k=0,p,p2,c[10],zg[10],mx1,j1,pp[4]={0},i1,p3,r,p4,p5,p6,i,j,s[10],mx;
  153.     float w[6][3]={0};
  154.     advanced_neuron advn[9];
  155.     queue<int> buf[2];
  156.     int neuron_number=8,input_number=9;
  157.     p=0;
  158.     char cc;
  159.     neuron neurons[10];
  160.   //  for(i=0; i<neuron_number; i++)
  161.     //    for(j=0; j<20; j++)buf[i].push(0);cout<<"debilo";
  162.     for(i=0; i<neuron_number; i++)
  163.     {
  164.         for(j=0; j<input_number; j++)
  165.             neurons[i].init_inp(&a[j]);
  166.         for(j=0; j<neuron_number; j++)
  167.             if(i!=j)neurons[i].init_con(&neurons[j].ss,&neurons[j].c,neurons[j].w);
  168.         neurons[i].init();
  169.     }
  170.     for(i=0; i<2; i++)
  171.     {
  172.         for(j=0; j<4; j++)
  173.             advn[i].init_inp(&neurons[j].p);
  174.         for(j=0; j<2; j++)
  175.             if(i!=j)advn[i].init_lat(&advn[j].ss);
  176.         advn[i].init();
  177.     }
  178.  
  179.     while(1)
  180.     {
  181.         if(GetAsyncKeyState(VK_UP))
  182.         {
  183.             for(i=0; i<9; i++)
  184.             {
  185.                 if(neurons[i].e==0) neurons[i].e=1; else neurons[i].e=0;
  186.             }
  187.         }
  188.  
  189.  
  190.         if(ReadFile(hCom, szBuff, 39, &dwBytesRead, NULL))
  191.         {
  192.             int j=0;
  193.             for(j=0; j<dwBytesRead; j++)
  194.             {
  195.                 if(k==16)
  196.                 {
  197.                     if(kbhit())
  198.                     {
  199.                         cc=getch();
  200.                     if(cc=='1')
  201.                         advn[0].learn();
  202.                     if(cc=='2')
  203.                         advn[1].learn();
  204.                     if(cc=='3')
  205.                         advn[2].learn();
  206.                     if(cc=='4')
  207.                         advn[3].learn();
  208.                     if(cc=='5')
  209.                         advn[4].learn();
  210.                     if(cc=='6')
  211.                         advn[5].learn();
  212.                     if(cc=='7')
  213.                         advn[6].learn();
  214.                     if(cc=='8')
  215.                         advn[7].learn();
  216.                     if(cc=='9')
  217.                         advn[8].learn();
  218.                     }
  219.                     system("cls");
  220.                     p++;
  221.                     cout<<p<<endl;
  222.                     a[0]=a[0];
  223.                     a[1]=a[1];
  224.                     a[2]=a[2];
  225.                     a[3]=max(0,a[0]-a[1]);
  226.                     a[4]=max(0,a[0]-a[2]);
  227.                     a[5]=max(0,a[1]-a[0]);
  228.                     a[6]=max(0,a[1]-a[2]);
  229.                     a[7]=max(0,a[2]-a[0]);
  230.                     a[8]=max(0,a[2]-a[1]);
  231.                     for(i=0; i<input_number; i++)
  232.                         cout<<a[i]<<" ";
  233.                     cout<<endl;
  234.  
  235.                     for(i=0; i<neuron_number; i++)
  236.                         neurons[i].work_int();
  237.                     for(i=0; i<neuron_number; i++)
  238.                         neurons[i].work_out();
  239.                     for(i=0; i<2; i++)
  240.                         advn[i].work_int();
  241.                     for(i=0; i<2; i++)
  242.                         advn[i].work_out();
  243.  
  244.                     for(int i=0; i<neuron_number; i++)
  245.                     {
  246.                         cout<<neurons[i].n<<" ";
  247.                         for(int j1=0; j1<neurons[i].n; j1++)
  248.                             printf("%f\t",neurons[i].w[j1]);
  249.                         int t=neurons[i].zg;
  250.                         printf("%d \t %d \t %d \t %d \t %d \n\r",neurons[i].zg,neurons[i].c,neurons[i].s,neurons[i].ss,neurons[i].p);
  251.  
  252.                     }
  253.                     cout<<endl;
  254.                     for(int i=0; i<2; i++)
  255.                     {
  256.                         cout<<advn[i].n<<" ";
  257.                         for(int j1=0; j1<advn[i].n; j1++)
  258.                             printf("%f\t",advn[i].w[j1]);
  259.                         int t=advn[i].zg;
  260.                         printf("%d \t %d \t %d \t %d \t %d \n\r",advn[i].zg,advn[i].c,advn[i].s,advn[i].ss,advn[i].p);
  261.  
  262.                     }
  263.                 }
  264.                 if(szBuff[j]=='#')
  265.                 {
  266.                     a[0]=0;
  267.                     a[1]=0;
  268.                     a[2]=0;
  269.                     a[3]=0;
  270.                     k=1;
  271.                     continue;
  272.                 }
  273.                 else if(k==0)
  274.                     continue;
  275.                 else if(k%4==1)
  276.                     a[k/4]+=hextodec(szBuff[j])*16*16;
  277.                 else if(k%4==2)
  278.                     a[k/4]+=hextodec(szBuff[j])*16;
  279.                 else if(k%4==3)
  280.                     a[k/4]+=hextodec(szBuff[j]);
  281.                 k++;
  282.  
  283.             }
  284.  
  285.         }
  286.     }
  287. //printf("The size of dwBytesWrite is: %c", &otherBuff);
  288. //printf("I wrote to the device\n");
  289. //printf("I");
  290.  
  291. //printf("Heres szBuff %d\n", szBuff);
  292.  
  293.     /********************************************************************************************/
  294.     CloseHandle(hCom);
  295.     return(0);
  296.  
  297. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement