* WinCE下的远程控制系统 设计思想(欢迎指点) *

WvW WvW 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
项目情况:
运行在WINCE 5.0下, 对485总线的多台设备的环境数据进行采集. 如果数据到达一定值, 进行报警; 如果设备离线, 进行故障报警; 操作有:清除故障 和 报警; 禁止警报喇叭; 联动继电器端口; 电子地图; 然后可以查询报警记录.

-- 环境数据用了 一个结构体表达一台设备的数据. 然后一次性分配了n台设备的内存数据. (方便网络发送).


以太网客户端:
目标: 将 环境数据采集过来; 继电器端口信息(名称 和 状态); 报警状态; 故障状态; 喇叭状态; 电子地图(配置坐标+图片); 和 查询记录.

要求: 环境数据每500ms更新一次.
客户端采用: windows PC平台.


设计方案:

通讯协议: 采用: 帧头|开始标志|session|命令|数据长度|数据|效验码|结束标志|;
数据区: 因为是VC++, 考虑到 WINCE服务器的性能问题, 不使用xml(服务器生成xml 耗时, 容易产生内存碎片), 直接使用结构体; 结构体发生变化时, 需要使用匹配的软件. (根据程序的修改日期判断, 或者定义一个版本号).
网络模型: 客户端不会太多, CE的CPU只有400MHZ, 限定最大<32个; 一个客户端一个线程;

登录部分: 使用用户名+密码结构体; 服务器返回: {结果 | session};
运作流程:
0. 根据服务器IP, 生成一个文件夹, 保存电子地图等等信息.
1. 读取 环境数据 的结构体长度, 客户端分配这个内存区, 以后收到数据, 直接填充;
2. 读取 继电器数据 的结构体长度, 客户端分配这个内存区, 以后收到数据, 直接填充;
3. 读取电子地图配置, 更新设备坐标map; 根据里面的每张地图的图片crc32码, 决定是否要更新本地地图.
4. 读取状态 (报警;故障;蜂鸣器);
5. 开始循环发送查询命令(查询环境 和 继电器数据). 收到后, 通知UI, 进行更新.


数据查询部分:
采用的是(SQLite), 每秒保存一次, 一天一个文件, 大约50M. (所以不适合将数据库下载到客户端, 然后直接使用服务器的查询软件打开, 囧~; 不过这是却一个很好的方案).
1. 客户端生成要查询的设备, 和 日期范围, 提交给服务器;
2. 服务器根据提供的信息, 生成SQL查询;
3. 将结果导出成 html, 然后将这个文件的字节数据发送给客户端.
4. 客户端将收到的内容, 放到这个服务器的ip下.
-- 注意事项: 日期范围要限定(否则数据量太大).
如果不做限定, 应当不要一次查询出所有的数据, 而是分批; 那最好保存这个客户端的最后一次查询结果集.


响应应答:
因为CE没有好的网络线程池. 所以我的想法比较笨拙.
非阻塞: 客户端发送一个命令; 不等待返回; 当收到一个返回, 解析处理;
优点: 这样有利于服务器主动推一些数据过来, 比如设备报警状态;
缺点: 需要控制好socket的互斥;

阻塞: 那就一问一答了; 虽然服务器不能主动推数据, 但是因为数据是每0.5采集一次, 也能看到设备状态.



我准备采用非阻塞模型;


-----------
好, 说完了, 欢迎大家提出建议!







...全文

相关推荐

wince连接远程sqlserver数据库

wince连接远程sqlserver数据库 sqlclient.dll和dbnetlib.dll wince连接远程sqlserver数据库 sqlclient.dll和dbnetlib.dll

z273894270

Wince系统专用屏幕截图工具实战应用

在很多人眼里,屏幕截图只是个边缘功能。但在工业现场,它可能是缩短故障定位时间的关键证据,是远程技术支持的信任桥梁,也是提升培训效率的可视化工具。通过对WinCE图形栈的深入理解、对部署流程的标准化把控以及对后期处理的系统规划,我们可以把这个“小功能”打造成一套企业级解决方案。🎯 技术的价值不在新旧,而在是否解决了真实问题。哪怕是在一台运行了15年的老设备上,一句依然能点亮工程师脸上的笑容 😊📌 **延伸本文还有配套的精品资源,点击获取。

溪水边小屋

Windows CE6环境下实现鼠标和键盘钩子技术

在操作系统中,钩子(Hook)是一种重要的机制,允许程序改变或增强系统或应用程序的某些方面的功能。对于Windows CE操作系统来说,这一机制为开发者提供了强大的能力,以监控和控制系统中发生的各种事件,特别是在输入事件处理方面。通过钩子,开发者可以拦截和修改鼠标和键盘事件,实现自定义的输入处理逻辑。钩子技术(Hooking)是一种广泛应用于软件开发中的技术,特别是在操作系统和应用程序中用于监控系统或应用程序内部事件的传递。通过钩子,开发者可以拦截、修改或扩展操作系统或应用程序的行为。

语嫣凝冰

winCE5.0注册表导入工具,欢迎大家下载

wince5.0的注册码导入工具,可以导入很多的注册内容,并且还可以改变系统设置,使“桌面”、“收藏夹”……等相关文件夹想在哪个地方放,就往那个地方放!

mb565342158

Wince直连SQLServer数据库

代码是在Wince6.0上做的直接连接SQLServer数据库测试,C# ,自己写的测试代码,可以连接成功。测试时要注意在服务器端SQLServer数据库的参数要正确。

yixiongli
评论 3
收藏 已收藏
分享
返回顶部
WvW
网络编程 18,356 成员 64,161 内容