Guest User

Untitled

a guest
Jul 20th, 2018
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.52 KB | None | 0 0
  1. #include "windows.h"
  2. #include <iostream>
  3. #include <fstream>
  4. #include <stdio.h>
  5. #include <string.h>
  6. #include <conio.h>
  7. using namespace std;
  8.  
  9. int adcToInt(char, char, char);
  10. int cursorPos;
  11.  
  12. int main()
  13. {
  14.     ofstream myfile;
  15.     myfile.open("UniSenData.lgdat");
  16.     myfile << "##;##\n";
  17.     myfile << "Sensor1;Sensor2;Sensor3;Sensor4;Sensor5\n";
  18.  
  19.     //COM Port Communication Protocol
  20.     HANDLE hSerial;
  21.     //LPCWSTR testing = L"\\\\.\\COM11";
  22.     hSerial = CreateFile(TEXT("COM1"), GENERIC_READ, 0, NULL, OPEN_EXISTING,
  23.         0, NULL);
  24.  
  25.     if (hSerial == INVALID_HANDLE_VALUE)
  26.         return 0;
  27.  
  28.    // error opening port; abort
  29.  
  30.     //Init
  31.     DCB dcbSerialParams = {0};
  32.     dcbSerialParams.DCBlength = sizeof(dcbSerialParams);
  33.     dcbSerialParams.BaudRate=CBR_9600;
  34.     dcbSerialParams.ByteSize=8;
  35.     dcbSerialParams.StopBits=ONESTOPBIT;
  36.     dcbSerialParams.Parity=NOPARITY;
  37.     SetCommState(hSerial, &dcbSerialParams);
  38.  
  39.     //Timeouts
  40.     COMMTIMEOUTS timeouts = {0};
  41.     timeouts.ReadIntervalTimeout=100;
  42.     timeouts.ReadTotalTimeoutConstant=100;
  43.     timeouts.ReadTotalTimeoutMultiplier=20;
  44.     SetCommTimeouts(hSerial, &timeouts);
  45.     //Create COM Port Buffer
  46.     int j = 20;
  47.     char szBuff[20] = {0};
  48.     DWORD myBytesRead = 0;
  49.     ReadFile(hSerial, szBuff, j+1, &myBytesRead, NULL);
  50.  
  51.     //Declaration of a random string here causes clear buffer output by printf for some reason
  52.     string randomString, randomString2, randomString3, randomString4;
  53.     //Port values will store integer valuesof adc values read from  buffer
  54.     int portOneVal, portTwoVal, portThreeVal, portFourVal, portFiveVal;
  55.     string charToString;
  56.         while(1){
  57.  
  58.             if (szBuff[0] == 'A')
  59.             {
  60.                 //Grab and output raw buffer data
  61.                 cout << "Bytes Read: " << myBytesRead << endl;
  62.                 szBuff[20] = '\0';
  63.                 printf("%s\n",szBuff);
  64.                 //Output data to confirm integer values
  65.                 portOneVal = adcToInt(szBuff[1], szBuff[2], szBuff[3]);
  66.                 cout << "Sensor 1: " << portOneVal << endl;
  67.                 portTwoVal = adcToInt(szBuff[5], szBuff[6], szBuff[7]);
  68.                 cout << "Sensor 2: " << portTwoVal << endl;
  69.                 portThreeVal = adcToInt(szBuff[9], szBuff[10], szBuff[11]);
  70.                 cout << "Sensor 3: " << portThreeVal << endl;
  71.                 portFourVal = adcToInt(szBuff[13], szBuff[14], szBuff[15]);
  72.                 cout << "Sensor 4: " << portFourVal << endl;
  73.                 portFiveVal = adcToInt(szBuff[17], szBuff[18], szBuff[19]);
  74.                 cout << "Sensor 5: " << portFiveVal << endl;
  75.                 //Begin Writing Sensory Values to data file
  76.                 myfile.seekp(0, ios::end);
  77.                 myfile << portOneVal << endl;
  78.                 if (portOneVal == 0)
  79.                 {
  80.                     myfile.close();
  81.                     break;
  82.                 }
  83.                 myfile.close();
  84.                 ReadFile(hSerial, szBuff, j+1, &myBytesRead, NULL);
  85.             }
  86.             else
  87.             {
  88.                 ReadFile(hSerial, szBuff, j+1, &myBytesRead, NULL);
  89.             }
  90.         }
  91.     CloseHandle(hSerial);
  92.     return 0;
  93. }
  94.  
  95. int adcToInt(char hundreds, char tens, char ones)
  96. {
  97.     //Initilize temporary variables
  98.     char parsedVal[3];
  99.     string stringVal;
  100.     int intVal;
  101.     //Eliminate any leading zeros in ADC values
  102.     if ((hundreds == 0) && (tens == 0) && (ones == 0))
  103.     {
  104.         parsedVal[0] = '0';
  105.         parsedVal[1] = '0';
  106.         parsedVal[2] = '0';
  107.     }
  108.     else if ((hundreds == 0) && (tens == 0) && (ones =! 0))
  109.     {
  110.         parsedVal[0] = ones;
  111.         parsedVal[1] = '\0';
  112.     }
  113.     else if ((hundreds == 0) && (tens =! 0) && (ones =! 0))
  114.     {
  115.         parsedVal[1] = tens;
  116.         parsedVal[0] = ones;
  117.         parsedVal[2] = '\0';
  118.     }
  119.     else
  120.     {
  121.         parsedVal[2] = ones;
  122.         parsedVal[1] = tens;
  123.         parsedVal[0] = hundreds;
  124.     }
  125.  
  126.     //Convert char array to string
  127.     stringVal = parsedVal;
  128.     //Convert string to integer value
  129.     intVal = atoi (parsedVal);
  130.     //Return intVal
  131.     return intVal;
  132. }
Add Comment
Please, Sign In to add comment