我们单位有一个用串口和单片机通讯的软件,是dos下用Qb写的。在586的电脑上运行正常,最近换成奔腾3的电脑,就运行不了了,有知道原因和解决办法的吗?谢谢!!

解决方案 »

  1.   

    当然我不知道你的QB是如何编的,我估计里面有时间延迟的程序。以便与单片机同步。DOS下用QB编的程序,时间延迟有可能用的是循环。机器快了,延迟的时间就不对了,单片机的时间不变,就不能传输数据了。
    因此只有两个办法,要么用原来的586,要么重编QB程序。改用VB就行。需要的话,我可以帮你。
      

  2.   

    楼上说的可能是主要原因,如果你有QB程序源代码,可列出来分析一下,因为类似VB下与机器主频无关的SLEEP等延时函数在QB用不了,建议修改程序代码中的延时参数以适应新机器,或改为在DOS下调用DOS或BIOS中断服务程序去实现延时,或者用定时中断累计次数的方法,或干脆用VB重写程序。
    另外,你的奔3机器串口有无问题(可用WINDOWS下的超级终端测试),串口号对否(有的新主板只外接一个RS232串口),DOS版本与原机器一致否(应该是纯DOS),这些都可校验一下。
      

  3.   

    我试了一下,通讯程序在奔腾3的电脑上纯dos状态下能运行,进入windows就不行了,兼容模式也不能运行,请问各位这种情况能有别的办法解决吗?
      

  4.   

    程序中是否用到了系统级的指令?这种指令是会受到windows的限制的
      

  5.   

    如果你知道单片机与PC的通讯协议,干脆自己重写Win32下的程序好了。
      

  6.   

    如果原因是“使用系统级的指令受到windows限制”我们以前586的电脑也是装的windows98,现在奔腾3也是装的98系统;如果是因为“时间延迟有可能用的是循环。机器快了,延迟的时间就不对了,单片机的时间不变,就不能传输数据了。”我在纯dos下运行正常~~~哎,好奇怪~~
    我现在想也只有2个办法可行了,1就是换回586电脑,2就是重新在windows下写了。不过我也不知道这个单片机和电脑之间通讯协议,我只有通讯的程序,知道是用QB写的,听说有可以反编译QB的程序,各位知道在哪能找到呢?我想反编译它,然后自己写好了。