重庆网站建设技术,做贸易网站,网络推广文案案例,一个人0资金怎么创业1#xff1a;libserialport简介
github路径 自己的gitee路径 libserialport 是一个跨平台的串口通信库#xff0c;由 sigrok 项目开发。它简洁、易用#xff0c;并且支持多种操作系统。
libserialport 支持阻塞和非阻塞模式#xff0c;可以根据你的需求选择适当的模式。阻…1libserialport简介
github路径 自己的gitee路径 libserialport 是一个跨平台的串口通信库由 sigrok 项目开发。它简洁、易用并且支持多种操作系统。
libserialport 支持阻塞和非阻塞模式可以根据你的需求选择适当的模式。阻塞模式下操作会等待完成或超时而非阻塞模式下操作会立即返回。通过使用 sp_blocking_* 和 sp_nonblocking_* 函数你可以轻松实现这两种模式。
2交叉编译脚本
1将下面的代码保存为一个脚本使用source执行 2注意先修改 CROSS_COMPILE 和 prefix 路径 3编译步骤请参考编译说明
#!/bin/bash# 源码地址 https://github.com/sigrokproject/libserialport#export CROSS_COMPILE交叉编译工具链前缀
export CROSS_COMPILE/opt/gcc-linaro-7.4.1-2019.02-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-
export CC${CROSS_COMPILE}gcc
export CXX${CROSS_COMPILE}g
export AR${CROSS_COMPILE}ar
export AS${CROSS_COMPILE}as
export LD${CROSS_COMPILE}ld
export RANLIB${CROSS_COMPILE}ranlib
export STRIP${CROSS_COMPILE}strip
echo cross ok# 编译说明
# 1: 先执行 make clean
# source build.sh注意修改交叉编译工具链
# 2执行 ./autogen.sh
# 3: 修改交叉编译工具链和生成目标文件路径
# ./configure --enable-toolsyes --hostaarch64-linux-gnu --prefix/home/djq/mokar/cv2x_libs/libserialport-0.1.1/targets/
# 4make
# 5make install
# 6libserialport-0.1.1/targets/ 路径下会生成目标文件3: libserialport对比系统自带的read和write优势
libserialport 和直接使用系统自带的 read 和 write 函数来操作串口设备在功能和便利性上有一些区别。以下是一些主要的区别和考虑因素
易用性 libserialport: 提供了更高级的抽象简化了串口的打开、配置和通信操作。处理串口通信时开发者不需要深究底层细节如设置串口参数和处理各种可能的错误。 系统自带的 read 和 write: 需要开发者手动处理串口的打开、配置、参数设置以及错误处理。尽管更灵活但容易出错且代码更复杂。跨平台支持 libserialport: 设计之初就考虑了跨平台支持能在 Linux、Windows 和 macOS 上运行而无需修改代码。这对需要跨平台兼容的项目非常有用。 系统自带的 read 和 write: 这些是 POSIX 标准函数主要在 Unix/Linux 系统上原生支持。要在其他操作系统上使用可能需要额外的工作。功能扩展 libserialport: 提供了更丰富的功能库如列出系统中可用的串口、设置和获取串口参数、阻塞和非阻塞读写操作、事件通知等。 系统自带的 read 和 write: 只提供基本的读写功能。若要实现高级功能比如列出串口、流控等需要额外编写大量代码。代码简洁性 libserialport: 提供了更简洁的 API减少了重复代码提高了代码的可读性和维护性。 系统自带的 read 和 write: 需要写更多的样板代码来实现同样的功能。例如配置串口需要手动使用 termios 结构体和相关函数。错误处理 libserialport: 内置了更好的错误处理机制可以方便地进行错误检测和处理。 系统自带的 read 和 write: 需要手动处理每一个系统调用的返回值并进行相应的错误处理。