c# 打开串口 SerialPort1.open()的问题 c# 打开串口 SerialPort1.open()的问题 提示无法支持请求。谁知道!!!!! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你可以参考一下这个!还有检查一下你端口参数有没有设置正确/****************************************************************** * Copyright(c) : Tangxu * Description : * CreateDate : 2006-9-01 04:53:08 * Creater : Tang.xu * LastChangeDate: * LastChanger : * Version Info : 1.0.0 * ******************************************************************/ using System; using System.IO.Ports; using System.Threading; using System.Text; namespace Tangxu.Common { public class ReadCom { public ReadCom() { _ReadConfig = new ReadConfigure(System.Environment.CurrentDirectory + "\\Com_Info.xml"); } public ReadCom(string sCom,int nBaud):this() { } private byte[] _ReadBuffer; private SerialPort ss_port = new SerialPort(); private static int nReadCount = 0; private ReadConfigure _ReadConfig; #region Initialize com port public bool InitCom()//初始化建串口类实例 { // return true; try { ss_port.PortName = _ReadConfig.GetNodeValue("PORT");// _sComPort; ss_port.BaudRate = int.Parse(_ReadConfig.GetNodeValue("BAUD"));//_nBaud; ss_port.ReadBufferSize = 10240; ss_port.DataBits = int.Parse(_ReadConfig.GetNodeValue("DATA"));//8; switch (_ReadConfig.GetNodeValue("PARITY")) { case "None": ss_port.Parity = Parity.None; break; case "Even": ss_port.Parity = Parity.Even; break; case "Mark": ss_port.Parity = Parity.Mark; break; case "Odd": ss_port.Parity = Parity.Odd; break; case "Space": ss_port.Parity = Parity.Mark; break; } switch (_ReadConfig.GetNodeValue("STOP")) { case "1": ss_port.StopBits = StopBits.One; break; case "1.5": ss_port.StopBits = StopBits.OnePointFive; break; case "2": ss_port.StopBits = StopBits.Two; break; } ss_port.ReadTimeout = 600; ss_port.WriteTimeout = 700; ss_port.Open();//打开串口 return true; } catch (Exception ex) { throw new Exception("打开串口失败!\r\n错误信息:" + ex.Message); } } #endregion #region FreeDrv /// <summary> /// free opw /// </summary> public void FreeDrv() { try { if (ss_port != null) { ss_port.Close(); } } catch { } } #endregion #region Write command to OPW /// <summary> /// 发操作命令给OPW设备 /// 并返回状态 /// </summary> /// <param name="sCommand"> </param> /// <returns> </returns> public string WriteCommand(string sCommand) { StringBuilder sb = new StringBuilder(); bool bRead = true; try { ss_port.DiscardInBuffer(); ss_port.Write(sCommand); Thread.Sleep(1500); while (bRead) { _ReadBuffer = new byte[ss_port.BytesToRead]; ss_port.Read(_ReadBuffer, 0, _ReadBuffer.Length); sb.Append(Encoding.ASCII.GetString(_ReadBuffer)); Thread.Sleep(500); if (ss_port.BytesToRead <= 0) { bRead= false; } } if (sb.ToString().Length== 0) { nReadCount++; } if (nReadCount == 3) { nReadCount = 0; throw new Exception("设置不正确或没有联接设备!"); } } catch (Exception ex) { throw new Exception("从设备获取数据失败!\r\n错误信息:" + ex.Message); } return sb.ToString(); ; } public string WriteCommand(byte[] bCommand) { StringBuilder sb = new StringBuilder(); bool bRead = true; try { ss_port.DiscardInBuffer(); ss_port.Write(bCommand,0,bCommand.Length); Thread.Sleep(1500); while (bRead) { _ReadBuffer = new byte[ss_port.BytesToRead]; ss_port.Read(_ReadBuffer, 0, _ReadBuffer.Length); sb.Append(Encoding.ASCII.GetString(_ReadBuffer)); Thread.Sleep(500); if (ss_port.BytesToRead <= 0) { bRead = false; } } if (sb.ToString().Length == 0) { nReadCount++; } if (nReadCount == 3) { nReadCount = 0; throw new Exception("设置不正确或没有联接设备!"); } } catch (Exception ex) { throw new Exception("从设备获取数据失败!\r\n错误信息:" + ex.Message); } return sb.ToString(); } #endregion #region Get All COM Port public string[] GetAllComPort() { string[] sAllPort = null; try { sAllPort = SerialPort.GetPortNames(); } catch (Exception ex) { throw new Exception("获取计算机COM口列表失败!\r\n错误信息:" + ex.Message); } return sAllPort; } #endregion } } 用了MSCOMM32.ocx 就可以打开了。不是端口被占用 到底要如何学C#? c# 安装程序和更新程序制作 求一个正则表达式 读缓冲区 C#,如何接收系统关机消息? VB To C# 的几个问题 C、C++、C#有什么分别和联系 在C#中如何调用ACE的动态库 困扰多日,200分求解 c# 串口编程所涉及到的技术和知识(B/S转C/S) 类似银行卡刷卡的东东 C# SaveFileDialog() 中,如何让文件名只读?
还有检查一下你端口参数有没有设置正确
/******************************************************************
* Copyright(c) : Tangxu
* Description :
* CreateDate : 2006-9-01 04:53:08
* Creater : Tang.xu
* LastChangeDate:
* LastChanger :
* Version Info : 1.0.0
* ******************************************************************/
using System;
using System.IO.Ports;
using System.Threading;
using System.Text; namespace Tangxu.Common
{
public class ReadCom
{
public ReadCom()
{
_ReadConfig = new ReadConfigure(System.Environment.CurrentDirectory + "\\Com_Info.xml");
} public ReadCom(string sCom,int nBaud):this()
{
} private byte[] _ReadBuffer;
private SerialPort ss_port = new SerialPort();
private static int nReadCount = 0;
private ReadConfigure _ReadConfig; #region Initialize com port public bool InitCom()//初始化建串口类实例
{
// return true;
try
{
ss_port.PortName = _ReadConfig.GetNodeValue("PORT");// _sComPort;
ss_port.BaudRate = int.Parse(_ReadConfig.GetNodeValue("BAUD"));//_nBaud;
ss_port.ReadBufferSize = 10240;
ss_port.DataBits = int.Parse(_ReadConfig.GetNodeValue("DATA"));//8;
switch (_ReadConfig.GetNodeValue("PARITY"))
{
case "None":
ss_port.Parity = Parity.None;
break;
case "Even":
ss_port.Parity = Parity.Even;
break;
case "Mark":
ss_port.Parity = Parity.Mark;
break;
case "Odd":
ss_port.Parity = Parity.Odd;
break;
case "Space":
ss_port.Parity = Parity.Mark;
break;
}
switch (_ReadConfig.GetNodeValue("STOP"))
{
case "1":
ss_port.StopBits = StopBits.One;
break;
case "1.5":
ss_port.StopBits = StopBits.OnePointFive;
break;
case "2":
ss_port.StopBits = StopBits.Two;
break;
}
ss_port.ReadTimeout = 600;
ss_port.WriteTimeout = 700; ss_port.Open();//打开串口
return true;
}
catch (Exception ex)
{
throw new Exception("打开串口失败!\r\n错误信息:" + ex.Message);
}
}
#endregion #region FreeDrv
/// <summary>
/// free opw
/// </summary>
public void FreeDrv()
{
try
{
if (ss_port != null)
{
ss_port.Close();
}
}
catch
{ }
}
#endregion #region Write command to OPW
/// <summary>
/// 发操作命令给OPW设备
/// 并返回状态
/// </summary>
/// <param name="sCommand"> </param>
/// <returns> </returns>
public string WriteCommand(string sCommand)
{
StringBuilder sb = new StringBuilder();
bool bRead = true;
try
{
ss_port.DiscardInBuffer();
ss_port.Write(sCommand);
Thread.Sleep(1500);
while (bRead)
{
_ReadBuffer = new byte[ss_port.BytesToRead];
ss_port.Read(_ReadBuffer, 0, _ReadBuffer.Length);
sb.Append(Encoding.ASCII.GetString(_ReadBuffer));
Thread.Sleep(500);
if (ss_port.BytesToRead <= 0)
{
bRead= false;
}
}
if (sb.ToString().Length== 0)
{
nReadCount++;
} if (nReadCount == 3)
{
nReadCount = 0;
throw new Exception("设置不正确或没有联接设备!");
}
}
catch (Exception ex)
{
throw new Exception("从设备获取数据失败!\r\n错误信息:" + ex.Message);
}
return sb.ToString(); ;
} public string WriteCommand(byte[] bCommand)
{
StringBuilder sb = new StringBuilder();
bool bRead = true;
try
{
ss_port.DiscardInBuffer();
ss_port.Write(bCommand,0,bCommand.Length);
Thread.Sleep(1500);
while (bRead)
{
_ReadBuffer = new byte[ss_port.BytesToRead];
ss_port.Read(_ReadBuffer, 0, _ReadBuffer.Length);
sb.Append(Encoding.ASCII.GetString(_ReadBuffer));
Thread.Sleep(500);
if (ss_port.BytesToRead <= 0)
{
bRead = false;
}
}
if (sb.ToString().Length == 0)
{
nReadCount++;
} if (nReadCount == 3)
{
nReadCount = 0;
throw new Exception("设置不正确或没有联接设备!");
}
}
catch (Exception ex)
{
throw new Exception("从设备获取数据失败!\r\n错误信息:" + ex.Message);
}
return sb.ToString();
}
#endregion #region Get All COM Port
public string[] GetAllComPort()
{
string[] sAllPort = null;
try
{
sAllPort = SerialPort.GetPortNames();
}
catch (Exception ex)
{
throw new Exception("获取计算机COM口列表失败!\r\n错误信息:" + ex.Message);
}
return sAllPort;
}
#endregion
} }