This is my current code.
It waits for a number of ms, then it says how many samples it received
Code:
#include <cstdlib>
#include <iostream>
#include <vector>
#include <string>
#include <windows.h>
#include <stdio.h>
#include "SFile.h"
using namespace std;
vector<short int> buffer;
DWORD start = 0;
DWORD res = 0;
bool Keypress(char &Key)
{
INPUT_RECORD Event;
DWORD NumberOfEvents, EventsRead, EventCounter;
GetNumberOfConsoleInputEvents(GetStdHandle(STD_INPUT_HANDLE), &NumberOfEvents);
if (NumberOfEvents == 0)
return false;
for (EventCounter = 0; EventCounter < NumberOfEvents; EventCounter++)
{
PeekConsoleInput(GetStdHandle(STD_INPUT_HANDLE), &Event, 1, &EventsRead);
if ((Event.EventType == KEY_EVENT) && ((Event.Event.KeyEvent.bKeyDown)))
{
ReadConsoleInput(GetStdHandle(STD_INPUT_HANDLE), &Event, 1, &EventsRead);
Key = Event.Event.KeyEvent.wVirtualKeyCode;
if (!(FlushConsoleInputBuffer(GetStdHandle(STD_INPUT_HANDLE))))
exit(0);
return true;
}
else
ReadConsoleInput(GetStdHandle(STD_INPUT_HANDLE), &Event, 1, &EventsRead);
}
return false;
}
int main() {
SFile sf;
// open COM1 at 115200, settings 8N1
if (!sf.Open(1, 115200))
{
cerr << "Failed to open COM1, ec = " << GetLastError() << endl;
system("pause");
return 1;
}//if
sf.WriteByte(0xFF);
// read a byte at a time and display it
// (this should loop forever)
BYTE b;
char key = 0;
while (sf.ReadByte(b))
{
if (Keypress(key))
{
if (key == VK_ESCAPE)
{
PostQuitMessage(0);
Sleep(0);
return 1;
}
}
buffer.push_back ((short int)(b));
if ( buffer.size() == 1) start = GetTickCount();
if ( (GetTickCount() - start) > 1000 ) break;
}//while
cout << buffer.size() << " samples in " << (GetTickCount() - start) << " ms." << endl;
int k;
sf.Close();
system("pause");
PostQuitMessage(EXIT_SUCCESS);
Sleep(0);
return(EXIT_SUCCESS);
}