procedure TForm1.ComPortInitialize;
var
lpdcb:Tdcb;
hcom: THandle;
Begin
hcom:=createfile('com1',generic_read or generic_write,0,nil,open_existing,file_flag_overlapped,0);//打开串行口
if hcom=invalid_handle_value then
showMessage('无法打开串口!')
else
begin
SetupComm(hcom,4096,4096); //设置缓冲区长度
getCommState(hcom,lpdcb); //设置串口
lpdcb.baudrate:=9600;
lpdcb.stopbits:=0;
lpdcb.bytesize:=8;
lpdcb.parity:=0;
setCommState(hcom,lpdcb);
SetCommMask(Hcom,ev_Rxchar);
CloseHandle(hcom);
showmessage('设置成功!'); //设置串口事件屏蔽
end;
end;
有什么问题吗?
为什么设置后查看计算机的串口波特率还是原来的啊??
var
lpdcb:Tdcb;
hcom: THandle;
Begin
hcom:=createfile('com1',generic_read or generic_write,0,nil,open_existing,file_flag_overlapped,0);//打开串行口
if hcom=invalid_handle_value then
showMessage('无法打开串口!')
else
begin
SetupComm(hcom,4096,4096); //设置缓冲区长度
getCommState(hcom,lpdcb); //设置串口
lpdcb.baudrate:=9600;
lpdcb.stopbits:=0;
lpdcb.bytesize:=8;
lpdcb.parity:=0;
setCommState(hcom,lpdcb);
SetCommMask(Hcom,ev_Rxchar);
CloseHandle(hcom);
showmessage('设置成功!'); //设置串口事件屏蔽
end;
end;
有什么问题吗?
为什么设置后查看计算机的串口波特率还是原来的啊??
查看计算机串口属性看到的应该是给他设的初值,你在程序是动态改变端口的属性!
可以写一段发送数据程序,用串口秀接收你程序发送的数据试试就知道了啊!
但是我设置了以后是想让其他程序使用这个波特率.
也就是说改变WINDOWS里的串口的波特率,有没有办法?
其他程序没有改变波特率的吗??
那样你为什么不在WINDOWS里把串口属性的波特率直接设为你想要的值就可以了。为什么要那么麻烦啊!
procedure Tform1.comminitialize; // 串 行 口 初 始 化varlpdcb:Tdcb;Beginhcom:=createfile('com2',generic_read or generic_write,0,nil,open_existing, file_attribute_normal or file_flag_overlapped,0);// 打 开 串 行 口 if hcom=invalid_handle_value then else setupcomm(hcom,4096,4096); // 设 置 输 入, 输 出 缓 冲 区 皆 为4096 字 节 getcommstate(hcom,lpdcb); // 获 取 串 行 口 当 前 默 认 设 置 lpdcb.baudrate:=2400; lpdcb.StopBits:=1; lpdcb.ByteSize:=8; lpdcb.Parity:=EvenParity; // 偶 校 验 Setcommstate(hcom,lpdcb); setcommMask(hcom,ev_rxchar); // 指 定 串 行 口 事 件 为 接 收 到 字 符;end;