SerialPort端口通信

本文介绍了一种通过C#实现串口通信的方法,包括获取可用串口名称、打开串口、发送及接收数据的过程。文中提供了具体的代码实现,如读取注册表获取串口名、设置串口参数并打开串口、定义数据发送格式以及使用委托处理接收的数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

遍历机器上的SerialPort

 1:  public static List<string> funList_SerialPortName()
 2:  {
 3:      List<string> lst = new List<string>();
 4:      RegistryKey keyCom = Registry.LocalMachine.OpenSubKey("Hardware\\DeviceMap\\SerialComm");
 5:      if (keyCom != null)
 6:      {
 7:          string[] sSubKeys = keyCom.GetValueNames();
 8:          foreach (string sName in sSubKeys)
 9:          {
10:              string sValue = (string)keyCom.GetValue(sName);
11:              lst.Add(sValue);
12:          }
13:      }
14:      return lst;
15:  }

打开一个端口

 1:  public static void subAlarm_Open(ref System.IO.Ports.SerialPort sp)
 2:  {
 3:      if (sp.IsOpen)
 4:      {
 5:          sp.Close();
 6:      }
 7:      string strSQL = "select AlarmPort,AlarmRate from Basic_PortInfo";
 8:      DataSet ds = new DataSet();
 9:      ds = IdioSoft.ClassDbAccess.ClassDbAccess.funDataset_SQLExecuteNonQuery(strSQL);
10:      sp.PortName = ds.Tables[0].Rows[0]["AlarmPort"].ToString();
11:      sp.BaudRate = ds.Tables[0].Rows[0]["AlarmRate"].ToString().funInt_StringToInt(0);
12:      //停止位等信息也是在这个地方初使化
13:      try
14:      {
15:          sp.Open();
16:      }
17:      catch
18:      {
19:      }
20:  }

发送指令

1:  //发送防区指令
2:  byte[] data = ClassCommand.funString_SubLineZone(CurrentSubLineIndex - 1, intFQ, strStatus);//返回一个byte[]
3:  spAlarm.Write(data, 0, data.Length);

接收指令,这个需要用用委托来实现

1:  delegate void delgSpReceived();
2:  delgSpReceived objdelgSpReceived;
3:  objdelgSpReceived = new delgSpReceived(subSpAlarm_Received);

委托过程

1:  private void subSpAlarm_Received()
2:  {
3:      //操作代码
4:  }

转载于:https://www.cnblogs.com/trueideal/archive/2010/02/28/1675060.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值