C#串口通讯接收发送数据

串口连接有几个必须要设置的值:串口,波特率,校验位,数据位,停止位

目录

一、实例化串口通讯类

 二、打开串口/关闭串口

三、发送数据:hex十六进制发送或ascll发送

四、十六进制字符串转byte【】 

 五、接收数据:hex十六进制接收或ascll接收

六、定时发送 

七、将接收到的消息导出txt文件


简单串口通讯效果图

串口:获取串口

            string[] ports = SerialPort.GetPortNames();
            foreach (string port in ports)
            {
                CbCom.Items.Add(port);
            }

            CbCom.SelectedIndex = 0;

波特率: 波特率单位是bit/s,代表是每秒传递多少个bit,也就是多少个位。一般使用9600

                波特率代表串口的传输数据能力,波特率越高传输数据越快,但是太高会出现传输数据不稳定的问题;发送方与接收方波特率要保持一致。 CbBaudRate.SelectedIndex = 5;

校验位: C#中有Parity枚举类型设置校验位。一般使用None无校验,Odd奇校验,Even偶检验。

comboBox4.SelectedIndex = 0; 

 数据位:一般情况下使用8,其他的也可以设置  CbDataBits.SelectedIndex = 3;

停止位: C#中StopBits枚举类型设置停止位,默认值设置1 StopBits.One     CbStopBits.SelectedIndex = 1;

 

一、实例化串口通讯类

SerialPort sp = new SerialPort();//实例化串口通讯类

private System.Timers.Timer tmr = new System.Timers.Timer();//实例化定时发送定时器
private object obj = new object();//锁


           

页面初次加载时
sp.DataReceived += new SerialDataReceivedEventHandler(sp_DataReceived);//接收数据事件
sp.Encoding = System.Text.Encoding.GetEncoding("GB2312");//编码类型

tmr.Elapsed += new System.Timers.ElapsedEventHandler(OnTmrTrg);定时事件
tmr.Interval =(double)numericUpDown4.Value;//定时发送间隔时间
tmr.AutoReset = true; //true-一直循环 ,false-循环一次   
tmr.Enabled = false;

 二、打开串口/关闭串口

if (button1.Text == "打开串口")
            {
                sp.PortName = CbCom.Text;//串口
                sp.BaudRate =int.Parse(CbBaudRate.Text);//波特率
                sp.DataBits=int.Parse(CbDataBits.Text);//数据位
                sp.StopBits=(StopBits)int.Parse(CbStopBits.Text);//停止位
                if (sp.IsOpen)
                {
                    sp.Close();
                    sp.Open();
                }
                else
                {
                    sp.Open();
&nb

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值