如何在 Linux 上通过 C++ 中的串行接口与 Arduino 通信?

     2023-02-22     224

关键词:

【中文标题】如何在 Linux 上通过 C++ 中的串行接口与 Arduino 通信?【英文标题】:How to communicate with an Arduino over its serial interface in C++ on Linux? 【发布时间】:2008-10-03 22:47:43 【问题描述】:

我有一个连接到 Arduino 板的 RFID 阅读器。我想通过它的串行接口连接到它,并且每当 RFID 阅读器忽略一个信号时(当它读取一个 (RF)ID 时),我想在我的 C++ 程序中检索它。

我已经有了从 Arduino 简单地将 RFID 打印到串行的代码。

我不知道的是,如何在 Linux 中从 C++ 中读取它

我看过libserial,看起来很简单。但是,我如何让 C++ 程序对信号做出反应,然后读取 RFID,而不是连续收听?有必要吗?

编辑:在我读过的大多数示例中,(c++) 程序发送输入并接收输出。我只想听和接收来自 Arduino 的输出。

【问题讨论】:

【参考方案1】:

在 unix 上,您使用 select() 调用来等待输入。 select() 调用就像睡眠一样——在内核接收到硬件中断并触发 select() 之前不使用 CPU。

http://tldp.org/HOWTO/Serial-Programming-HOWTO/index.html

【讨论】:

【参考方案2】:

我找到了 Boost::Asio 库,它从串行接口异步读取。 Boost::Asio Documentation

【讨论】:

【参考方案3】:

Arduino Playground 中接口部分的Communications 部分有几个接口示例,包括一个使用 Arduino 作为 Linux TTY 的示例。

试试 Arduino 网站上的 Syntax and Programs 论坛和 Software Development 论坛。过去曾讨论过与多种不同语言和计算机的接口。

最后查看Processing 和Wiring 网站。 Arduino IDE基于Processing语言,布线环境和开发板与Arduino相关。这两个网站都有更多示例和更多资源的链接。

编辑:我刚刚意识到我没有回答您的实际问题。这些都是一般的通信资源,但有些可能会提示如何提醒计算机有新的 RFID 输入。

【讨论】:

我事先搜索过这个,偶然发现了这些页面。然而,大多数假设输入,然后作为响应输出。我的程序不知道什么时候应该读取信息,我想知道如何做到这一点。最好,如果可能的话,我想学习如何异步执行此操作。【参考方案4】:

您好,我为此创建了一个简单的库:cArduino https://github.com/ranma1988/cArduino C++可以自动查找连接Arduino端口,读取,写入

【讨论】:

自我推销被认为是垃圾邮件,这里是这样。

如何将一个数字分成1个字节的块以通过C++中的串行蓝牙发送

】如何将一个数字分成1个字节的块以通过C++中的串行蓝牙发送【英文标题】:Howtodivideanumberinto1bytechunkstobesentthroughserialbluetoothinc++【发布时间】:2021-03-1014:46:54【问题描述】:我想通过串行蓝牙从Arduino向Android应用程序发送一个... 查看详情

如何在 Linux 上创建虚拟 CAN 端口? (C++)

】如何在Linux上创建虚拟CAN端口?(C++)【英文标题】:HowtocreatevirtualCANportonlinux?(C++)【发布时间】:2014-01-2803:40:28【问题描述】:我想创建一个程序来模拟CAN端口,以便为另一个大型应用程序进行测试。程序应通过此虚拟CAN发送先... 查看详情

如何在 Linux 中监视串行端口上的数据?

】如何在Linux中监视串行端口上的数据?【英文标题】:HowcanImonitordataonaserialportinLinux?【发布时间】:2010-10-3017:38:35【问题描述】:我正在调试与串行设备的通信,我需要查看双向流动的所有数据。在Linux上这似乎应该很容易,... 查看详情

如何在 Linux 上使用 c++ 中的系统函数

】如何在Linux上使用c++中的系统函数【英文标题】:HowtouseSystemfunctionsinc++onlinux【发布时间】:2014-12-3016:35:21【问题描述】:我是linux新手,我正在学习c++我如何在linux上使用system("")像系统(“颜色4a”);我如何在linux上使用它... 查看详情

如何在 Linux 上使用 C++ 查询 Informix 数据库?使用 C++ 的对象接口时出现编译器错误

】如何在Linux上使用C++查询Informix数据库?使用C++的对象接口时出现编译器错误【英文标题】:HowcanIqueryInformixdatabaseusingC++onLinux?GettingcompilererrorswhenusingObjectInterfaceforC++【发布时间】:2011-07-2809:06:33【问题描述】:我使用IBM提供的... 查看详情

使用c++在linux上使用接口playstationdualshock4(ds4)控制器

...本身支持自ver。14.xx.但我能找到的关于连接的一般方法是如何设置控制器以进 查看详情

没有与连接的串行端口通信?

...时间】:2019-01-1410:37:20【问题描述】:我正在尝试连接到通过我的基于Linux的PC中的USB串行端口连接的ArduinoMega2560单元。使用C代码,我正在尝试发送和接收简单的文本字符串,只是我能够在双方发送和接收。在Arduino上:intincomingB... 查看详情

如何通过使用 C、C++ 在 Linux 上指定其名称以编程方式检查特定守护程序是不是正在运行?

】如何通过使用C、C++在Linux上指定其名称以编程方式检查特定守护程序是不是正在运行?【英文标题】:HowtoprogrammaticallycheckifparticulardaemonisrunnningbyspecifyingitsnameonLinuxusingC,C++?如何通过使用C、C++在Linux上指定其名称以编程方式检... 查看详情

Linux C++ 上 Gtkmm 中的 OpenGL 模板缓冲区

...opengl.org/archives/resources/code/samples/mjktips/Reflect.html它描述了如何通过在 查看详情

Linux 上的串行通信连接

...的用户文档仅适用于windows,我在ArchLinux上。我唯一一次通过USB端口进行串行通信是针对Arduino,那是通过他们的GUI环境,所以我从未接触过金属。所以我有这个RFID阅读器,您可以通过USB端口上的串行通信与之交互。 查看详情

如何确定 linux 串行端口上剩余的写入/输出缓冲区空间量?

】如何确定linux串行端口上剩余的写入/输出缓冲区空间量?【英文标题】:HowcanIdeterminetheamountofwrite/outputbufferspaceleftonalinuxserialport?【发布时间】:2012-11-0116:08:39【问题描述】:您可以使用ioctl确定在linux下可以从串行端口读取多... 查看详情

在python中如何调用pcsc中的接口

...n调用winscard.dll中的接口实现与IC卡读写器的交互,我知道如何调用方法,但是对于C++和python之间的类型转换实在不知道怎么搞,比如SCardEstablishContext方法的第四个参数,在C++中是一个句柄,但是在python中使用什么类型来代替呢?... 查看详情

终端类型

...接向终端设备发送数据,数据就会被发送到屏幕上,用户通过键盘写的数据,就是向这个字符设备写数据,数据会同步显示到显示器上,回车后数据才会被linux执行命令。终端类型1串行口终端      在linux中... 查看详情

C++ 中的继承和接口

...型与它们相关联,允许执行相同的功能,而不管具体类型如何。例如,我需 查看详情

我如何在一些全局击键上使用 Python 或 C++ 将一些文本粘贴到 linux 中的当前活动应用程序

】我如何在一些全局击键上使用Python或C++将一些文本粘贴到linux中的当前活动应用程序【英文标题】:HowcanI,onsomeglobalkeystroke,pastesometexttocurrentactiveapplicationinlinuxwithPythonorC++【发布时间】:2009-09-2607:18:01【问题描述】:我想编写一... 查看详情

并口线与串口线的区别在哪?

...采用并行传输方式来传输数据的接口标准。串口线即简称串行接口使用的线路,串行接口也称串行通信接口或串行通讯接口(通常指COM接口),是采用串行通信方式的扩展接口。2、接口特点不同:串口线的特点是可以在数据位... 查看详情

如何通过 Makefile 将 cap_net_raw 功能添加到 Linux 上的 c++ 可执行文件

】如何通过Makefile将cap_net_raw功能添加到Linux上的c++可执行文件【英文标题】:Howtoaddcap_net_rawcapabilityviaaMakefiletoc++executablefileonlinux【发布时间】:2017-02-1621:08:13【问题描述】:我创建了一个在Linux上运行的c++,其功能之一是在提供... 查看详情

在linux上通过usb发送原始数据

】在linux上通过usb发送原始数据【英文标题】:sendingrawdatathroughusbonlinux【发布时间】:2010-08-1921:55:04【问题描述】:我正在ZebraTLP-2844打印机上打印一些标签,并且通过将EPL指令发送到共享USB打印机,在Windows上做得很好,如下所... 查看详情