精华内容
下载资源
问答
  • 串口调试助手接收数据一秒钟不到,用read读数据10s都读不完
  • C# SerialPort串口接收数据 数据不完整的解决方法

    C# SerialPort串口接收 丢数据 数据不完整的解决方法

    参考文章:

    (1)C# SerialPort串口接收 丢数据 数据不完整的解决方法

    (2)https://www.cnblogs.com/765boy/p/9009968.html


    备忘一下。


    展开全文
  • serialport串口接收数据在mschart上显示

    热门讨论 2012-01-08 21:09:10
    本资源是基于vs2010 winform的C#程序,主要实现serialport串口接收数据,运用timer在msxhart上实时显示。解决了串口收不到数据serialport辅线程的问题,上传的程序没有问题,希望对需要的人提供帮助。(环境vs2010...
  • Serialport接收并保存串口数据

    热门讨论 2012-08-22 14:44:47
    通过Serialport空间自动接收串口通信的数据,有CRC16位数据校验,可设置串口名,波特率等,主要是接收到的数据以追加的形式保存到了text文档中,文档以当天日期命名。
  • 前述: 在一个项目中,需要从串口通信的磁卡读卡器中读取刷卡的卡号,以便后续的业务操作。...本人使用了.net中自带的SerialPort串口监控控件来读取磁卡读卡器所读取的卡号,其解决方法如下: SerialPort简述:

    前述:

    在一个项目中,需要从串口通信的磁卡读卡器中读取刷卡的卡号,以便后续的业务操作。该刷卡器的型号为:SMR-RU2,使用USB接入电脑,通过USB转串口,Windows会根据USB口分配器固定的串口号。本人使用了.net中自带的SerialPort串口监控控件来读取磁卡读卡器所读取的卡号,下面讲述具体细节。


    使用SerialPort接受串口信号:


    首先在创建一个From,并且在工具箱中拖入SerialPort控件,在这里我命名为mySerialPort,并拖进一个TextBox,一遍显示信号数据。


    接着初始化SerialPort控件,代码如下

    	/// 初始化控件
            /// </summary>
            /// <param name="portName"></param>
            private void InitMySerialPort(String portName)
            {
                if (mySerialPort != null)
                {
                    mySerialPort.PortName = portName;//端口号,这里可以电脑已经连接的COM口,如COM1;
                    mySerialPort.DataBits = 8;//设置每个字节的数据位,在这里我设置为8位,可以为7位
                    mySerialPort.DiscardNull = false;
                    mySerialPort.DtrEnable = false;
                    mySerialPort.Handshake = Handshake.None;
                    mySerialPort.Parity = Parity.None;
                    mySerialPort.ParityReplace = Convert.ToByte("63");
                    mySerialPort.RtsEnable = false;
                    mySerialPort.StopBits = StopBits.One;
                }
                if (!mySerialPort.IsOpen)
                {
                    mySerialPort.Open();//打开端口,进行监控
                }
                mySerialPort.DataReceived += new SerialDataReceivedEventHandler(serialPort_DataReceived);//这个事件为最关键点,一旦端口收到信号,就会触发该事件,这个事件就是真正读取信号,以便做接下的业务。
            }

    最后加上接受信号的事件:

     public void serialPort_DataReceived(object sender, SerialDataReceivedEventArgs e)
            {
    
                string s = "";
                int count = mySerialPort.BytesToRead;
    
                byte[] data = new byte[count];
                mySerialPort.Read(data, 0, count);
    
                foreach (byte item in data)
                {
                    s += Convert.ToChar(item);
                }
    
                if (this.InvokeRequired)//由于是非创建线程访问textBox1,所以要使用代理句柄。要不然会抛异常,这点需要特别注意
    
                {
                    this.Invoke(new MethodInvoker(delegate { this.textBox1.Text = s; }));
                }
                else
                {
                    this.textBox1.Text = s;
                }
            }
    以上为整个 SerialPort控件接收信号的代码,请大家多都指教,如有什么疑惑,可以留言,大家一起共同学习探讨!

    展开全文
  • SerialPort串口接收

    2013-12-19 16:22:41
    SerialPort类中属性与方法,串口数据接收
  • C# SerialPort连接串口,读写串口数据

    千次阅读 2020-09-23 09:07:55
    C# SerialPort连接串口,读写串口数据 一、起始 最近在公司做上位机,上位机要求是能够读取一款支持串口通信的传感器并且把传感器的数据用图表显示出来,且上位机能对传感器发送指令,需求有涉及到串口通信和绘制图表...

    C# SerialPort连接串口,读写串口数据

    一、起始

    最近在公司做上位机,上位机要求是能够读取一款支持串口通信的传感器并且把传感器的数据用图表显示出来,且上位机能对传感器发送指令,需求有涉及到串口通信和绘制图表。

    那么首先要解决的问题就是能够让电脑上的程序进行串口通信,有串口通信的编程语言有很多,C++,C#,JAVA,Python等语言都是支持串口通信的。我选择了使用C#,因为上位机主要是在Windows操作系统上运行,而C#对于winodws桌面应用的开发支持是比较方便的,功能也比较强大,尤其是WPF程序,做出来的UI页面比较好看

    那么本篇内容就介绍c#程序怎么实现串口通信

    二、工具准备

    开发工具:Visual Studio 2019 Community
    开发工具下载:免费的 IDE 和开发人员工具 | Visual Studio Community
    维特智能姿态角度传感器JY901模块1
    USB-TLL模块
    1、杜邦线*1
    在这里插入图片描述

    三、新建项目

    1.新建项目,选择WPF应用程序,你可能会发现两个 WPF 桌面模板,一个用于 .NET Framework,另一个用于 .NET Core。 .NET Core 模板在 Visual Studio 2019 16.3 及更高版本中可用。 你可以在本教程中使用任何一个,但建议使用 .NET Core 进行新的开发。
    在这里插入图片描述
    2.在下一屏幕中指定“项目名称”和选择“项目路径”,然后点击“创建”
    在这里插入图片描述

    四、添加串口通信引用

    1.右击项目解决方案“管理NuGet程序包”,搜索“Ports”关键字,添加System.IO.Ports引用。System.IO.Ports包是.Net 2.0以来集成的免费的串口通信包,
    在这里插入图片描述

    五、建立串口通信工具类

    创建SerialPortUtils工具类,为了后面能够方便的操作串口我们先实现一个串口操作的工具类,串口通信中用到最多的操作就是“搜索串口”,”打开/关闭串口“,”接收数据“,“发送数据”,我们可以先实现以上操作的方法。
    在这里插入图片描述

    搜索串口实现,搜索串口可以直接调用SerialPort类的GetPortNames方法,该方法会返回一个串口名称的string数组。
    在这里插入图片描述

    打开关闭串口实现,这里传入“串口名称”和“波特率”参数打开串口,如果有需要其他参数可以修改方法参数。打开串口后把ReceiveData做为接收事件的委托。
    在这里插入图片描述

    接收串口数据的委托方法实现,sender对象为串口对象,接收数据后直接向控制台打印数据
    在这里插入图片描述
    发送数据实现,检查串口是否打开,然后向串口发送数据并且打印到控制台,这样一个简单的串口通信工具类就实现了
    在这里插入图片描述

    六、SerialPortUtils工具类完整代码

    public class SerialPortUtils
        {
    
            public static string[] GetPortNames() {
                return SerialPort.GetPortNames();
            }
    
    
            public static SerialPort SerialPort = null; 
            public static SerialPort OpenClosePort(string comName,int baud)
            {
                //串口未打开
                if (SerialPort == null|| !SerialPort.IsOpen)
                {
                    SerialPort = new SerialPort();
                    //串口名称
                    SerialPort.PortName = comName;
                    //波特率
                    SerialPort.BaudRate = baud;
                    //数据位
                    SerialPort.DataBits = 8;
                    //停止位
                    SerialPort.StopBits = StopBits.One;
                    //校验位
                    SerialPort.Parity = Parity.None;
                    //打开串口
                    SerialPort.Open();
                    //串口数据接收事件实现
                    SerialPort.DataReceived += new SerialDataReceivedEventHandler(ReceiveData);
    
                    return SerialPort;
                }
                //串口已经打开
                else 
                {
                    SerialPort.Close();
                    return SerialPort;
                }
            }
    
            public static void ReceiveData(object sender, SerialDataReceivedEventArgs e) {
                SerialPort _SerialPort = (SerialPort)sender;
    
                int _bytesToRead = _SerialPort.BytesToRead;
                byte[] recvData = new byte[_bytesToRead];
    
                _SerialPort.Read(recvData, 0, _bytesToRead);
    
                //向控制台打印数据
                Debug.WriteLine("收到数据:"+ recvData);
            }
    
            public static bool SendData(byte[] data)
            {
                if (SerialPort != null && SerialPort.IsOpen)
                {
                    SerialPort.Write(data, 0, data.Length);
                    Debug.WriteLine("发送数据:" + data);
                    return true;
                }
                else {
                    return false;
                }
            }
    
        }
    

    七、工具类收发数据演示

    JY901连接我的电脑是COM3

    测试方法,在MainWindow创建testSerialPortUtils方法,testSerialPortUtils方法先搜索一遍串口,打印所有串口的名称;然后打开COM3,向COM3发送一条指令

    调试输出结果

    COM3
    发送数据:System.Byte[]
    收到数据:System.Byte[]
    收到数据:System.Byte[]
    收到数据:System.Byte[]
    收到数据:System.Byte[]
    收到数据:System.Byte[]
    

    调试后发现输出的数据是一个Byte数组,是的在串口开发中收到的数据都是byte形式的,在串口开发过程中经常会遇到byte数据和二进制、十进制、十六进制的数据。下一篇“C#十六进制、十进制、二进制、字符串数据互转”将详细介绍串口开发中用到的数据装换
    八、结语

    再为大家介绍一个优秀的C#开源串口助手项目

    码云OSDA开源串口助手项目地址:Leven/OSDA

    感谢阅读本篇“C# SerialPort连接串口,读取串口数据”,本篇到此结束,下一篇“C#十六进制、十进制、二进制、字符串数据互转”

    展开全文
  • 不知道我这样设置,这样读数据不知道哪里有问题....读不进来.[img=https://img-bbs.csdn.net/upload/201605/22/1463879653_470174.png][/img]这是RM417相关参数....大家给看看,或者有什么好的接收程序,谢谢各位了
  • // 使用串口调试助手 接收到的数据 是正确的 01 04 04 00 4F 00 4E 4A 67 01 04 分别对应 1 4 04是请求数量*2 转换成16进制 00 4F 00 4E 是请求数量返回的具体值 4A 67 返回的校验码 我用sp.Read(buffer, 0, sp...
  • 用到的控件有:serialPort和Textbox1//串口自动接收数据代码如下:private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e) { System.Threading.Thread.Sleep(100); int bytes = ...

    用到的控件有:serialPort和Textbox1
    //串口自动接收数据代码如下:
    private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
            {
                System.Threading.Thread.Sleep(100);
                int bytes = serialPort1.BytesToRead;
                byte[] buffer = new byte[bytes];
                if (bytes == 0)
                { return; }
                serialPort1.Read(buffer, 0, bytes);
                string s100 = ByteArrayToHexString(buffer);//字节数组转为十六进制字符串
                richTextBox1.Text += s100 + "/r/n";       
          }

    用到的函数如下:
            public static string ByteArrayToHexString(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();
            }

    展开全文
  • MFC基于SerialPort串口通讯工具,边接收数据边实时绘图。非常实用,网上很少找到类似的例子。
  • 对C#的serialport类功能进行了总结,给出了发送,接收数据的完整操作类代码,可直接运用该类进行c#的串口数据操作
  • C#基于SerialPort串口通讯程序,可以接受数据并实时绘制数据图。很好的例子。
  • 出现3F是奇偶校验错误导致的,你可以将奇偶校验属性设置为none,至于出现短文,是由于数据接收不完整导致,你可以在读取缓存数据的时候延时个20ms就可以了 转载于:https:...
  • C#SerialPort串口通讯数据异常

    千次阅读 2019-12-01 20:37:16
    笔者也是在写C#与Arduino串口进行通讯的时候收到的数据异常,翻阅了其他CSDN博主对串口通讯的建议,最好就是使用线程对接收数据进行处理。废话不多说,下面展示线程方法和原方法。 使用线程的方法 //定义 ...
  • 采用的方式是当串口接收数据时候就触发读数据事件,然后进入事件后thread.sleep() 然后再检测接收缓冲中的字节数,进行读取 单步执行没有问题,但是直接执行的过程中还是会发生数据丢失的问题,只能部分的读取...
  • System.IO.Ports.SerialPort串口通信接收完整数据  C#中使用System.IO.Ports.SerialPort进行串口通信网上资料也很多,但都没有提及一些细节;  比如 串口有时候并不会一次性把你想要的数据全部...
  • Android 关于SerialPort串口通信接收数据有时候不是完整数据时的解决方法 适用协议帧数据中包含数据长度 private int count = 0; // 已经缓存的数据字节长度 private final int SIZE = 1024; private byte[] ...
  • C# SerialPort串口通信发送接收,处理接收数据完整

    万次阅读 多人点赞 2019-04-09 15:04:58
    /// 串口数据接收事件 /// /// <param name="sender"></param> /// <param name="e"></param> private void serialPort_DataReceivedEventHandler(object sender, SerialDataReceivedEventArgs e) { try { ...
  • 1.连接串口方法 SerialPort ser = new SerialPort();//也可以在工具箱中直接拖SerialPort控件 public void OpenCom() { try { //波特率 ser.BaudRate = 9600; //数据位 ser.DataBits = 8; ...
  • 有时候我只发了一次或者几次后我的串口能一直收到相同的数据,几率还挺大的,读取serialPort.BytesToRead是一直有的,而且是在serialPort.Read完serialPort.BytesToRead清零了之后还是一直能读到的,实际没有发数据...
  • C# SerialPort自定义串口DCBChange DCB fields from SerialPort instance CPS:中文DCB结构详解表 译自Change DCB fields from SerialPort instance C# C# SerialPort自定义串口DCB DCB(Device Control Block...
  • 我这几天在做串口通讯的开发,使用串口助手能够接收串口发送过来的数据,但是用SerialPort接收不到数据。定时读取获得的是空字符串,使用DataReceived事件则不能触发。 程序如下: using System; using ...
  • C#接收串口数据

    2020-05-11 19:59:51
    今天有人提到C#接收串口数据,想到以前做过接收串口发送的重量数据,现做简单整理。 C#中使用SerialPort类实现串口通讯,核心代码如下: //定义委托 public delegate void Displaydelegate(byte[] InputBuf); ...
  • Java接收串口数据

    千次阅读 2015-07-09 17:25:32
    Java接收串口数据 参考《ava接收串口数据》,开源中国社区自己的使用经验: 1.ReadPort()虽然可以提供外部java读取数据,但最好添加一个延时,否则很容易出现读取若干次后程序没有响应,但又不报错的问题。 2.此...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,075
精华内容 2,030
关键字:

serialport接收串口数据