【发布时间】:2018-08-18 06:47:24
【问题描述】:
我需要为 Linux 平台下的患者监护子系统创建一个 JNI c 库。我必须通过 USB 串行端口读取数据并写入命令。每当端口打开时,设备就会以不同的频率和大小连续发送多种类型的数据。
在 Java 中,我正在运行一个单独的线程,该线程调用本机 jni c 代码,我正在调用一个 C 函数以在 while(1) 循环中从串行端口读取数据,该循环基于在信号处理程序中启用的 RX_Flag .信号处理函数在端口配置期间使用 sigaction 与 SIGIO 连接。我的期望是,每当数据到达端口时,触发信号,该信号连接到 signalIO 处理程序,启用 RX_Flag。
基于 flag_values,读取、解析数组并将其发送回 Java。我在 C 中使用来自 main 的 pthread 调用接收函数,它工作正常。但是从 Java 开始,我被困在了第一步本身。在一段时间 IO 信号未到达之后,我没有正确接收 IO 信号。在 Native C 中,每当 IO 信号到达时,它都会在单独的进程中启用标志。为此,我必须在 Signal IOhandler 中添加任何其他内容吗?
我是按照正确的方式进行还是有其他方法可以实现这一点?
【问题讨论】:
-
提供你的代码,让我们看看。
-
您在 Stack Overflow 上提出的两个问题表明您的期望需要稍作改变。您的读者通常是这里的志愿者,他们是在空闲时间来这里的。因此,列出任何对答案的要求以及您需要答案的时间范围并不理想。
标签: java c serial-port java-native-interface signals