VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1782|回复: 3

为什么会提示端口已打开的错误

[复制链接]

2

主题

2

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
发表于 2021-3-15 12:00:02 | 显示全部楼层 |阅读模式
procedure TForm1.FormActivate(Sender: TObject);
begin

     MSComm1.CommPort:=1;
     MSComm1.Settings:='9600,n,8,1';
     MSComm1.InBufferSize:=32;
     MSComm1.OutBufferSize:=2;
     MSComm1.InputMode:=comInputModeBinary;//设置接收数据模式为二进制形式
     MSComm1.InputLen := 1;      //设置Input 一次从接收缓冲读取字节数为1
     MSComm1.InputLen:=1;        //设置Input 一次从接收缓冲读取字节数为1
     MSComm1.SThreshold:=1;      //设置Output 一次从发送缓冲读取字节数为1
     MSComm1.InBufferCount:=0;   //清除接收缓冲区
     MSComm1.OutBufferCount:=0;  //清除发送缓冲区
     MSComm1.PortOpen:=true;     //打开串口1
     
end;

procedure TForm1.ComboBox1Change(Sender: TObject);
begin

     MSComm1.CommPort:=2;
     MSComm1.Settings:='9600,n,8,1';
     MSComm1.InBufferSize:=32;
     MSComm1.OutBufferSize:=2;
     MSComm1.InputMode:=comInputModeBinary;//设置接收数据模式为二进制形式
     MSComm1.InputLen := 1;      //设置Input 一次从接收缓冲读取字节数为1
     MSComm1.InputLen:=1;        //设置Input 一次从接收缓冲读取字节数为1
     MSComm1.SThreshold:=1;      //设置Output 一次从发送缓冲读取字节数为1
     MSComm1.InBufferCount:=0;   //清除接收缓冲区
     MSComm1.OutBufferCount:=0;  //清除发送缓冲区
     MSComm1.PortOpen:=true;     //打开串口1
end;


当我改变下拉框(ComboBox1Change),
出现的错误是:
端口已打开
可是我初始化只打开了 串口1 啊
ComboBox1Change
是打开串口2

为什么不行呢?
谢谢!
回复

使用道具 举报

1

主题

13

帖子

11.00

积分

新手上路

Rank: 1

积分
11.00
发表于 2021-3-15 15:15:02 | 显示全部楼层
是不是ComboBox1Change在建立的时候已经被调用了?
回复

使用道具 举报

0

主题

8

帖子

9.00

积分

新手上路

Rank: 1

积分
9.00
发表于 2021-3-15 15:30:01 | 显示全部楼层
procedure TForm1.ComboBox1Change(Sender: TObject);
begin
     MSComm1.PortOpen := False; //<<先关掉看看
     MSComm1.CommPort:=2;
//...
     MSComm1.PortOpen:=true;     //打开串口1
end;
回复

使用道具 举报

1

主题

3

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
发表于 2021-3-29 16:44:32 | 显示全部楼层
谢谢!谢谢!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表