WindowsServer2008运行Delphi6串口通讯程序问题

最近因迁移一套老系统,是N年前用Delphi6开发的串口通讯程序,该程序在
WindowsServer2000服务器上能正常运行。现在要把这套程序拷贝到一台新
的WindowsServer2008服务器上运行时,发现访问不要前端串口设备,经
检查发现问题的情况大概是这样的:程序中建立串口通讯的参数中波特率是2400,
这个参数用于新服务器上,就不能建立与前端串口设备的通讯,除非改为9600就
可以了(采集程序和前端设备是同一个没有改变)。
想请教大家的是:
为什么同样的程序,在WIN2000和WIN2008下运行会出现
这样的问题呢?如果不改源程序中的通讯参数(波特率),是否能解决呢?

5个回答

你试试在 2008 系统中操作超级终端,看看其中串口设置时是否有 2400 可选?偶刚才试过 WinXP 是有的。
如果没有,则只能用系统支持的波特率。

你的计算机硬件有变化么?如果仅仅是操作系统的问题,可以试试看虚拟机

谢谢两位的回复,我尝试了用别的串口程序,包括我自己用C#写的小程序,都能建立通信的,只是这个老程序不行,
这个老程序在老服务器上(WINDOWS200SERVER)上立马就正常。
我把老程序中的通信波特率改为9600后,用监控程序能看到串口有收、发字节的,数量应该也正确,但是程序就是不能接收到返回的数据,
看来这个接收的地方可能有问题吧?

回复caozhy,你说的“试试虚拟机”,具体是怎么个试法呢?硬件没有变化。

就是说在你的服务器上安装一个虚拟机软件,比如windows virtual pc或者vmware station,然后在里面安装早期的操作系统,比如说windows 2000/xp

fsstolw
fsstolw 是通过一个USB转多串口器连接多个远程设备的,我担心VS系统在处理串口通讯上会有问题。 我最终的解决方案是这样的:2. ReadFile()和WriteFile()方法的使用 在程序中,每个WM_COMMNOTIFY()函数中都使用了对串口的读缓冲文件方法 ReadFile(hCurCommFile,InputBuffer,CommState.cbInQue, dwNumberOfBytesRead,@Read_Os1) 然后在该方法后使用了以下函数 WaitForSingleObject(hCurCommFile,INFINITE); 此方法是用来无限等待消息返回,结果程序在WIN2008系统中,得不到COM口返回的数据,就停留在这里一直等待,所以最终的解决方案是将第二个函数屏蔽后,程序即可运行正常。
接近 5 年之前 回复
fsstolw
fsstolw 曹老大,非常感谢你的热心帮助! 这个问题最终我没有敢采取你的这个方案,原因是这个采集系统是通过一个USB转多
接近 5 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!