C# 串口通讯问题,大家帮忙解决一下@@@
是这样的 我在网上弄了一个代码,串口通讯的,出现的问题在于 这个串口通讯的代码 不好用。
如何不好用法
01 单独运行它 ,发送不出去数据。
02 当我开启串口测试助手之后,再把串口测试助手关闭,在运行就可以用
03 我问了 好多人,说 可能是初始化的问题,或者是串口到底有没有打开。
大家能帮忙解决一下这个问题吗?
------解决方案--------------------1.检查COM口号对不对
2.检查参数,停止位、校验位、数据位
3.降低波特率,比如9600、4800
4.延长Timeout,或者取消Timeout再试
------解决方案--------------------建议楼主检查一下CardCom和this.Open()的关系,感觉你对前者进行了参数设置,但是Open的时候是否就是调用了前者呢?因为没看到你的Open()时有什么参数?
------解决方案--------------------补充一下:也许把下面这里改一下试试
if (this.OpenCom())
改为
if (cardCom.OpenCom())
------解决方案--------------------using System;
using System.IO.Ports;
namespace WinTempApp
{
  public class PortData
   {
       public event PortDataReceivedEventHandle Received;
       public event SerialErrorReceivedEventHandler Error;  
       public SerialPort port;
       public bool ReceiveEventFlag = false;  //接收事件是否有效 false表示有效
       public bool OpenPortLost;
       private string logCaption = "PortData";
       public PortData(string sPortName, int baudrate,Parity parity,StopBits stopbit)
       {
           try
           {
               port = new SerialPort(sPortName, baudrate, parity, 8, stopbit);
               port.RtsEnable = true;
               port.ReadTimeout = 3000;
               port.DataReceived += DataReceived;
               port.ErrorReceived += ErrorEvent;
               OpenPortLost = false;
           }
           catch (Exception ex)  
           {
               OpenPortLost = true;
               LogFile.LogMessage(String.Format("{0}:{1}", logCaption, ex.Message), AppEnum.Exception.ToString());
           }          
       }
       ~PortData()
       {
           Close();
       }
      /// <summary>
      /// COM端口打开
      /// </summary>
       public void Open()
       {
           if (!port.IsOpen)
           {          
               port.Open();
           }
       }
       public void Close()
       {
           try
           {
               if (port.IsOpen)
               {
                   port.Close();
               }
           }
           catch (Exception ex)
           {
               LogFile.LogMessage(String.Format("{0}:{1}", logCaption, ex.Message), AppEnum.Exception.ToString());
           }       
       }
       //数据发送
       public void SendData(byte[] data)
       {
           try
           {
               if (port.IsOpen)
               {
                   port.Write(data, 0, data.Length);
               }
           }
           catch (Exception ex)  
           {
               LogFile.LogMessage(String.Format("{0}:{1}", logCaption, ex.Message), AppEnum.Exception.ToString());
           }
       }
       public void SendData(byte[] data,int offset,int count)
       {
           try
           {
               if (port.IsOpen)
               {
                   port.Write(data, offset, count);
               }
           }
           catch (Exception ex)
           {
               LogFile.LogMessage(String.Format("{0}:{1}", logCaption, ex.Message), AppEnum.Exception.ToString());
           }
       }      
       //发送命令
       public int SendCommand(byte[] SendData, ref  byte[] ReceiveData,int Overtime)
       {
           try