win2000串口问题?(不容忽视)(5分)

  • 主题发起人 主题发起人 freddyzhu
  • 开始时间 开始时间
F

freddyzhu

Unregistered / Unconfirmed
GUEST, unregistred user!

不知各位可发现如下现象:
在win2000的 计算机管理/设备管理器/端口/通讯端口(com1)/属性/端口设置
内将“每秒位数=9600”修改为“每秒位数=7200”,
再在dos下执行 “mode com1” 发现 其波特率没有改变, 仍为9600。不知是何原因?

另外不知有谁用过利用CommConfigDialog修改串口参数没有?
下面这段程序在win98下修改串口参数成功,但在win2000下不成功,不知可有方法解决?
procedure TForm1.Button1Click(Sender: TObject);
var
Tmpdcb: Tdcb;
TimeOuts: COMMTIMEOUTS;
fpdisp: HWND;
aCommCfg:_commConfig;
asize: Cardinal;
begin
fpdisp:=createfile('COM1',
generic_read or generic_write,
0,
Nil,
open_existing,
file_attribute_normal or file_flag_overlapped,
0);
aSize := sizeof(aCommCfg);
CommConfigDialog('COM1',0,aCommCfg);
GetCommConfig(fpdisp,aCommCfg,asize);
SetCommConfig(fpdisp,acommCfg,aSize);
CommConfigDialog('COM1',0,aCommCfg);
CloseHandle(fpdisp);
end;

还有:
在直接在win2000dos命令符下执行“dir >com1”成功,但在win2000程序内执行
WinExec('command.com /c dir c:/w/p >COM1',sw_Normal);
出错,提示为:
“Write fault error writing device COM1
Abort, Retry, Ignore, Fail?”

请大家勇跃讨论。
 
请多指教
 
难道没人知道吗?
没这么难吧?
 
我用Mscomm控件处理串口,好像没你的问题
 
“还有”的问题:
command.com /c dir c:/w/p >COM1
改成
cmd.exe /c dir c:/w/p >COM1
就可以了(nt/2000用cmd)
 
1、去掉file_flag_overlapped这个属性看看
 
Pipi:
我将其改成
WinExec('cmd.com /c dir c:/w/p >COM1',sw_Normal);
后执行,毫无反应,dos提示符窗口都未曾出现

去掉file_flag_overlapped属性后果真可以。
谢谢

 
接受答案了.
 
是cmd.exe 不是cmd.com
 
还有一个问题没解决
CommConfigDialog('COM1',0,aCommCfg);
并不能成功修改COM1端口的参数,
且mode COM1修改与
在win2000的 计算机管理/设备管理器/端口/通讯端口(com1)/属性/端口设置
内参数不同步

mode COM1 的奇偶校检位的参数不知如何传递


 

Similar threads

后退
顶部