浅谈SerialPort控件的使用(C#)

来源:互联网 发布:查看网络延时命令 编辑:程序博客网 时间:2024/06/05 08:49
最近的一个小项目中需要从串口读取摄像机的应答指令,因此在程序中用到了SerialPort控件(使用SerialPort类也可以)。在SerialPort控件的属性列表中主要注意3个地方:(1)PortName:表示要打开的通信端口名称;(2)BaudRate:表示端口的波特率;(3)ReceivedBytesThreshold:表示触发SerialPort控件的DataReceived事件前输入缓冲区里的字节数;在这个小项目中,PortName的值为摄像机与电脑连接的端口(可通过设备管理器查看);BaudRate的值与摄像机串口设置的值一致;ReceivedBytesThreshold默认为1,表示当输入缓冲区中有1个字节就触发SerialPort控件的DataReceived事件(在该事件中使用SerialPort.Read读取输入缓冲区中的数据)。
//初始化窗体private void Form1_Load(object sender, EventArgs e)        {            serialPort1.ReceivedBytesThreshold = 1;            serialPort1.PortName = "COM3";            serialPort1.BaudRate = 9600;            serialPort1.Open();//打开串口            serialPort1.DataReceived += new System.IO.Ports.SerialDataReceivedEventHandler(serialPort1_DataReceived);        }
//serialPort1控件的DataReceived事件private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)        {            serialPort1.Read(Data,0,4);//data数组用于存储读取的数据        }

在这个窗体程序中我使用一个Button控件来向摄像机发送查询指令

private void btnSend_Click(object sender, EventArgs e)        {            if (serialPort1.IsOpen == true)            {                serialPort1.Write(Power, 0, 5);//Power数组用于存储发送给摄像机的查询指令            }        }

在加载程序后点击Button按钮,使用断点调试即可看到data数组中的摄像机应答指令。
我这里仅仅简单介绍了SerialPort控件的使用,更加具体的串口通信可以参考这篇博客(http://blog.csdn.net/xwnxwn/article/details/44995045),谢谢大家的阅览。

0 0
原创粉丝点击