#include "uartregaccessb.h" #include "serialib.h" UartRegsAccessB::UartRegsAccessB(std::string devName, int bauds, int readflag, int writeflag) { m_serial.reset(new serialib()); m_serial->Open(devName.c_str(), bauds); this->readflag = readflag; this->writeflag = writeflag; } UartRegsAccessB::~UartRegsAccessB() { } bool UartRegsAccessB::write(unsigned int addr, unsigned int val) { std::lock_guard lck(mx_uart); unsigned char* pdata = bufSend; pdata[0] = writeflag; pdata[1] = (unsigned char)addr; *((unsigned int*)(pdata + 3)) = val; m_serial->Write(bufSend, sizeof(bufSend)); return true; } bool UartRegsAccessB::read(unsigned int addr, unsigned int& val) { std::lock_guard lck(mx_uart); unsigned char *pdata = bufRecv; pdata[0] = readflag; pdata[1] = (unsigned char)addr; m_serial->Write(bufRecv, 2); if (m_serial->Read(bufRecv, 5, 500)) { val = *((unsigned int*)(bufRecv + 1)); return true; } return false; }