问题标签 [rs485]

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 投票
2 回答
1676 浏览

serial-port - 如何在 C# 中正确地从 Mbus 接收数据?

我有一个非常可怕的问题,让我几乎生病了。2-3 天以来,我一直在处理这个协议问题,我发现自己在这里寻求你们的帮助。我希望我能解决。提前致谢。我在 Vb 中有使用旧 MsComm 库的代码。所以我决定用 C# 来改变所有的东西。我可以打开、关闭端口和发送数据等。

在Vb; 我有以下代码部分,用于通过 RS485 从 Mbus 驱动程序接收数据。一旦您发送此信息,它就会响应您获取数据。它有效,没有问题。

因此,上面的代码在 Vb 和 Vb.Net 中运行良好。但是,当我将其转换为 C# 时,如下所示;我无法得到 mbus 驱动程序的响应。通过 RS485 发送数据时,我可以看到黄色 LED 起火。通常在接收数据时,您可以看到红色的 LED 也会触发。C# 中的代码;

我看不出有任何问题,但 Vb 代码有效,而 C# 无效。

在c#中,以下是我的开放端口功能的一部分;

一切正常。正如我所说的,我可以看到通过 RS485 通过 Mbus 的数据流。我可以从 TX led 看到它,它在我发送数据时一直在触发。但是,正如我再次所说,RX led 不会触发。

0 投票
2 回答
9709 浏览

c - 自动更改 RS-485 通信的 RTS

我正在尝试在我的程序中设置半双工通信。我的 RS485 收发器使用 RTS 标志 (TIOCM_RTS) 在发送和接收之间来回切换。要发送/接收数据,我需要手动更改 RTS 标志:

  1. 将 RTS 设置为高。

  2. 发送数据。

  3. 将 RTS 设置为低。

    /li>

我的问题是:linux内核不应该能够自动切换RTS吗?以及如何确保在调用 setRTS(0) 之前发送了数据?

0 投票
1 回答
1031 浏览

c# - 将信号写入串行端口

我正在尝试通过 USB 到 RS485 电缆将数据写入 DMX 接收器。我可以看到正确的数据帧,但是对于遵循 DMX 协议的数据包,我需要一个中断和 MAB 信号。所以我的问题是,有没有办法产生这样的信号?我的想法是向串行端口写入带有延迟的 hi 和 lo 信号,但我还没有找到在 VS C# 中执行此操作的方法。

0 投票
1 回答
2367 浏览

python - Python串行写入 - 丢失字节

我正在尝试使用 Python 2.7 pySerial 包通过串行端口(使用 RS232、RS485 测试)发送 9 个字节。如果我将字节写到串口,一些字节会随机丢失(不会到达接收端)。如果我在每次写入单个字节之间使用 1 毫秒等待,则所有字节都会到达接收端。

我在同一操作系统上测试了 2 个串行终端之间的功能。

这是导致数据包(字节)丢失的代码片段:

正在工作的片段:

随机数据包丢失的根本原因是什么?

系统详情:

  • OSX 10.9.4
  • 蟒蛇 2.7
  • Minicom 或 screen 用于终端仿真

测试环境:

  • ATC USB/RS485 转换器
  • ATC 串行/RS485 转换器,带 USB 串行适配器
0 投票
2 回答
2745 浏览

c++ - Linux轮询串行传输端

我正在使用串行端口和 gpio 在 arm 开发板上实现 RS485 以进行数据启用。

我在发送前将数据启用设置为高电平,我希望在传输完成后将其设置为低电平。

它可以通过编写简单地完成:

我想从阻塞模式更改为非阻塞并使用 fd 轮询。但我没有看到任何与“传输完成”相对应的投票事件。

当所有数据都发送完毕后,我怎样才能得到通知?

系统:linux 语言:c++ 板子:BeagleBone Black

0 投票
0 回答
988 浏览

linux - RS485点对点通讯

我想在点对点通信中通过 RS485 实现 TCP。由于硬件原因,我无法使用 RS232。我还没有任何设备,所以我不能不测试任何东西。

在 Linux 中,我可以使用带有 SLIP 协议的 slattach 进程在两个节点之间传输和接收数据,还是仅适用于 RS232?我知道 RS485 是半双工的,我应该在此之上实现例如主从协议以防止冲突。

0 投票
2 回答
1113 浏览

c - 关于C编程中的strlen函数

目前正在为 MPLAB IDE 中的 PIC 单片机编译 C 编程。我只想计算一个字符串的长度,我正在使用 strlen 函数。但它保持返回值 0。下面是我的编码:

在主循环中,我得到了这个功能:

CountData 函数如下:

RXDATA 的实际长度通常超过 50,但我的 nLen 总是给我 0。你们知道出了什么问题吗?或者有没有其他方法来计算长度?

0 投票
0 回答
1142 浏览

android - 如何在我的 android 项目中实现 Android 原生库?特别是 biemmeIOdemo 库

我正在开发一个需要从通过 RS485 连接的 modbus RTU 从设备读取数据的应用程序。我可以找到解决此问题的唯一在线地方是here。 http://www.biemmeitalia.net/libraries/install.html

github上的源代码链接在这里: https ://github.com/biemme/biemmeIOdemo

我的问题是如何在我的 android 应用程序中使用这个库。我正在 Android Studio 中开发。

0 投票
2 回答
6265 浏览

c - 将 uint8_t 转换为 int 问题

我正在尝试通过串行通信与 USB 加密狗进行通信。我的通信正常,但是我无法让设备正确解析通信。我的设备读取消息并将其与硬编码的 c 字符串进行比较。它解析并识别出它是正确的字符串,但是当我尝试解析 : 字符之后的值时,它返回 0x00000000 我不知道为什么。我尝试使用 char cast 并使用 atoi,我尝试使用简单的 ascii 翻译,甚至进行按位加法运算,如下所示:将 vector<uint8_t> 的子集转换为 int

例如:
我发送“心率:55”它解析并识别出“心率:”但是当我告诉它去寻找 55 并将它带回来做一些事情时,它给了我一个 0x00000000 这
是一个片段:

比较字符串函数

0 投票
0 回答
55 浏览

c - 哪个打开接收器打开,哪个关闭接收器

我目前正在用 C 语言编写一个半双工串行端口 (RS485)(一次只能通过线路发送一个信号),并试图弄清楚当我向设备发送请求时如何关闭设备上的接收器串口上的设备。我找到了以下代码,但我不确定哪一个关闭接收器,哪一个打开接收器

谁能帮我破译哪个打开接收器,哪个关闭接收器?