c#串口程序

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

    首先当然是把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”) 发送12a3则数据为12

    在这里我用的是serialPort1.ReadByte();创建一个byte b = (byte)serialPort1.ReadByte();然后按字节读取,存到一个数组中,我用的是累加和的方式进行的校验。这里遇到的问题是我认为数据需要转化,于是我就转化成16进制发现数据总是不对,后来才知道数据不需要转化,因为我发送的是字节,接收的也是字节,发送的是16进制的数,接收的也是16进制的。直接进行校验累加就可以了。

二.写数据

   写数据也有许多的方法

               serialPort1.WriteLine();//写数据串并写入NewLine的值,NewLine默认为换行符

                serialPort1.Write();//有两种方式1.直接发送字符串,2.(数组,初始,个数)

    我开始发送16进制数据时用的WriteLine()方法,发现接收到的数据不对,改用write方法正确。后来才知道原来WriteLine()方法发送的是字符串,对方接受的也是字符串,serialPort1.Write()发送的才是16进制的数。

serialPort1.BytesToRead, serialPort1 .BytesToWrite分别是接收缓冲区的数个数和发送缓冲区的数个数。

结束语:好了就到这里了, 通过对串口的编程,让我了解了串口数据交换的机制。希望对写单片机上位机的同行有所帮助。


————————————————
版权声明:本文为CSDN博主「goodlifes」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/g1401233424/java/article/details/43405029

posted @ 2020-03-28 14:42  惊风雨  阅读(500)  评论(0编辑  收藏  举报