问题标签 [serial-communication]

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 投票
1 回答
972 浏览

java - 通过串口监视器和Java同时读取Arduino

我用 java 编写了一个代码来与我的 Arduino 板通信。它运作良好。我也可以使用串行监视器与 Arduino 板通信。

但是当我尝试打开串行监视器时,当 java 程序正在运行时(监听连接到你的板的端口,PORT 32),它没有说,

Serial port 'COM 32' already in use. Try quitting any programs that may be using it.

这是完整的消息(只是为了完整起见)

是的,我知道,它是我的 java 程序,它正在使用该端口。但这是否意味着我不能同时使用这两个程序来访问 PORT32?

希望有人能告诉我解决这个问题的方法。任何帮助是极大的赞赏。谢谢!

0 投票
1 回答
940 浏览

protocols - CAN 通讯问题

我开始走这条路,因为我正在审查 uCLinux 中的CAN驱动程序。总的来说,我是 CAN 新手,所以我对此进行了一些研究,但偶然发现了一个我还没有找到答案的问题。

如果 CAN 是串行接口,而CANopen没有“总线主控器”,那么 CAN 协议如何处理总线上不可避免的数据冲突?如果没有人控制您何时可以发送,那么只要有足够的设备和时间,就必须发送碰撞。

这是一个非常基本的问题,所以我可能找到了答案,只是不明白......如果有人能提供一个很好的答案/例子。

0 投票
3 回答
17931 浏览

c++ - 串口编程 RS485

我的任务是通过 RS485 2 线系统实现 ModBus 协议。(实际上是三根线,A/B 和 GND)。ModBus 不是重点,但在此之前的步骤……通过接口进行简单的 I/O。

我正在使用 FTDI USB-RS485 转换器将 Linux 主机(不可互换)连接到 Windows 主机(可与另一台 Linux 主机互换,但我想避免这种情况)

编码应该是 19200, 8, n, 1。但它似乎不起作用。

我手头没有确切的代码,但在 Linux 上我正在这样做:

接下来,我配置端口。

目前还没有计划奇偶校验和流量控制,因为最终结果将连接到一个低级电路板,我需要自己处理信号。此外,没有任何电线可以实现“不受限制的通信”。(毕竟我不希望 XON/XOFF 字符限制我可以传输的字节范围)

所有这些功能都正确执行并设置了数据。

在 Windows 上,我像这样打开串行端口:

奇偶校验和流量控制被禁用。字节大小设置为 8。

编辑:既然有人问过,这是我在 Windows 上的波特率代码(来自内存) SP.DCBlength= sizeof(SP); SP.BaudRate = 19200; SP.奇偶校验 = 无奇偶校验;SP.StopBits = ONESTOPBIT;SetCommState(hSerial, &SP);

同样,所有这些功能都可以完美运行。

现在,对于让我头疼的测试用例。

在 Linux 主机上,我创建了一个 256 字节大小的字节缓冲区。这个缓冲区填充了从 0 到 255 的字符值......然后通过网络通过写入发送。同时,对方正在用“ReadFile”等待数据到达。

使用此配置,对于“其他 Linux 主机”以及 Windows 主机,256 字节到达......但是它不是 0-255 的数字,而是 00 06 等。

当我在设置我真正想要的选项之前将 termios 结构的所有成员设置为 0 时,我可以让 Linuxhost 工作。我猜,这是因为控制字符......但是如果我这样做,Windows 主机要么只接收 256 个字节中的 4 个。

正如我所说,不幸的是我手头没有代码。如果有人知道我可以从什么角度解决这个问题,我将不胜感激。一旦我再次可以访问它,我将发布更多代码。

我如何实现读取操作:

需要注意的是,我确实设置了超时,但不记得确切的值。

编辑:因为我现在可以再次访问我的工作地点,所以这是实际的(当前)代码。

}

至于实际的发送/接收代码:

}

至于示波器:我已经测试了发送的两个方向。两人都非常出色地完成了他们的工作。

0x55 的信号在 50 微秒的长度上是一个恒定的 Up/Down(应该如此,因此设置波特率也没有问题)。

那么我的“接收”代码中有什么我做错了吗?“选择”错了吗?

0 投票
2 回答
1485 浏览

serial-port - 串口 - 如何安全搜索我的设备?

我正在编写与我自己设计的电子设备通信(通过串行端口)的应用程序。

当我的 PC 应用程序启动时 - 它会一一打开可用的 COM 端口并发送一些字符串(例如“你是什么?”)。

我的设备被编程,用自己的 ID 回答那个“神奇的问题”(例如:“我是监督员工的邪恶设备”)。

当我的 PC 软件收到“神奇回复”时,它开始正常工作,不再搜索其他端口。

当然我没有在数据传输中使用愚蠢的问题,这只是一个例子。

问题是 - 我可以在所有(不忙)端口上发送字符串来发现我的设备吗?

如果可以的话——那个“问题”字符串应该是什么样子?有没有标准化的标准?

这不是我办公桌上的第一个这样的项目,但现在我正在为小行业开发解决方案,我需要更多地关注我的应用程序在做什么,因为可能有其他设备连接到 COM 端口,我不知道它们如何做出反应。

对不起,如果我犯了一些语言错误,英语是我的第三语言。

提前感谢您的回复。

0 投票
2 回答
1060 浏览

c# - SerialPort 不读取消息

我正在尝试使用 [SerialPort] 类运行串行通信。我制作了一个简单的控制台应用程序项目,在其中使用HyperTerminal测试这个类。

这是我的程序:

The problem is以下内容:当我写一行(在控制台中)时,a 可以在 HyperTerminal GUI 中看到我写的内容,但是当我使用 HyperTerminal 写一行时,我的程序没有读取任何消息,该消息总是触发 a TimeoutException.

为什么?
我怎么解决这个问题?
谢谢。

0 投票
3 回答
10710 浏览

embedded - SPI通信中CPOL/CPHA设置的使用

谁能给我现实生活中的例子,说明 SPI 通信中的 4 种 CPOL/CPHA 配置模式有用吗?我了解它们的工作原理,但不知道何时使用它们。由于非标准实现,出于兼容性目的,我很快就阅读了一些参考,这是怎么回事?

谢谢

0 投票
1 回答
1132 浏览

c - c中的异步通信

我必须通过串行发送命令并根据命令接收答案,并根据收到的消息做一些事情。有人告诉我必须使用回调,因为这是一个异步操作。

我有 2 个线程,一个可以发送消息,一个可以接收消息。

例子:

如何编写为特定消息初始化并处理收到的消息的函数。

例子:

}

0 投票
1 回答
2867 浏览

serial-port - WinCE 与 PC USB 通讯

我们正在开发一些设备,我们需要为所需功能之一找到好的解决方案。

问题是我们需要在 PC 上通信 WinCE 6.0 (ARM) 和 Windows。最简单的方法当然是 COM 端口,但在我们的情况下这是不可能的(所有串行端口都在 WinCE 上使用,我们不想再添加一个)。第二种选择是 LAN,但对我们来说它不是最好的选择,原因有几个。

所以我们可以使用第三种选择。USB 到 USB 通信,但如何做到这一点?当然,WinCE 是 USB 设备,PC 是 USB 主机,所以所有硬件基础知识都满足了。

我们可以使用主动同步,但它几乎没有问题: - WinCE 6.0 无法与 WMDC 一起使用(设备上的驱动程序在将设备与 PC 连接后崩溃)并且我没有找到任何解决方案,所以在这种情况下我们需要在 PC 端使用 WinXP(旧的 ActiveSync)——我们需要过滤与主动同步的通信,只针对我们的应用程序,不允许使用其他非授权软件(我知道这是不可能获得的)。

因此,我们需要做的最好的方法是像标准 COM(串行通信)一样通过 USB 进行通信。问题是,它是如何制作的,我们是否需要在 WinCE 上编写驱动程序并在 Windows (PC) 上编写驱动程序,或者有更好的解决方案?也许一些 WinCE 6.0 的驱动程序可以在 PC 端模拟虚拟 COM(当然允许在 WinCE 端对其进行标准读/写)?有人可以告诉我这样的东西是否存在吗?

0 投票
2 回答
8728 浏览

tcp - MODBUS,设备可以响应的最长时间吗?

在与 MODBUS 设备通信时,设备在被视为超时之前可以响应多长时间是否有上限?我正在尝试确定将读取超时设置为什么。MODBUS RTU 和 TCP 的答案都很好。

0 投票
3 回答
2945 浏览

serial-port - MODBUS 自动地址分配

有谁知道可以自动设置MODBUS地址的方案?在我的情况下,我将启动许多从属设备,并且需要一些自动分配地址的方法。