Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "windows.h"
- #include <iostream>
- #include <fstream>
- #include <stdio.h>
- #include <string.h>
- #include <conio.h>
- using namespace std;
- int adcToInt(char, char, char);
- int cursorPos;
- int main()
- {
- ofstream myfile;
- myfile.open("UniSenData.lgdat");
- myfile << "##;##\n";
- myfile << "Sensor1;Sensor2;Sensor3;Sensor4;Sensor5\n";
- //COM Port Communication Protocol
- HANDLE hSerial;
- //LPCWSTR testing = L"\\\\.\\COM11";
- hSerial = CreateFile(TEXT("COM1"), GENERIC_READ, 0, NULL, OPEN_EXISTING,
- 0, NULL);
- if (hSerial == INVALID_HANDLE_VALUE)
- return 0;
- // error opening port; abort
- //Init
- DCB dcbSerialParams = {0};
- dcbSerialParams.DCBlength = sizeof(dcbSerialParams);
- dcbSerialParams.BaudRate=CBR_9600;
- dcbSerialParams.ByteSize=8;
- dcbSerialParams.StopBits=ONESTOPBIT;
- dcbSerialParams.Parity=NOPARITY;
- SetCommState(hSerial, &dcbSerialParams);
- //Timeouts
- COMMTIMEOUTS timeouts = {0};
- timeouts.ReadIntervalTimeout=100;
- timeouts.ReadTotalTimeoutConstant=100;
- timeouts.ReadTotalTimeoutMultiplier=20;
- SetCommTimeouts(hSerial, &timeouts);
- //Create COM Port Buffer
- int j = 20;
- char szBuff[20] = {0};
- DWORD myBytesRead = 0;
- ReadFile(hSerial, szBuff, j+1, &myBytesRead, NULL);
- //Declaration of a random string here causes clear buffer output by printf for some reason
- string randomString, randomString2, randomString3, randomString4;
- //Port values will store integer valuesof adc values read from buffer
- int portOneVal, portTwoVal, portThreeVal, portFourVal, portFiveVal;
- string charToString;
- while(1){
- if (szBuff[0] == 'A')
- {
- //Grab and output raw buffer data
- cout << "Bytes Read: " << myBytesRead << endl;
- szBuff[20] = '\0';
- printf("%s\n",szBuff);
- //Output data to confirm integer values
- portOneVal = adcToInt(szBuff[1], szBuff[2], szBuff[3]);
- cout << "Sensor 1: " << portOneVal << endl;
- portTwoVal = adcToInt(szBuff[5], szBuff[6], szBuff[7]);
- cout << "Sensor 2: " << portTwoVal << endl;
- portThreeVal = adcToInt(szBuff[9], szBuff[10], szBuff[11]);
- cout << "Sensor 3: " << portThreeVal << endl;
- portFourVal = adcToInt(szBuff[13], szBuff[14], szBuff[15]);
- cout << "Sensor 4: " << portFourVal << endl;
- portFiveVal = adcToInt(szBuff[17], szBuff[18], szBuff[19]);
- cout << "Sensor 5: " << portFiveVal << endl;
- //Begin Writing Sensory Values to data file
- myfile.seekp(0, ios::end);
- myfile << portOneVal << endl;
- if (portOneVal == 0)
- {
- myfile.close();
- break;
- }
- myfile.close();
- ReadFile(hSerial, szBuff, j+1, &myBytesRead, NULL);
- }
- else
- {
- ReadFile(hSerial, szBuff, j+1, &myBytesRead, NULL);
- }
- }
- CloseHandle(hSerial);
- return 0;
- }
- int adcToInt(char hundreds, char tens, char ones)
- {
- //Initilize temporary variables
- char parsedVal[3];
- string stringVal;
- int intVal;
- //Eliminate any leading zeros in ADC values
- if ((hundreds == 0) && (tens == 0) && (ones == 0))
- {
- parsedVal[0] = '0';
- parsedVal[1] = '0';
- parsedVal[2] = '0';
- }
- else if ((hundreds == 0) && (tens == 0) && (ones =! 0))
- {
- parsedVal[0] = ones;
- parsedVal[1] = '\0';
- }
- else if ((hundreds == 0) && (tens =! 0) && (ones =! 0))
- {
- parsedVal[1] = tens;
- parsedVal[0] = ones;
- parsedVal[2] = '\0';
- }
- else
- {
- parsedVal[2] = ones;
- parsedVal[1] = tens;
- parsedVal[0] = hundreds;
- }
- //Convert char array to string
- stringVal = parsedVal;
- //Convert string to integer value
- intVal = atoi (parsedVal);
- //Return intVal
- return intVal;
- }
Add Comment
Please, Sign In to add comment