问题标签 [libserial]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
228 浏览

c++ - 奇怪的串行通讯错误

好的,所以我有 3 台设备。

  • 一个 AVR Butterfly 微控制器,使用 USART 设置
  • 一个 Bifferboard,运行 Debian,使用定制的串行程序。
  • 一台运行 Br@y's 的台式机。

所以我试图让 Bifferboard 向 AVR 发送串行数据,但 AVR 从来没有收到信号,(我们已经检查了电线)。但是,如果我将 AVR 连接到桌面盒,并使用 Br@y's 发送它就可以接收。

如果我将 Bifferboard 连接到桌面,Br@y 的接收效果会很好。

这是Bifferboard的代码。

我也尝试过使用 Bifferboard 的 minicom - 它可以与桌面 windows 机器对话,但不能与 AVR 对话。

0 投票
2 回答
1039 浏览

c++ - Libserial Open() 在我的 C++ 程序中冻结

基本上我有一个非常简单的 C++ 程序,我试图打开一个串行端口(它实际上是一个 USB->RS232 转换器,应该由 libserial 支持)但代码在 Open() 上冻结。没有错误没有例外,什么都没有,它什么也不做。它似乎适用于除此特定串行端口之外的其他串行端口。串口也适用于cutecom和其他终端(并且它不被任何其他程序保留)。我已经尝试在打开端口之前和之后进行配置,但这似乎并不重要。我在 libserial 的(相当糟糕的)文档或标题中也看不到任何关于握手的信息,也许它正在等待握手或其他什么,我不知道...... Libserial0 版本 0.6.0 和 Ubuntu 10.10。有什么问题或者我该如何尝试调试这个...... ? 任何其他建议的库/方法来使用 C++ 的串行端口?

0 投票
1 回答
699 浏览

c++ - 错误的 libserial 接收数据序列

我现在正在开发一个在 Ubuntu 下使用 libserial 进行串行端口通信的项目。我们修改了 libserial 源代码以允许 MARK/SPACE 奇偶校验。但是在做数据接收测试时,有时(大约5%的几率)传入的数据顺序是错误的。第一个字节可以跳到传入缓冲区的中间,甚至可以跳到末尾。

问题出在原SerialPort::SerialPortImpl::HandlePosixSignal( int singnalNumber) f函数内部,发生错误时无法正确读取某些字节,错误描述为“资源暂时不可用”。但是既然已经开始num_of_bytes_available使用ioctl,怎么可能失败呢?

在我的测试期间,我经常在 MARK/SPACE 奇偶校验之间切换。这会导致问题吗?

SetParity函数中的修改部分

0 投票
2 回答
31117 浏览

c++ - 使用 C/C++ 和 LibSerial 在 Ubuntu 中读取和写入串行端口

我在 Ubuntu 上使用LibSerial在串口上读取和写入数据。

目前,我可以通过串行端口写入和接收字符串,但是我的代码不能很好地工作:特别是,我想控制读取功能,以便仅在有要读取的内容时读取并在没有信息可读取时退出,以便在不阻塞流程程序的情况下发送另一个命令。

我想要做:

  • 写一个命令
  • 等待答案
  • 然后写另一个命令
  • 等待答复

现在,我可以发送第一个命令并通过在 while 循环中使用 read 函数来读取答案,但我无能为力。 我无法发送第二个命令,因为 while 循环永远不会退出,所以程序会继续读取。

你能帮我吗?

这是我正在使用的代码:(读写功能在代码的末尾)

0 投票
3 回答
6271 浏览

c++ - C ++将字节写入串行流

我意识到这种问题散布在整个互联网上,但似乎没有任何东西指向我。

我正在尝试通过串行流向 Propeller 控制板发送命令。连接似乎正在工作,但是对于我发送的任何类型的命令,它都会不断出现错误 - 它返回相同的十六进制数据:10 ffffffe1。发送的数据似乎格式不正确。董事会似乎在期待字节数据,并且(我认为)我的代码似乎正在这样做,但我就是不知道我做错了什么。我想我没有正确转换数据。这是我的代码,如下。感谢大家。

注意:下面的代码不显示读取响应;它是在我的另一个程序中完成的,它可以正常工作,它也可以正确读取来自串行终端的响应。

}

0 投票
1 回答
567 浏览

serial-port - 通过 pl2303 连接器和 serialstream.h/libserial 在 ubuntu 上设置 buad 速率时出错

我正在 Ubuntu 上开发一个串行通信应用程序。我正在使用 pl2303 转换器和libserial

我的问题是我无法设置波特率。执行下面的源代码后,我得到错误状态 = 2。

我的源代码是:

0 投票
0 回答
829 浏览

c++ - 安装/添加 libserial 到 Eclipse C++ ubuntu

我有一段时间没有使用 C++,但我能够设置 eclipse 并设置基础知识。我需要编写一个使用 libserial 与 MC 通信的程序,但我对如何添加 libserial 库一无所知。我可以从官方网站(http://libserial.sourceforge.net/)下载它,但不知道如何安装它。

任何人都可以发布一个关于如何将 libserial 添加到 Eclipse 项目的快速教程。到目前为止,我的包含在这些行中给了我一个未解决的插入错误:

谢谢。

PS:我是 ubuntu 编程新手

0 投票
1 回答
540 浏览

ubuntu-12.04 - LibSerial C++ 代码在没有 Cutecom 的情况下无法运行

我正在尝试通过串行从 Ubuntu 12.04 到使用 libserial 的 ATxmega 板进行通信。我遇到的问题是,除非我先运行 cutecom,否则我的代码不会运行。除非我先运行cutecom,否则我的程序只会冻结并且不输出任何内容。我尝试了几件事,比如让我 sudo 访问 ttyUSB0,将我的用户添加到对话组。作为 su 运行它。我也尝试添加 VTime 和 VMin,但也没有运气。这是我的程序没有离开的代码,它似乎永远不会进入 while(ros::ok()) 循环。我正在使用ros,但在这里应该没有效果。我正在尝试以 1/10 秒的速度与董事会来回交流。

0 投票
1 回答
1729 浏览

c++ - 在 Linux 上使用 libserial 从串行端口读取额外字符

我有一个非常基本的设备,我试图通过 Linux 上的串行连接与之交互。我仍然处于学习曲线的陡峭部分,所以请保持温和!

无论如何,我可以通过 Windows 中的 Hyperterminal 或 Linux 中的 cu、screen 或 minicom 来控制设备。我通过 19200、8N1 的 PC 上的内置串行端口连接。该设备的界面非常简单:

  • 键入“H”,设备回显“H”。
  • 键入“V”,设备会回显一个包含其软件版本“ADD111C”的字符串。
  • 键入“S”,设备根据打印机状态返回“0”、“1”或“?”。
  • 键入“Q”,它会返回一个五行响应,其中包含有关最后处理的事务的详细信息。
  • 每个响应后面都有一个换行符,也可能是一个 CR,我不确定。

还有更多,但这是一个好的开始。当我使用屏幕连接到设备时,它工作正常:

一旦我手动完成了这项工作,我就尝试使用 C++ 和 libserial 编写一个简单的程序来与设备交互。它看起来像这样:

这成功地能够将“V”发送到串口,但是当我读回它时,在有效数据之后我得到了一些非打印字符:

我缺少什么来获取对我的查询的响应?我猜我需要刷新端口上的缓冲区或其他东西,但我已经达到了我有限知识的尽头。

理想情况下,我只想获得“ADD111C”,但我不想通过抓取特定长度的数据(以防将来发生变化)和读取结束时的垃圾来将自己描绘成一个角落似乎并不总是相同的长度或相同的数据。

非常感谢您的观看,

汤姆

0 投票
1 回答
1144 浏览

c++ - LibSerial:无法访问 SerialStream 成员函数

我正在尝试进行基本的端口编程,有人建议我看看 LibSerial。

我构建并安装了包,但在访问任何 SerialStream 成员函数时遇到问题

例如,以下代码 (ls_ex.cpp) 失败:

我正在编译它:

当我编译时,我收到以下错误:

ls_ex.cpp: In function 'int main(int, char**)': ls_ex.cpp:45:15: error: 'class LibSerial::SerialStream' has no member named 'isOpen'</p>

我假设我编译错了,因为它很容易查看代码并看到 isOpen() 确实是公开的。另外,为什么我什至能够很好地实例化 SerialStream 但是当我尝试调用任何成员函数时编译器会崩溃?