问题
如何通过环境变量(不是系统或用户变量)与另一个程序(例如,Windows 服务)进行通信?
我们有什么
好吧,我有以下数据记录器方案:
------------------------- --------------------------------
| the things to measure | | the things that do something |
------------------------- --------------------------------
| ^
| sensors | switches
V |
-------------------------------------------------------------------
| dedicated hardware |
-------------------------------------------------------------------
| ^
| | serial communication
V |
--------------- -------------
| Windows | ------------------------------------> | user |
| service | <------------------------------------ | interface |
--------------- udp communication -------------
|^ keyboard
V| and screen
--------
| user |
--------
关于目前的发展:
- Windows 运行时,windows 服务始终在运行
- 用户可以打开和关闭用户界面(当然:p)
- Windows 服务从传感器获取数据
- 用户界面每隔 100ms 自动向 Windows 服务请求数据,并通过 udp 通信通过一些已实现的协议向用户显示(我们称之为
GetData()
命令和响应) - 用户可以通过实现的协议发送一些其他命令来更改要获取的数据(我们称之为
SetSensors()
命令和响应)
用户界面和 Windows 服务都是在 Borland C+ Builder 6 上开发的,并使用 FastNet 选项卡中的 NMUDP 组件进行 UDP 通信。
我们想做什么
由于一些缓冲区问题和释放 udp 通道仅用于发送SetSensors()
命令和响应它,我们正在考虑使用它而不是使用GetData()
:
- Windows 服务将从传感器获取数据并将它们放在环境变量中
- 用户界面会读取它们以显示给用户
做我们所想的之后的计划
------------------------- --------------------------------
| the things to measure | | the things that do something |
------------------------- --------------------------------
| ^
| sensors | switches
V |
-------------------------------------------------------------------
| dedicated hardware |
-------------------------------------------------------------------
| ^
| | serial communication
V |
--------------- -------------
| | ------------------------------------> | |
| | environment variables | |
| | (get data from sensors) | |
| Windows | | user |
| service | | interface |
| | | |
| | ------------------------------------> | |
| | <------------------------------------ | |
--------------- udp communication -------------
(send commands to service) |^ keyboard
V| and screen
--------
| user |
--------
有什么办法吗?
我们不会使用系统和用户环境变量,因为它写在 Windows 注册表上,也就是说,它会保存到硬盘驱动器,它会变得更慢......