JavaME RaspBerryPi UART 无法从 RS485 接收数据

Posted

技术标签:

【中文标题】JavaME RaspBerryPi UART 无法从 RS485 接收数据【英文标题】:JavaME RaspBerryPi UART can't receive data from RS485 【发布时间】:2015-03-07 16:57:25 【问题描述】:

我尝试将我的树莓派(带有 raspbian weezy)与条形 LED 模块连接起来。为此,我使用 RBPi 的 UART 连接来与 RS485 条连接进行通信。

我的麻烦:我可以(是的,我可以)发送数据,但我没有收到 ACK 或其他任何东西。然而,我的条形 LED 模块将数据帧发送到 RBPi(我可以在示波器上看到它)。

编辑:

我认为这是由于程序打开UART连接时出现以下错误。 否:以下错误是由于非用户权限引起的

[错误] [DAAPI] iso=-1: 无法打开 /dev/mem

嗯,但是我没有收到消息...

结束编辑

为此,我编写了以下 javaME 代码:

UARTConfig config = new UARTConfig((int)Integer.valueOf(this.getPortCom()),(int)Integer.valueOf(this.getPortCom()), this.getBaudrate(),
                                                this.getBitsperchar(), this.getUARTParity(), getStopBits(), UARTConfig.FLOWCONTROL_NONE);

this.uart = (UART)DeviceManager.open(config);

InputStream serialInputStream = Channels.newInputStream(uart);
BufferedReader serialBufferedReader = new BufferedReader(new InputStreamReader(serialInputStream));

 this.tSerialOutput = new Thread( new SerialWriter( Channels.newOutputStream(uart) ) );
 this.tSerialOutput.start();
 this.tSerialInput = new Thread( new SerialReader( serialBufferedReader ));
 this.tSerialInput.start();

“this”是我管理串行通信的类。

在“DeviceManager.open”之后出现错误消息 我已遵循以下票证的建议: https://community.oracle.com/message/12513726

但这并不是我问题的真正答案(我认为......)

我不知道....所以请帮帮我^^

【问题讨论】:

【参考方案1】:

首先,您必须确保 Linux 控制台尚未使用串行端口。以下是禁用此功能的方法:

编辑/etc/inittab 并通过在其前面添加# 字符来禁用以下行

T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100

然后重启。

如果这仍然不起作用,那么您可以尝试以提升的权限执行 JavaME 运行时:

sudo ./runSuite.sh <yourapp>

如果这有效,则说明某处存在权限问题。

最后,你应该尝试获取最新版本的 JavaME(目前是 8.1)。

【讨论】:

以上是关于JavaME RaspBerryPi UART 无法从 RS485 接收数据的主要内容,如果未能解决你的问题,请参考以下文章

UART (PL011) Raspberry Pi 3 上的 Windows 10 IoT UWP

无法使用 Raspberry Pi 3 在 Windows IoT 上打开 UART 端口

如何为 Raspberry Pi 编写简单的 UART Linux 设备驱动程序?

Java ME 或 Java SE(Raspberry Pi 零)

树莓派使用uart串口与串口设备通信

Sparkfun SC16IS750 不适用于 Raspberry Pi