c# 串口数据接收

串口数据:

接收:

public static string aa="";
        private void serialPort_DataReceived(object sender, SerialDataReceivedEventArgs e)
        {
            string s100 = "";
            System.Threading.Thread.Sleep(100);
            int bytes = serialPort.BytesToRead;
            byte[] buffer = new byte[bytes];
            if (bytes == 0)
            { return; }
            serialPort.Read(buffer, 0, bytes);
            s100 = ww(buffer);//字节数组转为十六进制字符串
            if (s100 != "")
            {

                string s = "";
                int length = Convert.ToInt32( buffer[7].ToString()) - 1;
                for (int j = 9; j < length+9; j++)
                {
                    string a= Convert.ToString(buffer[j],16);
                    if(a.Length==1)
                    {
                        a = "0" + a;
                    }
                    s += a;
                }

                //s = "";
               // MessageBox.Show(s100);
                aa = s100;
                InvokeHelper.Set(richTextBox2, "Text", aa);
            }
            serialPort.DiscardInBuffer();

        }

        public string ww(byte[] data)//字节数组转为十六进制字符串
        {
            StringBuilder sb = new StringBuilder(data.Length * 3);
            foreach (byte b in data)
                sb.Append(Convert.ToString(b, 16).PadLeft(2, ‘0‘).PadRight(3, ‘ ‘));
            return sb.ToString().ToUpper();
        }
时间: 2024-10-19 05:15:13

c# 串口数据接收的相关文章

C#----串口数据接收发送

虚拟串口驱动工具,创建俩个虚拟串口,如图: 创建两个Console模拟串口的发送接收数据 C#串口数据接收发送,类空间: using System.IO.Ports; C# 串行端口 接收数据,代码如下: //遍历串行端口名称数组 foreach (string port in System.IO.Ports.SerialPort.GetPortNames()) { Console.WriteLine(port); } byte[] b = new byte[32]; SerialPort sp

串口协议匹配函数,避免串口数据接收时顺序换乱错误

按照协议匹配,避免串口数据接收时顺序换乱错误. 包头 长度 地址码 回复状态 校验和 包尾 备注 C0C0 02 F5 AA YY CF 成功 1,转移字符 a)              数据包基本格式中的数据长度.数据和校验和中如果出现关键字C0. CF或CA则需要在其前端加上转义字符CA,即将数据C0.CF或CA发送成CAC0.CACF或CACA,将数据C0C0发送成CAC0CAC0. b)              数据包基本格式中的数据长度length以有效数据的数量为准,即不 需要也

[RK_2014_0910]串口编程中,串口数据接收不全的可能原因

[情形1] [ubuntu14.04-->Win8] [环境描述] PC1:Win8,运行串口调试工具:USR-TCP232-Test.exe:串口COM1的参数设置为“9600,8,1,N". PC2:Ubuntu14.04:串口/dev/ttyUSB0的参数设置为“9600,8,1,N". [代码描述] // 串口传输线程 处理函数 void* CTestEth::ThreadFuncHandleSerialPortTransfer(IN void* arg) { if ((

c# 串口发送接收数据

/********************** 串口数据接收事件 *****************************/ private void SerialPort_DataReceived(object sender, SerialDataReceivedEventArgs e) { UTF8Encoding uTF8Encoding = new UTF8Encoding(); byte[] readBytes = new byte[this.SerialPort.BytesToRe

C#异步数据接收串口操作类

C#异步数据接收串口操作类 使用C#调用传统32位API实现串口操作,整个结构特别的简单.接收数据只需要定义数据接收事件即可. 上传源代码我不会,需要源代码的请与我([email protected])联系.你也可以教我怎么上传源代码. using System; using System.Runtime.InteropServices; /// <summary> /// (C)2003-2005 C2217 Studio  保留所有权利 /// /// 文件名称:     IbmsSeri

C# ---- 串口数据YSI实例

原文:C# ---- 串口数据YSI实例 C#----串口数据接收发送中,发送接收数据已经可以模拟了. 本次YSI实例过程中 主要是:类型转换问题 .计算校验码 一.不同设备不同的规则,本次实例代码如下: string serialNumber = sn;//Packet Command Payload int i1 = 0x11;//Packet Length Byte int i2 = 0xA5;//Packet Sync Byt[] string[] strarr = new string

【ALB技术笔记】基于多线程方式的串行通信接口数据接收案例

基于多线程方式的串行通信接口数据接收案例 广东职业技术技术学院  欧浩源 1.案例背景 在本博客的<[CC2530入门教程-06]CC2530的ADC工作原理与应用>中实现了电压数据采集的程序设计,传感器模块以每1秒发送一帧数据的形式通过串口向上位机发送电压数据.其数据帧由4个字节组成:一个帧头和一个帧尾,中间两个字节为电压数据,其格式如下: 帧头(0xAF)    电压数据高8位    电压数据低8位    帧尾(0xFA) 在篇博文中,将讲述如何通过多线程的方式,从串口接收传感器发送过来的

用普通IO接收串口数据

<pre name="code" class="cpp">//文件urece.h #ifndef _URECE_H_ #define _URECE_H_ #define V_BATOU 0x80 //电池充满 #define V_BATLV 0x40 //电池低电压 #define V_BATOI 0X20 //电池放电过流 #define V_BATOTP 0x10 //电池过温 #define V_BATOTIM 0x08 //电池充电超时 #def

基础问题:在一个 Activity 中定义的串口接收程序,如果 Activity 切换到其它 Activity 后还能接收到串口数据吗?

============问题描述============ RT:基础问题:在一个 Activity 中定义的串口接收程序,如果 Activity 切换到其它 Activity 后还能接收到串口数据吗? 我的程序有两个 Activity,在启动后的 Activity 中已经验证了接收与发送数据. 后继做了第二个 Activity,此时从第二个 Activity 返回 第一个 Activity 时串口的接收线程会出错.调试了一下,串口再次被初始化了. 问题: (1)不想串口被反复初始化,应该如何做?