紧急求救!!!Windows 98下端口I/O出怪事!

SkyVense 2000-03-29 11:33:00
各位高手:

我正在编写一个数据采集程序(使用Visual C++6.0编程与数据采集卡进行端口通信),其通讯方式很简单:
先向310端口发初始化信号,通知仪器开始数据通讯,然后循环检测300端口,数据有效后读一个字节,然后再循环检测300端口,数据有效后再读下一个字节...,如此反复。
我使用的是VC的_inp()、_outp()函数来操作的,刚开始实验读少量数据是成功的,因为这是一种很可靠的通讯方式,所以我认为肯定没问题了!可是后来再实验接收大量数据时,问题出现了:每接收一段数据(大约一百多个字节),仪器就会莫名其妙的被重新初始化,又从头开始发送数据。
我以为是VC的_inp()、_outp()函数不好,就编了一个简单的动态加载Vxd进行I/O操作,以为这样不会再有问题了,可结果恰恰相反!
没办法了,只好又用Turbo C编了一个DOS程序,想在VC程序中需要通讯时调用一下,更奇怪的现象出现了:在纯DOS中,通讯一切正常,仪器没有被莫名其妙的重新初始化;可在Windows的DOS窗口中,却又出现了跟上面一样的问题!
这是为什么?还望各位高手指教!感激不尽!

张小峰
skyvense@online.sh.cn
...全文
148 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
easydone 2000-03-29
  • 打赏
  • 举报
回复
Do not worry about it.
Trust yourself.
The problem will be solved sooner or later...
sunsetyang 2000-03-29
  • 打赏
  • 举报
回复
问题可能出在Windows98的多任务方面,在普通的DOS方式下,由于是单任务的操作系统,对于外围设备的管理比较松散,要依赖于装入驱动才能工作。在Windows下可能就不同了,你的端口使用并没有通知核心,导致了系统认为是异常,所以采取了合适的重新初始化的工作。telen的似乎不是原因。你可以试一下将端口在控制面板中设为保留资源试一下。或者用程序将其通知和欣慰使用状态。应该可以解决的。
telan 2000-03-29
  • 打赏
  • 举报
回复
有没有可能是大量数据没有及时接收,缓冲区被填满导致出错?
DOS下的程序也完全一样么?
telan 2000-03-29
  • 打赏
  • 举报
回复
有没有可能是大量数据没有及时接收,缓冲区被填满导致出错?
DOS下的程序与VC写的完全一样么?

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧