最近做串口通信的程序 用的是一个串口通信的类JustinIO
using JustinIO;static JustinIO.CommPort ss_port = new JustinIO.CommPort();
ss_port.PortNum = COM1; //端口号
ss_port.BaudRate = 9600; //串口通信波特率
ss_port.ByteSize = 8; //数据位
ss_port.Parity = 0; //奇偶校验
ss_port.StopBits = 1;//停止位
ss_port.ReadTimeout = 1000; //读超时……
相信做过串口通信程序的人对这个类一定不陌生吧
我的问题是,这样子做出来的通信程序每次初始化表面成功了
但是实际上却没有成功
需要第三方软件帮助初始化一下以后再用才可以
如果再重启电脑就又不行了,如果只是重启软件还可用行
第三方工具是一个叫sscom32.exe的串口调试程序请问C#里面应该怎么修改才可以自己初始化???急

解决方案 »

  1.   

    这个类我不懂~但是一没打开,二没清0,.NET自己就有串口通信的类~怎么不用???
      

  2.   

    如果sscom32.exe运行已经占用端口的话,运行你的程序时会打不开相同端口的
      

  3.   

    我的是
    timerIO.Enabled = true;
                jc.PortNum = m_port;//串口号
                jc.BaudRate = m_baudrate;//波特率
                jc.ByteSize = 8;//数据位
                jc.Parity = 0;
                jc.StopBits = 1;//停止位
                jc.ReadTimeout = 100;//超时
                try
                {
                    if (jc.Opened)
                    {
                        jc.Close();
                        jc.Open();
                    }
                    else
                    {
                        jc.Open();
                    }
                    //MessageBox.Show("ok");
                    return true;
                }
                catch (Exception e)
                {
                    MessageBox.Show("Error:" + e.Message);
                    return false;
                }
      

  4.   

    在mycom.write()之后就可以立马用mycom.read()收数据了
    问题还是需要三方软件帮助初始化一次以后才可以
      

  5.   

    我的不用啊,干嘛要初始化啊,我的就用上面的代码就可以初始化了,如果超时默认1000的话,程序运行会感到慢,把为100就行了
    我程序只调用下面的东西就可以打开串口了
    public bool InitCom(string m_port, int m_baudrate)
            {
                timerIO.Enabled = true;
                jc.PortNum = m_port;//串口号
                jc.BaudRate = m_baudrate;//波特率
                jc.ByteSize = 8;//数据位
                jc.Parity = 0;
                jc.StopBits = 1;//停止位
                jc.ReadTimeout = 100;//超时
                try
                {
                    if (jc.Opened)
                    {
                        jc.Close();
                        jc.Open();
                    }
                    else
                    {
                        jc.Open();
                    }
                    //MessageBox.Show("ok");
                    return true;
                }
                catch (Exception e)
                {
                    MessageBox.Show("Error:" + e.Message);
                    return false;
                }
            }
      

  6.   

    当然,我的是投币器的,我的timerIO Enabled 时,就开始工作了。我的没有发信息的,只有收信息的,即0.5s内读一下,string input = Encoding.ASCII.GetString(jc.Read(128)); 
    if (input.Length > 0)
    if(input==...)
    {
    ...
    }
      

  7.   

    public bool InitCom(string m_port, int m_baudrate)
            {
                timerIO.Enabled = true;
                jc.PortNum = m_port;//串口号
                jc.BaudRate = m_baudrate;//波特率
                jc.ByteSize = 8;//数据位
                jc.Parity = 0;
                jc.StopBits = 1;//停止位
                jc.ReadTimeout = 100;//超时
                try
                {
                    if (jc.Opened)
                    {
                        MessageBox.Show("原来已经打开串口");
                        jc.Close();
                        jc.Open();
                    }
                    else
                    {
                        jc.Open();
                    }
                    MessageBox.Show("成功打开串口");
                    return true;
                }
                catch (Exception e)
                {
                    MessageBox.Show("Error:" + e.Message);
                    return false;
                }
            }看看提示什么?
      

  8.   

    我看你的问题跟我一样;我虽然已经找到问题所在;但目前没有解决.
          jc.ByteSize = 8;//数据位我用串口跟踪器看;ByteSize为7很奇怪;应该是8才对啊