JavaME RaspBerryPi UART 无法从 RS485 接收数据

JavaME RaspBerryPi UART can't receive data from RS485

我尝试将我的 raspberry pi(带有 raspbian weezy)与条形 LED 模块连接。为此,我使用 RBPi 的 UART 连接,以便与 RS485 条带连接进行通信。

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

编辑:

我认为是程序打开UART连接时出现如下错误。 NO : 以下错误是由于非用户权限

[ERROR] [DAAPI] iso=-1:cannot open /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" 是我的 class,它管理串行通信。

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

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

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

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

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

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

然后重启。

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

sudo ./runSuite.sh <yourapp>

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

最后,您应该尝试获取最新版本的 JavaME(当前为 8.1)。