首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 这种既要用到串口,又要用到网口的模式该怎么设计? [已结帖,结帖人:Edistein]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • Edistein
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 结帖率:
    发表于:2008-08-20 16:50:43 楼主
    有这样一个程序,需要进行串口或网口通信,可以选择,但同时只有一种方式起作用.
    而且又用很多窗口会用到同一个串口/网口.
    最初我采用的模式是每个窗口一个单独的MSComm控件(网口先不忙管),在窗口load/unload时分别打开,关闭串口.但这样设计很繁琐,许多代码都是重复的.而且以后加入网口处理时就会更加冗余.
    于是我想把这个通讯单独提出来形成一个模块.但串口通讯非要用MSComm才能实现,于是我就想添加一个隐藏窗口,里面放置MSComm,当有接收/发送等事件时就根据一个全局的标志变量来调用某个函数.但这样做会有大量的这种消息处理代码,太细节了.

    高手们告诉我怎样做好这个通讯的模块呢?

    高分奉上~~~
    71  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • YFY
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-20 17:49:131楼 得分:20
    我的做法一般式用VC做DLL实现,关键是定义好接口,主要的好处是可以做成多线程,网络或串口出现故障的时候界面不会锁死。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • jennyvenus
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 3

      5

    发表于:2008-08-21 09:08:532楼 得分:31
    应该是这样,视不同的接口为设备,现在就是使用两个设备中的一个,让用户自己去换。

    如果你接收的东西是被动的,那么你不用通知某个窗口,只需要收取并暂存起来即可,比如你定义一个65536大小的缓冲区,用两个变量表示接收指针与处理指针,初始值为0

    当有数据到来时,后台自动接收,存入缓冲,并设置指针变量,比如接收了3个数据,那么

    接收指针 = 3

    处理指针 = 0

    在其他需要判断数据的地方,用

    if 接收 <> 处理 then

        处理
       
          处理指针 = 接收指针
    endif

    之类的方法来做。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • Edistein
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-21 09:19:083楼 得分:0
    收到数据时不通知窗口,那在窗口中用一个循环还检测数据吗?这样会丢数吧
    另外,这个"后台"怎么做?用一个隐藏窗口吗?VB中有没有一个类来代替MSComm/Winsock控件呢?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • jennyvenus
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 3

      5

    发表于:2008-08-21 09:25:074楼 得分:0
    我习惯按VC的思维,做VB还是有差别,VC上俺都在后台收,不管多少,慢慢处理,决不会丢数。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • Edistein
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-21 09:48:135楼 得分:0
    我也习惯这样在后台收,然后添加事件侦听,但VB非要用控件,奇怪
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • zdingyun
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-21 11:17:106楼 得分:20
    引用 5 楼 Edistein 的回复:
    我也习惯这样在后台收,然后添加事件侦听,但VB非要用控件,奇怪

    你也可使用API而不用控件。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • jennyvenus
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 3

      5

    发表于:2008-08-21 14:46:087楼 得分:0
    大不了做个dll让VB调用。
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved