对于我的一个项目,我需要开发一个软件,该软件在收到应用程序的触发信息后,需要在100毫秒内从并行端口获取2000个数据。这意味着并行端口需要以50微秒的间隔读取。数据频率设置为10 KHz。因此,此采集过程应该是实时的,且具有微秒级的时间精度。
我正在尝试用Java编程。到目前为止,已经能够从并行端口获取数据,但是很难保持时间间隔。
我的问题是:是否真的有可能在Windows XP环境下以这种时间(以微秒为单位)精确地进行操作?如果是,您能给我指出一些准则/资源吗?
任何帮助将不胜感激。
最佳答案
这取决于您的软件是否必须可靠地运行,或者仅在大多数情况下才能运行。
对于普通的Java VM,您无法预测垃圾回收器的行为,因此,您基本上无法阻止VM在任意时间段内中断软件的执行。
可以使用带有扩展了“Java实时规范”(JSR-1)的VM的Java实现实时软件,但是AFAIK没有Windows的实现,因为Windows本身没有实时功能。 Sun的以前引用实现(现在由Oracle维护)在Solaris和启用RT的Linux版本上运行,嵌入式系统还有其他实现。