C# 串口通信问题(提示:端口被关闭)

一条路坚持下去 一条路坚持下去 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
string ls = null;
/// <summary>
/// 根据开阀度数打开阀门
/// </summary>
/// <param name="ls_CmdType">指令类型</param>
/// <returns></returns>
private void SendCommand(string ls_CmdType,string ls_CmdTypeStr,int i)
{
DataTable dt = null;
string terstr = null;//临时数据表存储“H_Termina”
string ls_teradds = null;//变量TerAdds
string ls_str = null;//组合参数
//string ls_wk = null;//临时TerminalID
string ls_TerRemark = null;//该设备所属com口
try
{
if (ltvEmp.Items.Count > 0)
{

if (i == -1)
{
terstr = ltvEmp.SelectedItems[0].SubItems[1].Text;
}
else
{
terstr = ltvEmp.Items[i].SubItems[1].Text;
}
isml = terstr;
Reclb = 1;

dt = dbr.getTable("select TerAdds,TerRemark from H_Termina where TerminalID = '" + isml + "'");
ls_teradds = dt.Rows[0][0].ToString();
ls_TerRemark = dt.Rows[0][1].ToString();
switch (ls_CmdType)//如果是开阀就按此格式添加
{
case "K"://开/关阀
ls_str = "I" + ls_teradds.Substring(ls_teradds.Length - 4, 4)
+ ls_TerRemark
+ isml.Substring(isml.Length - 2, 2)
+ ls_CmdType
+ ls_CmdTypeStr;
break;
case "J"://允许巡逻
ls_str = "I" + ls_teradds.Substring(ls_teradds.Length - 4, 4)
+ "000"
+ ls_CmdType;
break;
case "C"://禁止巡逻
ls_str = "I" + ls_teradds.Substring(ls_teradds.Length - 4, 4)
+ "000"
+ ls_CmdType;
break;
case "V"://检查温度
ls_str = "L" + ls_teradds.Substring(ls_teradds.Length - 4, 4)
+ ls_TerRemark
+ "FF"
+ ls_CmdType;
break;
case "T"://检查时间
ls_str = "L" + ls_teradds.Substring(ls_teradds.Length - 4, 4)
+ ls_TerRemark
+ "FF"

+ ls_CmdType;
break;
case "M"://置模式
ls_str = "I" + ls_teradds.Substring(ls_teradds.Length - 4, 4)
+ ls_TerRemark
+ isml.Substring(isml.Length - 2, 2)
+ ls_CmdType
+ ls_CmdTypeStr;
break;
case "H"://搜索汇接器指令1
ls_str = "I0000000J";
break;
case "H2"://搜索汇接器指令2
ls_str = "L0000000X";
break;
default:
ls_str = null;
break;
}

string model = protocol.Getinstance(ls_str)._Model;

756行 spPort.Write(model);//将指令写入串口缓冲区
dt.Clear();
dt.Dispose();

spPort.DiscardOutBuffer();//清理输出缓冲区
spPort.DiscardInBuffer();//清理输入缓冲区


//new protocol().Dispose();//释放类资源
//}

}
}
catch (System.Exception e)
{
MessageBox.Show(e.ToString(), "警告");
}

}

...全文

相关推荐

VSDN虚拟串口工具&C#串口通信小程序源码

简单串口通讯必备的东西都在这里了。个人建议使用的时候先短接2-3口进行测试以免线都不通。

LKyero

C#编程实现串口通信详解

串口通信是计算机与外部设备进行数据交换的重要方式之一,而SerialPort类是.NET框架中用于处理串口通信的核心类。它为开发者提供了丰富的属性和方法,使得串口编程既直观又高效。SerialPort类包含多个事件,允许程序在特定时刻做出响应。一些重要的事件包括::当串口接收缓冲区中有数据可读时触发。Error:当串口发生错误时触发。PinChanged:当串口的某个针脚状态改变时触发。:当串口检测到 BREAK 条件时触发。

Mn孟

C#串口通信调试源码详解

C#中的SerialPort类是用于处理串行端口通信的核心类。通过这个类,开发者可以方便地进行串口数据的发送和接收,设置串口参数,以及处理串口通信过程中发生的事件。它支持同步和异步两种通信方式,使得开发者可以根据应用需求选择最合适的方式。SerialPort类的主要特点包括:- 易于使用:通过属性和方法的集合,可以轻松配置串口。- 灵活性:支持多种编程模式,允许程序在不同线程中处理串口事件。- 可靠性:提供了错误检测和处理机制,帮助开发者编写稳健的通信代码。

序雨

基于c#的串口助手

基于c#做的串口助手,可以用于接收单片机等通过串口传到电脑上的信息

linux滑雪者

手把手教-C# 串口工具

手把手教-C# 串口工具

嵌入式学习和实践
评论 13
收藏 已收藏
分享
返回顶部
一条路坚持下去
C# 111,129 成员 642,539 内容