在C++中實現串口數據的讀寫,需要使用操作系統提供的API
首先,確保已經安裝了libserialport
庫。在Debian/Ubuntu系統上,可以使用以下命令安裝:
sudo apt-get install libserialport-dev
接下來,創建一個名為serial_example.cpp
的文件,并添加以下代碼:
#include<iostream>
#include<string>
#include <cstring>
#include <unistd.h>
#include<serialport.h>
int main() {
const char *port_name = "/dev/ttyUSB0"; // 串口設備名稱,根據實際情況修改
int baud_rate = 9600; // 波特率
// 打開串口
struct sp_port *port;
sp_get_port_by_name(port_name, &port);
sp_open(port, SP_MODE_READ_WRITE);
// 配置串口
sp_set_baudrate(port, baud_rate);
sp_set_bits(port, 8);
sp_set_parity(port, SP_PARITY_NONE);
sp_set_stopbits(port, 1);
sp_set_flowcontrol(port, SP_FLOWCONTROL_NONE);
// 寫入數據
std::string write_data = "Hello, Serial Port!\n";
sp_nonblocking_write(port, write_data.c_str(), write_data.size());
// 讀取數據
char read_data[256];
ssize_t bytes_read = sp_nonblocking_read(port, read_data, sizeof(read_data));
if (bytes_read > 0) {
read_data[bytes_read] = '\0';
std::cout << "Received: "<< read_data<< std::endl;
}
// 關閉串口
sp_close(port);
sp_free_port(port);
return 0;
}
編譯并運行程序:
g++ serial_example.cpp -o serial_example -lserialport
./serial_example
這個示例將向指定的串口發送一條消息,并嘗試讀取回復。請注意,你需要根據實際情況修改串口設備名稱和波特率。此外,你可能需要根據實際情況調整讀寫操作的超時時間。