代码拉取完成,页面将自动刷新
//
// Created by root on 19-7-6.
//
#include "SerialPortForBoost.h"
using namespace boost::asio;
boost::asio::io_service SerialPortForBoost::ioserv;
char _buffer[4096] = {0};
void handle_read(char *buf,boost::system::error_code ec,
std::size_t bytes_transferred)
{
printf("[RX] - ");
for(int i = 0; i < bytes_transferred; i++) {
printf("%02X ", buf[i]);
}
printf("\n");
}
bool SerialPortForBoost::Open(const char *name, int baud) {
if(serialPort != nullptr) {
printf("串口已打开\n");
return true;
}
#ifndef ASIO_DEBUG
try {
#endif
printf("打开[%s, %d]\n", name, baud);
serialPort = new boost::asio::serial_port(ioserv, name);
serialPort->set_option(serial_port::baud_rate(baud));
serialPort->set_option(serial_port::flow_control(serial_port::flow_control::none));
serialPort->set_option(serial_port::parity(serial_port::parity::none));
serialPort->set_option(serial_port::stop_bits(serial_port::stop_bits::one));
serialPort->set_option(serial_port::character_size(8));
printf("打开[%s, %d]成功\n", name, baud);
return true;
#ifndef ASIO_DEBUG
} catch (...) {
printf("打开串口[%s]异常\n", name);
return true;
}
#endif
}
bool SerialPortForBoost::Write(unsigned char *data, int size) const {
#ifndef ASIO_DEBUG
try {
#endif
printf("[TX - ]");
for(int i = 0; i < size; i++) {
printf("%02X ", data[i]);
}
printf("\n");
return write(*serialPort, buffer(data, size)) > 0;
#ifndef ASIO_DEBUG
} catch (...) {
printf("写入串口异常\n");
}
return false;
#endif
}
int SerialPortForBoost::Read(unsigned char *buf, int size) const{
#ifndef ASIO_DEBUG
try {
#endif
boost::asio::async_read(*serialPort, buffer(_buffer), boost::bind(handle_read, _buffer, _1, _2));
#ifndef ASIO_DEBUG
} catch (...) {
printf("读取串口数据异常\n");
}
#endif
return false;
}
void SerialPortForBoost::Close() {
if(serialPort != nullptr) {
serialPort->cancel();
serialPort->close();
delete serialPort;
serialPort = nullptr;
}
}
SerialPortForBoost::SerialPortForBoost() {
serialPort = nullptr;
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。