首页 > 教育培训

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

高分求救c#读取rs485串口寄存器状态?

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

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

_newsystem.eventhandler(this.button_openport_click)//打开串口没绑定事件

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

_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.串口的先打开与关闭这个也挺简单点,主要是确认当前串口是否需要打开,如果不是没有的话,就先打开,privatevoidbutton_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的属性,是可以自己设置时间

原文标题:excel 串口控件 高分求救C#读取RS485串口寄存器状态?,如若转载,请注明出处:https://www.taihaichina.com/tag/9072.html
免责声明:此资讯系转载自合作媒体或互联网其它网站,「泰海号」登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述,文章内容仅供参考。