《二》开源:跨平台串行通讯库

原文链接:

通过原文链接,关注公众号,可订阅QT/C++常用的开源软件及库。

《二》开源:跨平台串行通讯库

1. 简介

    本期介绍用于访问串行端口的跨平台库libserialport,libserialport 是用 C 语言编写的轻量级跨平台库,不依赖于其他库,旨在在编写使用串行端口的软件时处理特定于操作系统的细节。该库是在 LGPL3+ 许可下发布的开源项目,允许开发者编写能够在多个平台上透明工作的串行通信软件,而无需关心底层系统的差异。支持- Linux、Mac OS X、FreeBSD、Windows、Android等操作系统。

2. 功能列表

  • 端口枚举:    

    获取系统上的串行端口列表。

  • 端口处理:    

    打开、关闭和获取有关港口的信息

  • 配置:          

     波特率、奇偶校验等。

  • 信 号:          

    调制解调器控制线、中断等。

  • 数据处理:    

    读取和写入数据以及缓冲区管理。

  • 等 待:          

    等待端口准备就绪,与事件循环集成。

  • 错 误:          

    获取错误和调试信息。

3 . 线程安全

可以并发进行某些调用组合,如下所示。

  • 使用不同端口的调用总是可以并发进行的,即单独的线程处理自己的端口是安全的。

  • 当一个调用是读取操作和一个调用是写入操作时,可以使用同一端口同时进行调用,即对同一端口使用单独的“读取器”和“写入器”线程是安全的。

4 .调试

    该库可以输出大量的跟踪和调试信息。最简单的使用方法是将环境变量设置为任何值;然后,消息将输出到标准错误流。LIBSERIALPORT_DEBUG,此行为由默认的调试消息处理回调实现。可以使用 sp_set_debug_handler() 设置替代回调,以便将输出重定向到其他位置或过滤它。

5 .源码目录

图片

6. 从源代码构建

进入源码目录。

./configure
make
sudo make install

构建后生成的文件如下图所示。

图片

7. 库的集成使用

此处以cmake+vscode介绍库的集成及使用。 CMakeLists.txt中加入库。

find_library(SERIA_LIB NAMES serialport HINTS ${CMAKE_SOURCE_DIR}/output_x86/lib NO_DEFAULT_PATH)
find_path(SER_INCLUDE NAMES libserialport.h HINTS ${CMAKE_SOURCE_DIR}/output_x86/include NO_DEFAULT_PATH)
include_directories(${SER_INCLUDE})
#链接库
target_link_libraries(${PROJECT_NAME} ${SERIA_LIB} )

主要代码。

#include<libserialport.h>
struct sp_port *ports[1];
sp_return iret = sp_get_port_by_name("dev/ttyS1", &ports[0]);
if(iret == SP_OK)
{
        iret = sp_open(ports[0], SP_MODE_READ_WRITE);
        if(iret == SP_OK)
        {
  sp_set_baudrate(ports[0], 115200);
  sp_set_bits(ports[0], 8);
  sp_set_parity(ports[0], SP_PARITY_NONE);
  sp_set_stopbits(ports[0], 1);
  sp_set_flowcontrol(ports[0], SP_FLOWCONTROL_NONE);
        }
}
/*接收数据*/
unsignedchar buf[512] = {0};
sp_return iret =  sp_blocking_read(ports[0], buf, 512, 500);

8.库地址

地址: https://sigrok.org/api/libserialport/unstable/index.html

原文链接:《二》开源:跨平台串行通讯库https://mp.weixin.qq.com/s/PVF03yJgXyFyhrcSLWnrOg?token=1806244109&lang=zh_CN

更多开源项目可通过原文链接关注公众号: 

图片

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值