2 Star 0 Fork 0

程序员锡哥/cgutech-jni-serial

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
SerialPortForBoost.cpp 2.25 KB
一键复制 编辑 原始数据 按行查看 历史
devis 提交于 2019-07-10 10:11 . 调同红绿灯
//
// 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;
}
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/msgy/cgutech-jni-serial.git
git@gitee.com:msgy/cgutech-jni-serial.git
msgy
cgutech-jni-serial
cgutech-jni-serial
master

搜索帮助

0d507c66 1850385 C8b1a773 1850385