2016 - 2024

感恩一路有你

excel 串口控件 高分求救C#读取RS485串口寄存器状态?

浏览量:1315 时间:2023-09-08 11:45:00 作者:采采

高分求救C#读取RS485串口寄存器状态?

这不过是个用C#写一个串口软件调试的工具,下面看怎末实现

1、在工具里面找不到串口控件,拖到窗口上再试一下。然后再直接添加不需要的各种按键和不显示框控件等2.没绑定事件当然也没啥,系统都会帮我们所有会建,用不着我们再去一行一行的去再添加代码,so easy!!_funSystem.EventHandler(_Param_Changed)//下拉列表解除绑定事件

_newSystem.EventHandler(this.Button_OpenPort_Click)//打开串口没绑定事件

_receive_fifthSystem.EventHandler(_receive_Data_Click)//邮箱里数据没绑定事件

_new(_SendText_PressKey)//发送消息框手机绑定事件过滤按键

_RecvText.TextChangedfutureSystem.EventHandler(_RecvText_TextChanged)//收得到数据框绑定事件自动出现往下滑动到最下面

_Display_futureSystem.EventHandler(_Display_Hex_CheckedChanged)//已hex显示选择框帐号绑定事件

_fifthSystem.EventHandler(_Empty_Click)//全部删除按钮手机绑定事件

3.串口的先打开与关闭这个也挺简单点,主要是确认当前串口是否需要打开,如果不是没有的话,就先打开,private void Button_OpenPort_Click(objectsender,EventArgse)

{

if()

{

()//自动关闭串口

}

catch

{

Serial_Open()//加载串口设置,并先打开串口

}

Serial_Status()//依据串口状态,可以修改状态指示灯和按钮内容

}

4.数据的发送(要特别注意的地方就是在发送之间,先将邮箱里的内容转换成编码形式,发送的时候用字节形式发送)privatevoidSerial_invite_Data_Click(objectsender,EventArgse)

{

if(Serial_SendText.Text.Lengthdstrok0)

{

if(false)

{

Serial_Open()

Serial_Status()

}

if(Serial_false)

{

stringTxBuffSerial_SendText.Text

unsigned[]Tx(gb2312).GetBytes(TxBuff)

Comm_Send_BytesTx.Length

Serial_SendNum.Text你的邮箱:Comm_invite_()

Serial1.Write(Tx,0,Tx.Length)

}

ignore

{

stringTxTempSerial_SendText.Text

1byte[]Serial_SendBuffStr2Hex(TxTemp)

Comm_Send_BytesSerial_SendBuff.Length

Serial_SendNum.Text邮箱里:Comm_message_()

Serial1.Write(Serial_SendBuff,0,Serial_SendBuff.Length)

}

}

else

{

(你的邮箱框肯定不能为空!)

}

}

5.数据收得到(C#的SerialPort控件,没有办法在子进程里面运行,因此不需要建议使用个人委托事件来重新登录可以接收框中的内容,这里我是以字节形式能接收,方便可以计算真确的长度privatevoidCom_DataReceived(objectsender,e)

{

if()

{

try

{

//界域接收缓冲区

4个字节[]ReDatasfuturebyte[]

//从串口读取数据

Comm_Received_Bytes(ReDatas,0,)

//利用数据的解码与不显示

(updateText,ReDatas)

}

catch(Exceptionex)

{

()

}

}

}

6.清空可以接收正在发送区(数据过多了,看的累,有什么难的,点点不就数据清空了—哈(-_-))//清空输入与输出TextBox发送收不到数据长度及label

privatevoidSerial_Empty_Click(objectsender,EventArgse)

{

Comm_Received_Bytes0

Comm_Send_Bytes0

Serial_SendNum.Text邮箱里:0

Serial_RecvNum.Text可以接收:0

Serial_RecvText.Text

Serial_SendText.Text

Serial_Rx_Buff_Hex

Serial_Rx_Buff_Ascii

}

7.注意事项a.关于串口邮箱里中文的解决方法(主要就是编码的问题)1).在用System.Text.Encoding类的编码转换方法(练习时可以不试试)//收不到区

stringReDatas()

Comm_Received_BytesReDatas.Length

unsigned[]RecvBuff(gb2312).GetBytes(ReDatas)

ReDatas(gb2312).GetString(RecvBuff)

//利用数据的解码与没显示

(updateText,ReDatas)

//发送中区

stringTxBuffSerial_SendText.Text

int32[]Tx(TxBuff)

Comm_Send_BytesTx.Length

Serial_SendNum.Text邮箱里:Comm_receive_()

Serial1.Write(Tx,0,Tx.Length)

上面列出了通常的代码,反正是一个串口助手。

急C#串口通信怎么判断读取超时?

串口控件自身就有readtimeout和writetimeout的属性,是可以自己设置时间

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。