串口问题,串口是打开的状态,但IsOpen属性显示的是fales,可能哪个地方出现问题?

star_xp 2014-07-13 03:31:22
我定义了一个静态的串口对象,我保证串口是肯定已经打开过的,因为串口在打开状态时指示灯才会亮。但是发数据时在判断串口是否打开时,IsOpen属性却为false....
我写了一个操作串口的类,其他类调用这个串口类中的方法向串口中写数据,可能出现的问题可能在哪里?求大神解答!!!
...全文
809 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
於黾 2014-07-15
  • 打赏
  • 举报
回复
引用 5 楼 star_xp 的回复:
[quote=引用 3 楼 Z65443344 的回复:] 我写了一个操作串口的类 ---------- 要么把类定义成静态类, 要么每次实例化的时候要传入你当前使用的串口实例 否则每次实例化都new一个出来,也没法操作你已经打开的那个串口啊
 class Serial
    {
        public SerialPort serialPort_Base;

        public Serial()
        {
            serialPort_Base = new SerialPort();//应该是这个地方的问题吧?这句话放在什么位置比较合适?
            serialPort_Base.DataReceived += new SerialDataReceivedEventHandler(serialPort_Base_DataReceived);
            serialPort_Base.NewLine = "\r\n";
        }

        internal SerialPort MySerialPort//系统的串口资源属性
        {
            get { return this.serialPort_Base; }
            set { this.serialPort_Base = value; }
        }
    }
[/quote] 你要不用静态,就需要重载构造函数,传递一个串口实例进去,而不是在里面new new完不是又变成一个新的实例了么,跟你已经打开的那个串口没有关系了
star_xp 2014-07-14
  • 打赏
  • 举报
回复
引用 3 楼 Z65443344 的回复:
我写了一个操作串口的类 ---------- 要么把类定义成静态类, 要么每次实例化的时候要传入你当前使用的串口实例 否则每次实例化都new一个出来,也没法操作你已经打开的那个串口啊
 class Serial
    {
        public SerialPort serialPort_Base;

        public Serial()
        {
            serialPort_Base = new SerialPort();//应该是这个地方的问题吧?这句话放在什么位置比较合适?
            serialPort_Base.DataReceived += new SerialDataReceivedEventHandler(serialPort_Base_DataReceived);
            serialPort_Base.NewLine = "\r\n";
        }

        internal SerialPort MySerialPort//系统的串口资源属性
        {
            get { return this.serialPort_Base; }
            set { this.serialPort_Base = value; }
        }
    }
star_xp 2014-07-14
  • 打赏
  • 举报
回复
引用 3 楼 Z65443344 的回复:
我写了一个操作串口的类 ---------- 要么把类定义成静态类, 要么每次实例化的时候要传入你当前使用的串口实例 否则每次实例化都new一个出来,也没法操作你已经打开的那个串口啊
有点懂了,试试先
於黾 2014-07-14
  • 打赏
  • 举报
回复
我写了一个操作串口的类 ---------- 要么把类定义成静态类, 要么每次实例化的时候要传入你当前使用的串口实例 否则每次实例化都new一个出来,也没法操作你已经打开的那个串口啊
villagedog 2014-07-14
  • 打赏
  • 举报
回复
实在不行,重新建一个变量来标识一下吧。
star_xp 2014-07-14
  • 打赏
  • 举报
回复
引用 3 楼 Z65443344 的回复:
我写了一个操作串口的类 ---------- 要么把类定义成静态类, 要么每次实例化的时候要传入你当前使用的串口实例 否则每次实例化都new一个出来,也没法操作你已经打开的那个串口啊
用了静态类,已解决!谢谢了!!
TerryChin 2014-07-13
  • 打赏
  • 举报
回复
是不是重新实例化了一个串口出来? 最好贴下代码,要不然让人家给你猜?

110,499

社区成员

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

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

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