Skip to content

Instantly share code, notes, and snippets.

@tomeaton17
Created January 2, 2018 11:28
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save tomeaton17/2bfc55a12b77dec68ac8b13677e9668e to your computer and use it in GitHub Desktop.
Save tomeaton17/2bfc55a12b77dec68ac8b13677e9668e to your computer and use it in GitHub Desktop.
#include <iostream>
#include <cstdlib>
#include <string>
#include<chrono>
#include<thread>
#include <boost/asio.hpp>
#include <boost/asio/serial_port.hpp>
using namespace std;
void getVersion(char* outVersion, boost::asio::serial_port& port) {
char data[2] = {'v', '\n'};
boost::asio::write(port, boost::asio::buffer(&data, 2));
boost::asio::read(port, boost::asio::buffer(outVersion, 5));
}
void cellVoltage(char* cell, boost::asio::serial_port& port) {
boost::asio::write(port, boost::asio::buffer(&cell, 2));
char data[8];
boost::asio::read(port, boost::asio::buffer(&data, 8));
cout << data <<endl;
}
int main(int argc, char** argv) {
boost::asio::io_service my_io;
boost::asio::serial_port port_(my_io);
try {
port_.open("/dev/ttyUSB0");
} catch(const boost::system::system_error){
cerr << "Couldn't open device!" << endl;
exit(1);
}
port_.set_option(boost::asio::serial_port_base::baud_rate(115200));
char data[2] = {'0', '\n'};
char read[3];
boost::asio::write(port_, boost::asio::buffer(&data, 2));
boost::asio::read(port_, boost::asio::buffer(&read, 3));
cout << read;
this_thread::sleep_for(chrono::milliseconds(100));
char version[5];
getVersion(version, port_);
cout << version;
char cellOne[2] = {'1', '\n'};
this_thread::sleep_for(chrono::milliseconds(100));
cellVoltage(&cellOne, port_);
return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment