很简单的串口问题,不知道大家遇见过没有~

睡神在睡觉 2009-12-07 10:05:05
               if (Port_Name_Cmb.SelectedIndex != -1)
{
COM_Port.PortName = Port_Name_Cmb.Text;
}
else
{
MessageBox.Show("请确认串口号和波特率是否正确填入!", "错误!",
MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1);
return;
}


if (!COM_Port.IsOpen)
{
COM_Port.Open();
}
else
{
COM_Port.Close();
COM_Port.Open();
}


在判断串口是否打开的时候总是判断是未打开状态,不管它是否打开,不知道大家有人遇见过么?该怎么解决?
...全文
144 17 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
睡神在睡觉 2009-12-10
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 wgsnet 的回复:]
C# code      if (!COM_Port.IsOpen)//判断串口是否打开
                {
                    COM_Port.Open();//如果没有打开就打开该串口
                }
                else
                {
                    COM_Port.Close();//如果打开就先关闭该串口
                    COM_Port.Open();//再打开该串口
                }


每次运行不管是该串口是在打开状态还是关闭状态,都不会进入else,为什么呢?


-----------------------------------


说明已经打开。
[/Quote]

如果串口是打开状态的话应该进入else啊。为什么还是进入if呢
睡神在睡觉 2009-12-10
  • 打赏
  • 举报
回复
to jhdxhj:
用哪个丢弃总是丢弃的太多。所以不怎么愿意用,再说下位机一直往串口回数据,总开着也没用,全是垃圾数据,等需要的时候再开了。

to babyofbaby:
这怎么就跟素质搭上边了?不想多说别的。
zzlfe 2009-12-10
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 koffqs 的回复:]
老实说,看不懂
[/Quote]

串口在已经打开状态下,.net仍然告诉你这个串口没人用哦
zzlfe 2009-12-10
  • 打赏
  • 举报
回复
神奇的.net 设计用户控件时 怪事才多呢...
koffqs 2009-12-10
  • 打赏
  • 举报
回复
老实说,看不懂
babyofbaby 2009-12-10
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 sleep0110 的回复:]
引用 8 楼 babyofbaby 的回复:
这样写试试。
if (COM_Port.Opened)
                {
                    COM_Port.Close();
                    COM_Port.Open();
                }
                else
                {
                    COM_Port.Open();
                }


那我这么写还有什么意义?直接开之前先关下不得了
[/Quote]

这边的人素质都不怎么高啊,别人给你解答问题,你不听就不愿意试就算了,这是什么态度?我还好心专门建了个工程跑了一下,这样写一点问题都没有!
如果不判断,本来是关的你再关一次?
jhdxhj 2009-12-10
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 sleep0110 的回复:]
引用 10 楼 jhdxhj 的回复:
串口如果频繁的开关容易死掉,建议不要频繁的开关,最好是在窗体初始化的时候就打开串口


也不算频繁开关,只有需要的时候才开串口,省的数据堆积把串口堵了,你也可以试试,我说的这个问题不是频繁开关才出现的,一直都有
[/Quote]
你想清除串口中的残留的数据没必要关闭了重新打开的,用串口自带的函数就自己可以清除了
睡神在睡觉 2009-12-10
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 jhdxhj 的回复:]
串口如果频繁的开关容易死掉,建议不要频繁的开关,最好是在窗体初始化的时候就打开串口
[/Quote]

也不算频繁开关,只有需要的时候才开串口,省的数据堆积把串口堵了,你也可以试试,我说的这个问题不是频繁开关才出现的,一直都有
jhdxhj 2009-12-10
  • 打赏
  • 举报
回复
串口如果频繁的开关容易死掉,建议不要频繁的开关,最好是在窗体初始化的时候就打开串口
睡神在睡觉 2009-12-10
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 babyofbaby 的回复:]
这样写试试。
if (COM_Port.Opened)
                {
                    COM_Port.Close();
                    COM_Port.Open();
                }
                else
                {
                    COM_Port.Open();
                }
[/Quote]

那我这么写还有什么意义?直接开之前先关下不得了
babyofbaby 2009-12-10
  • 打赏
  • 举报
回复
这样写试试。
if (COM_Port.Opened)
{
COM_Port.Close();
COM_Port.Open();
}
else
{
COM_Port.Open();
}
睡神在睡觉 2009-12-07
  • 打赏
  • 举报
回复
       if (!COM_Port.IsOpen)//判断串口是否打开
{
COM_Port.Open();//如果没有打开就打开该串口
}
else
{
COM_Port.Close();//如果打开就先关闭该串口
COM_Port.Open();//再打开该串口
}


每次运行不管是该串口是在打开状态还是关闭状态,都不会进入else,为什么呢?
Snowdust 2009-12-07
  • 打赏
  • 举报
回复
不明白你的最后一行字是什么意思
freeboy827 2009-12-07
  • 打赏
  • 举报
回复
判断前没有打开的代码啊
APP开发王 2009-12-07
  • 打赏
  • 举报
回复
C# code if (!COM_Port.IsOpen)//判断串口是否打开
{
COM_Port.Open();//如果没有打开就打开该串口
}
else
{
COM_Port.Close();//如果打开就先关闭该串口
COM_Port.Open();//再打开该串口
}


每次运行不管是该串口是在打开状态还是关闭状态,都不会进入else,为什么呢?



-----------------------------------


说明已经打开。
gghlkk 2009-12-07
  • 打赏
  • 举报
回复
确实是判断不准
我只是根据下面的笨方法提示用户更换连接串口


public bool IsConnect(SerialPort port)
{
if (port.IsOpen)
port.Close();
try
{
port.Open();
port.Close();
}
catch(Exception ex)
{
return false;
}
return true;
}
睡神在睡觉 2009-12-07
  • 打赏
  • 举报
回复
自己顶顶吧。。。

111,092

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧