前一段时间没事用c#写了一个串口程序,这里总结一下自己的经验

本文介绍了使用C#进行串口编程的经验,包括如何使用serialPort控件进行数据读写。在读取数据部分,提到了ReadByte()方法和其他多种读取方式,并分享了在数据校验过程中遇到的错误和解决办法。而在写数据部分,解释了WriteLine()和Write()方法的区别,强调了Write()方法适用于16进制数据传输。最后,作者分享了串口编程带来的收获,希望能帮助到其他进行单片机上位机开发的开发者。
摘要由CSDN通过智能技术生成

    我第一次写博客求大神指点,在这里我用的是串口控件做的比较简单,如果你想要自己写这个控件网上都有,我就不在这里写了。下面开始进入正题。

    首先当然是把serialPort控件拖到窗口上, 点击这个控件就可以看到它的属性了。点击属性旁边的事件会出现3个事件,双击其中的DataReceived就会自动生成串口接收事件,这个串口接收有自己的缓冲区,当然也可以自己设置一个。当串口有数据时就会触发这个事件,数据就会自动存到这个缓冲区里面去。

然后你就可以调用这个控件的属性就对数据进行写或读取,在这里我主要说一下数据的读写。

一.读取数据

    这个控件有许多读取数据的方法,有下面接几个

                   serialPort1 .Read ();//里面有3个形参,按顺序分别是1.char【】类型或byte【】类型的数组,2.存入数组的开始位置,3存入数据的长度
                    serialPort1 .ReadBufferSize ;//接收缓冲区的大小
                    serialPort1.ReadByte();//接收一个字节
                    serialPort1.ReadChar();//接收一个字符
                    serialPort1.ReadExisting();//接收一串字节流
                    serialPort1.ReadLine();//接收数据到出现NewLine的值停止,serialPort1.NewLine值自己可以设置比如NewLine为“a” 发送12a3,则读取的数据为12,不设置为换行符
                    serialPort1.ReadTo();//读取指定的值如ReadTo(“a”) 发送12a

假设你已经连接好了PLC和电脑,并且已经安装好了PLC通信软件(比如Siemens的Step 7或者Omron的CX-Programmer)。 首先,你需要在PLC中定义一个输入点,作为实体按钮的信号输入。假设你使用的是Siemens的S7-1200 PLC,那么你可以在Step 7中打开项目,选择“硬件”视图,在“输入”节点下添加一个数字输入点(比如I0.0),并将其连接到实体按钮上。 接下来,你需要编写一个C#程序来获取PLC输入点的状态,并控制相应的按钮。假设你使用的是Visual Studio开发环境,那么你可以按照以下步骤进行操作: 1. 创建一个新的Windows Forms应用程序项目。 2. 在设计视图中添加一个按钮控件,并设置其Name属性为“btnControl”。 3. 在工具箱中找到并添加一个SerialPort”组件,并设置其Name属性为“serialPort”。 4. 在按钮的Click事件处理程序中添加以下代码: ``` private void btnControl_Click(object sender, EventArgs e) { if (serialPort.IsOpen) { // 如果串口已经打开 serialPort.Write("1"); // 向串口发送控制命令(这里假设控制命令为1) } } ``` 5. 在程序的Load事件处理程序中添加以下代码: ``` private void Form1_Load(object sender, EventArgs e) { serialPort.PortName = "COM1"; // 设置串口号(这里假设串口号为COM1) serialPort.BaudRate = 9600; // 设置波特率 serialPort.DataBits = 8; // 设置数据位 serialPort.StopBits = StopBits.One; // 设置停止位 serialPort.Parity = Parity.None; // 设置校验位 serialPort.Open(); // 打开串口 } ``` 6. 在程序的Closing事件处理程序中添加以下代码: ``` private void Form1_FormClosing(object sender, FormClosingEventArgs e) { if (serialPort.IsOpen) serialPort.Close(); // 关闭串口 } ``` 7. 最后,在程序的Main函数中添加以下代码: ``` static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new Form1()); } ``` 至此,你已经完成了一个简单的实体按钮控制C#中的按钮的程序。当你按下实体按钮时,PLC会将输入点的状态改变,C#程序会通过串口读取输入点状态,并向串口发送控制命令(这里假设为1),从而控制按钮的状态。注意,这里的串口设置和控制命令都是根据你的具体硬件和应用需求而定的,需要根据实际情况进行调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值