求助!! 关于C# 串口通信关闭串口时卡住的问题 [问题点数:100分]

Bbs1
本版专家分:0
结帖率 75%
Bbs7
本版专家分:14804
Bbs2
本版专家分:377
Bbs4
本版专家分:1251
Bbs1
本版专家分:0
Bbs1
本版专家分:35
串口通信中接收数据时延迟处理与缓存处理的解决方案(C#)
利用<em>串口</em>进行通信,当发送方(A)将数据写入<em>串口</em>后,通过无线或有线方式将数据传送给接收方(B),B通过调用<em>串口</em>读方法comm.read(参数)即可将数据读出。原理十分简单,但最近在利用<em>串口</em>处理SM-42无线传输时,数据总是一段一段的传到B,并不能在comm_DataReceived方法中单纯使用read方法将数据接收完全。我知道用缓存机制,但由于经验少(正在实习),到网上找了找大牛们的方法,并结合自
C#串口关闭Close()-线程卡死-解决方法
<em>问题</em>很简单: 1.设置isReceiving 标志位,判断<em>串口</em>读取线程是否在占用资源。 2.设置读写超时,防止卡死在Read()命令里本人比较懒, 在代码关键修改位置标了/!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!/,供大家参考。希望能帮到大家0 0 class CSerial { SerialPort myPor
read\write 堵塞与非堵塞读取串口数据
read函数从打开的设备或文件中读取数据。 #include ssize_t read(int fd, void *buf, size_t count); 返回值:成功返回读取的字节数,出错返回-1并设置errno,如果在调read之前已到达文件末尾,则这次read返回0 参数count是请求读取的字节数,读上来的数据保存在缓冲区buf中,同时文件的当前读写位置向后移。注意这个读写位置
C# 串口通信(彻底解决C#串口通信中的数据丢失问题
以网上某位大虾的源码为版本,沿用了其可用的代码部分。对其余欠妥部分进行了改造。不要资源分,是大家不用为积分而烦恼。出来混都不容易,希望大家相互照应!
C#串口通信时丢失数据的一种解决方法
刘凯 周云耀 武汉理工大学信息工程学院 武汉市(430070) E-mail: lk.6@163.com 摘要:C # 串行类( SerialPort )是.NET Framework version 2.0中一个新增的类,该类将<em>串口</em>操作了封装,从而为<em><em>串口</em>通信</em>提供了简便方法,而且具有功能强大、通信快速、实时性好等特点。但在实际<em><em>串口</em>通信</em>的应用中,在<em>串口</em>高波特率大信息量的数据通信时,会出现丢失数据的<em>问题</em>。此时如果只是增加<em>串口</em>类的缓存容量是不能根本解决<em>问题</em>的。本文就
matlab串口通讯问题
<em>问题</em>1:使用fprintf向<em>串口</em>发送数据时,下位机不能成功接受数据 原因:通讯协议不一致,下位机连续接受0x0d、0x0a【CR/LF】时,完成一次接受【usart.c,stm32,<em>串口</em>中断函数】,需要配置matlab<em>串口</em>的terminator为CR/CF。 -CR/CF的结束符为\n\r。 小结1:matlab中fprintf函数 -fprintf以文本输出时,\r\n为转译字符
串口通信丢失数据结局方案——C#
<em><em>串口</em>通信</em>的一般思路是:先接收数据,然后处理数据,并在数据处理之后再次等待接收新的数据。但这种方法的缺点是,在<em>串口</em>高速率大信息量通信时,会出现丢失数据的情况。        丢失数据的原因是数据接收和数据处理再同一个线程中,如果数据处理的时间太长,则来不及接收的数据只能暂存在缓存中。因此,一旦缓存满了,新到的数据就会冲刷掉未来得及接收的数据,从而造成数据的丢失。因此,只是增加缓存的容量不能解决数据
C#解决串口通信中接收数据时延迟处理与缓存处理的方法
C#解决<em><em>串口</em>通信</em>中接收数据时延迟处理与缓存处理的方法 时间:2011-1-21 14:04:29 来源:www.cnblogs.com 作者:杨少宁 - - 利用<em>串口</em>进行通信,当发送方(A)将数据写入<em>串口</em>后,通过无线或有线方式将数据传送给接收方(B),B通过调用<em>串口</em>读方
【C#串口编程计划】如何避免关闭串口时软件死锁
本文分析了<em>关闭</em><em>串口</em>时软件死锁的原因并提出了解决方案。
串口关闭时候报错、死锁、还有数据在处理报串口关闭错误 解决办法
为什么C#<em>串口</em>程序在<em>关闭</em><em>串口</em>时候会死锁_老文章_赛迪网 http://www.ccidnet.com/2010/0524/2067861.shtml 【赛迪网讯】用过微软SerialPort类的人,都遇到过这个尴尬,<em>关闭</em><em>串口</em>的时候会让软件死锁。天哪,我可不是武断,算了。不要太绝对了。99.9%的人吧,都遇到过这个<em>问题</em>。我想只有一半的人真的解决了。另外一半的人就睁只眼闭只眼阿弥佗佛
c#调api串口通讯
在调试ICU通信设备的时候,由于<em><em>串口</em>通信</em>老出现故障,所以就怀疑CF实现的SerialPort类是否有<em>问题</em>,所以最后决定用纯API函数实现<em>串口</em>读写。先从网上搜索相关代码(关键字:C# API <em>串口</em>),发现网上相关的资料大约来源于一个版本,那就是所谓的msdn提供的样例代码(msdn的具体出处,我没有考证),其它的代码大都是它的变种。其实这个示例代码是有<em>问题</em>的,也就是说DCB结构体声明的有<em>问题</em>
C#初入串口通信(串行通信)总结
使用WinFrom来实现: 首先要知道<em><em>串口</em>通信</em>协议以及原理 原理大概提一下:要自己翻阅看。(http://book.51cto.com/art/200911/162532.htm或者http://hi.baidu.com/���472405746/blog/item/9ad1358fd9b0caf6f11f3668.html) 代码部分: 实现<em><em>串口</em>通信</em>有很多种办法,有COM组件(收费),有
串口通信模块3:串口通信编程基础(读写、关闭
上一节总结了如何打开<em>串口</em>并讨论了如何配置<em>串口</em>,本节是在上一节的基础上,进一步讨论<em>串口</em>编程的基础——如何进行文件读写?如何<em>关闭</em><em>串口</em>? 1. 读写<em>串口</em> <em>串口</em>的读写操作和文件的读写操作是一样的,也是通过ReadFile()及WriteFile()函数来实现的。这两个函数的原型分别如下: 写文件函数原型及说明: BOOL WriteFile( HANDLE hFile, LPCVO
C#串口通讯实例
C#<em>串口</em>通讯实例 参考《C#网络通信程序设计》 serialport
多线程串口通信 MFC CSerialPort
原文转载自http://www.cnblogs.com/xingrun/p/3587144.html?utm_source=tuicool&utm_medium=referral。 以下全为转载: 写在前面:          晚上应该继续完成未写完的代码,但Chrome上打开的标签实在太多了,约30个了,必须关掉一些,所以需要把自己看的整理一下然后关掉。本次主要写点MF
C#与单片机串口通信 “已关闭safe handle”问题
最近在做C#上位机与单片机(本人用的单片机内核是89C52)<em><em>串口</em>通信</em>,今天忽然出现个<em>问题</em>: “已<em>关闭</em>safe handle”。找来找去发现<em>串口</em>设置什么的都OK,后来发现是单片机没有上电,多次尝试过后确定单片机没有上电的话确实会弹出这个错误提示。
Linux下串口通信详解(下)读写串口关闭串口
上一篇博客是<em>串口</em>的打开及配置,博客链接http://blog.csdn.net/specialshoot/article/details/50707965 这一篇我将要把读写<em>串口</em>及<em>串口</em><em>关闭</em>的操作详细介绍一下。 读<em>串口</em> 读<em>串口</em>就是接收<em>串口</em>数据,通过read来实现。 read函数原型: #include ssize_t read(int fd, void *buf, size_t
串口通讯的问题
有同事问我如下<em>问题</em>: 我的答复: <em>串口</em>发送数据字节是有先后次序的,前后到达的时间当然 不可能 一样..由于线路原因,头几个字节到了,后几个字节可能要等100ms才能到. 一般程序用的是windows的<em>串口</em>控件 是有缓存的, 他默认判断一个数据包是否发完是根据前后连个字节之间接收间隔来定的.加入一定时间内没有收到数据,windows 会把当前缓存里的数据当成一个完整的
通过串口关闭对方计算机
使用简单的SERIAL类,实现<em>关闭</em>对方操作系统的功能,简单使用,减少编程人员的代码量。
C#实现串口通信(自身留稿方便以后查看)
<em><em>串口</em>通信</em>
read函数读串口数据“分包”问题及解决方案
最近在做一个项目,其中要实现一个简单的数据透传功能。 功能简介: 实现通过网络向485<em>串口</em>(温湿度传感器)发送指令,然后把<em>串口</em>返回的数据发送到网络端。 实现方法: 采用多线程技术,函数执行时创建两个线程, 一个线程负责接收(recv)网络端的数据指令,并把收到的指令写到(write)<em>串口</em>。 另一个线程负责读取(read)<em>串口</em>的数据,并且把读到的数据发送(send)到网络端。 遇到的问
关于C#/WPF的SerialPort类串口接受数据异常的问题
如题所说,在软件测试过程中,
c# 串口通讯 读写数据源代码
<em>c#</em> <em>串口</em>通讯 读写数据源代码,单线程实现
用C#一步步写串口通信
用C#一步步写<em><em>串口</em>通信</em> 标签: <em>c#</em>textboxbuttonobjectstring 2012-08-10 14:57 18916人阅读 评论(38) 收藏 举报  分类:   C#(2)  项目经验(1)  版权声明:本文为博主原创文章,未经博主允许不得转载。    附言: 1. 有网友反应我写的这篇文章还不错,索性就将它置顶
.net中的串口类的实时响应性分析
曾经在实时控制系统应用中,利用<em>串口</em>的管脚事件进行IO监听,发现在对外有大量密集的线程池输出时,会造成管脚信号丢失,在项目现场分析了相当一段时间,后来揣测是由于管脚监听事件的底层,利用了相同的线程池,当在业务系统中频繁调用底层线程池时,造成新的线程分配机制跟不上信号的变化,但因为看不到微软的底层源码,一直就没有事实的依据作为佐证。 这段时间在分析微软的RefrenceSourceCode时,偶然想
串口通讯的延时问题
   <em>串口</em>编程涉及很多<em>问题</em>,对于实时采集系统,<em>串口</em>编程必须服从系统定时器采集节拍,这样通过事件方式接收<em>串口</em>然后延时就会带来很多<em>问题</em>。  <em>串口</em>数据通常不是一次到来,对于一个较为长的数据,可能分两三次触发<em>串口</em>事件,如果每次事件触发时都要延时(采用system.threading.thread.sleep(500)延时500毫秒),造成线程阻塞,三次下来就延时了1500毫秒,对于需要定时节拍的采集,势必
c#串口通信程序,包含打开串口,接收数据和发送数据等功能
这是一个我写的用C#实现<em><em>串口</em>通信</em>的程序,可以扫描<em>串口</em>,然后选择<em>串口</em>,打开<em>串口</em>之后,如果打开成功,打开<em>串口</em>旁边的方框会变绿,这个可以验证是否成功打开,打开<em>串口</em>旁边还有<em>关闭</em><em>串口</em>命令。 打开<em>串口</em>之后,在发送的命令框里写下需要发送的命令,就可以在接收框里接收发送的命令。这样能够直观的看是否发送正确,验证<em><em>串口</em>通信</em>是否可行
串口通信 实时解析或发送串口的数据包
通过C#实现<em><em>串口</em>通信</em>,里面的代码展示了如何监听计算机中的<em>串口</em>,解析数据或者发送数据,做<em>串口</em>开发的可以参考
串口通信数据格式那点儿事儿
最近在做通信相关的程序,利用手机去和单片机进行通信,数据格式真是把我给搞蒙了,现在终于清楚了,记录一下 : 要清楚一件事儿,计算机只识别ASC码,<em>串口</em>调试助手上可以16进制发送和16进制接收 1,比如如果单片机接收到一个ASC码0x31,     一,勾选16进制的话,就会以16进制的格式显示,因为ASC码本身就是16进制,则会显示31;     二,未勾选16进制的话,则会
C#控制台操作串口实例例程
本文介绍一个C#控制台下操作<em>串口</em>的范例程序,基于多线程的一个接收
C#串口通信 连接串口并发送字符
C#打开含有对应字符的<em>串口</em>,并发送字符串
C#串口通讯(变参、委托、线程安全队列)
这两天由于项目需要,调试了一下C#的<em>串口</em>通讯,参考了以前做的Android项目所用的设计模式: 父类DataTransport设计成单例模式,程序始终保持只有一种通讯链路,DataTransport中的方法都由子类实现。 由于对C#不是很熟练,调试过程中遇到了较多<em>问题</em>,最终通过努力找到了解决方法,稍微总结一下。 变参函数 <em>串口</em>、蓝牙和Wifi的设置参数不同,它们各自的setConfig函数的形参也不
C#实现简单串口通信助手
建立好一个form后,选择工具箱,在组件所属里找到SerialPort: 拖拽一个即可。 这时可以看到属性栏: 可以查看修改默认属性值。 这时就可以通过控件设计我们的界面啦: 我这里设计的很简单,包括<em>串口</em>设置、接收数据、发送数据。<em>串口</em>设置参数,我只包含了两个,我们经常改动的COM口和波特率,其他都使用默认值。 波特率通常使用的有固定几种,我们将可能用到的写到波特率绑定的co...
C# 使用SerialPort控件用类及线程实现串口通信
using System;      using System.Collections.Generic;      using System.ComponentModel;      using System.Data;      using System.Drawing;      using System.Text;      using System.Windows.Forms;
用API打开关闭串口的编程方法
在对<em>串口</em>进行操作之前都需要先打开<em>串口</em>,VC<em>串口</em>编程方法分为利用VC<em>串口</em>控件(或VC<em>串口</em>类)和直接调用Windows底层API函数(我称之为VC API <em>串口</em>编程)两种方法,不管哪种方法,其实质都是利用底层API函数对<em>串口</em>进行操作,这里我们来看怎么利用API函数来用 VC 打开<em>串口</em>。 在Windows 32位以上操作系统(Win98以上)中,将<em>串口</em>(包括其它通信设备)作为文件来处理,所以<em>串口</em>的打开
C#.NET串口通信设计实例
包含有PC与PC机、单片机、PLC等下位机的<em><em>串口</em>通信</em>
串口传输数据卡死问题解决方案
http://blog.csdn.net/wuyazhe/article/details/5606276  膜拜大神
[置顶] 在C#中使用SerialPort类实现串口通信(陆续更新)
[置顶] 在C#中使用SerialPort类实现<em><em>串口</em>通信</em>(陆续更新) 标签: <em>c#</em>newlineobjectbytestringstream 2009-08-23 13:16 85234人阅读 评论(30) 收藏 举报  分类: C#学习笔记(5)  版权声明:本文为博主原创文章,未经博主允许不得转载。  在.NET Framework
C#串口介绍以及简单串口通信程序设计和实现
C#<em>串口</em>介绍以及简单<em><em>串口</em>通信</em>程序设计实现 周末,没事干,写个简单的<em><em>串口</em>通信</em>工具,也算是本周末曾来过,废话不多,直接到主题 <em>串口</em>介绍   串行接口简称<em>串口</em>,也称串行通信接口或串行通讯接口(通常指COM接口),是采用串行通信方式的扩展接口。(至于再详细,自己百度) <em>串口</em>应用:   工业领域使用较多,比如:数据采集,设备控制等等,好多都是用<em><em>串口</em>通信</em>来实现!你要是细心的话,你会发现,目前家用国网智能电能表就具备RS485通信总线(串行总线的一种)与RS232可以相互转化(当然一般,非专业的谁也不会闲的蛋疼,趴电表上瞎看,最多也就看看走了多少度电) RS232 DB9介绍: 1.示意图 2.针脚介绍: 载波检测(DCD) 接受数据(RXD) 发出数据(TXD) 数据终端准备好(DTR) 信号地线(SG) 数据准备好(DSR) 请求发送(RTS) 清除发送(CTS) 振铃指示(RI) 3.实物图: 以下是我购买XX公司的一个usb转<em>串口</em>线:这个头就是一个公头,另一端是一个usb口 笨小孩<em>串口</em>工具运行图: 1.开启程序 2.发送一行字符串HelloBenXH,直接将针脚的发送和接收链接起来就可以测试了(针脚2 接受数据(RXD) 和3 发出数据(TXD))直接链接, C#代码实现:采用SerialPort 1.实例化一个SerialPort [csharp] view plain copy 在CODE上查看代码片派生到我的代码片 private SerialPort ComDevice = new SerialPort(); 2.初始化参数绑定接收数据事件 [csharp] view plain copy 在CODE上查看代码片派生到我的代码片 public void init() { btnSend.Enabled = false; cbbComList.Items.AddRange(SerialPort.GetPortNames()); if (cbbComList.Items.Count > 0) { cbbComList.SelectedIndex = 0; } cbbBaudRate.SelectedIndex = 5; cbbDataBits.SelectedIndex = 0; cbbParity.SelectedIndex = 0; cbbStopBits.SelectedIndex = 0; pictureBox1.BackgroundImage = Properties.Resources.red; ComDevice.DataReceived += new SerialDataReceivedEventHandler(Com_DataReceived);//绑定事件 }
串口通讯中的cpu占用问题
本人一直从事<em>串口</em>通讯编程,从vb到<em>c#</em>
winform 串口接受常遇到的异常
private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)  {     int SDateTemp = this.serialPort1.ReadByte();     //读取<em>串口</em>中一个字节的数据      this.tB_ReceiveDate.Invoke(         //在拥
基于VS 2015并使用C#编程实现串行通信
基于VS 2015并使用C#编程实现串行通信 1.话不多说,先上结果 下面简单说一下操作步骤直接上程序,如果有看不懂的地方,请看文章最后(下载下来慢慢看,只要不是傻瓜,你就一定行)。 2.先整一个结果图所示的窗体出来 1.打开vs,文件-新建-项目,建一个Windows窗体应用程序,自己改一下名称,选择一下保存位置点确定。如下图所示: 之后弹出下面界面: 接下来就是添加按钮、窗口、文本框了,...
串口通信过程中更改波特率的方法 C#实现
///   /// 设置波特率  ///   ///   public void ResetBaudRate(int bdr)  {   bool ret = true;   Win32Com.DCB dcb = new Win32Com.DCB();   ret = Win32Com.GetCommState(hPort,ref dcb);   dcb.BaudRate = bdr;   ret
在C#中实现串口通信的方法
通常,在C#中实现<em><em>串口</em>通信</em>,我们有四种方法: 第一:通过MSCOMM控件这是最简单的,最方便的方法。可功能上很难做到控制自如,同时这个控件并不是系统本身所带,所以还得注册,不在本文讨论范围。可以访问http://www.devhood.com/tutorials/tutorial_details.aspx?tutorial_id=320 ,一个国外网友的写的教程,作者很热心,我曾有发邮件给他,很快
C#串口通信源代码
界面 源码:下载参考了以下两篇文章: http://blog.csdn.net/geekwangminli/article/details/7851673 http://blog.csdn.net/wuyazhe/article/details/5598945using System; using System.Collections.Generic; using System.Compone
c#实现串口通信
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.IO.Ports; using System.Linq; using System.Text; using System.Threadin...
C# 串口通讯摘要(转)
http://www.xuebuyuan.com/1034657.html <em>串口</em>通讯摘要(转) <em><em>串口</em>通信</em>之并发与单步 物理连接示意图如下所示,每个<em>串口</em>挂接多个采集器。 通信协议: 包头(1B) + 地址码(1B) + 命令字(1B) + 数据长度(1B) + 校验码1(1B) + 数据正文(nB) + 校验码2(1B
串口通信问题处理
<em>关于</em><em>串口</em>收发异常芯片管脚电压测量。
C#串口通信,包括打开串口,接收发送数据
public partial class Form1 : Form { public Form1() { InitializeComponent(); } SerialPort port1 = new SerialPort(); string InputData = String.Empty; delegate void SetTextCallback(string text); private void Port_Select() {//获取机器中的<em>串口</em>地址 string[] ports = SerialPort.GetPortNames(); foreach (string port in ports) { comboBox1.Items.Add(port); } } private void Form1_Load_1(object sender, EventArgs e) { Port_Select(); this.comboBox1.SelectedIndex = 0; this.comboBox2.SelectedIndex = 0; } private void button1_Click(object sender, EventArgs e) { if (button1.Text == "<em>关闭</em><em>串口</em>") //当要<em>关闭</em><em>串口</em>的时候 { port1.DiscardOutBuffer(); port1.DiscardInBuffer(); port1.Close(); button1.Text = "打开<em>串口</em>"; label3.Text = "<em>串口</em>当前状况:未打开"; comboBox1.Enabled = true; comboBox2.Enabled = true; } else if (button1.Text == "打开<em>串口</em>") //当要打开<em>串口</em>的时候 { try { port1.PortName = comboBox1.SelectedItem.ToString(); port1.BaudRate = Convert.ToInt32(comboBox2.SelectedItem); port1.DataBits = 8; port1.RtsEnable = true; port1.Open(); port1.DiscardOutBuffer(); port1.DiscardInBuffer(); button1.Text = "<em>关闭</em><em>串口</em>"; comboBox1.Enabled = false; comboBox2.Enabled = false; label3.Text = "<em>串口</em>:" + comboBox1.SelectedItem.ToString() + " 波特率:" + comboBox2.SelectedItem.ToString() + " 数据位:8 "; } catch { button1.Text = "打开<em>串口</em>"; label3.Text = "<em>串口</em>:" + comboBox1.SelectedItem.ToString() + "打开失败"; MessageBox.Show("该<em>串口</em>无法打开"); } } } 资源中部分代码
串口通信协议设计中一个注意的小问题
最近接触到一个文档,其中<em><em>串口</em>通信</em>的通信协议中用0x040x06转义0x02,我一直不理解这样的动机是什么。因为以前见过的都是类似0x100x02来转义0x02刚才突然想通了。果然很妙。后者不科学,因为切分数据帧要用状态机不但程序复杂而且占用计算力,同时还增加了通信干扰扩散的概率,干扰的收敛更慢。所以前者的设计是十分高明。使用前者可以有以下好处:如果在数据中看到0x02可以直接判断数据帧不必考虑转义...
Unity中使用串口的注意事项
在unity中使用<em>串口</em>不如WinForm或者MFC中那样有对应的回调函数或者消息来处理,unity中使用的是线程去处理读取数据、处理粘包数据等<em>问题</em>,具体在使用中可能遇到下面<em>问题</em>: 1、程序在打开<em>串口</em>后,<em>关闭</em>不了(只能调出任务管理器,结束任务来处理); 2、读取<em>串口</em>数据时总是丢失第一个字节的数据; 3、<em>串口</em>拒绝访问。 以上可能是你正在苦恼的<em>问题</em>,我也是一样,再次分享自己的解决方法。 第一和
C#串口通信工具(源代码)
一款已经完成的常用<em><em>串口</em>通信</em>软件,支持常见编码方式,附赠源码。
C#串口介绍以及简单串口通信程序设计实现
C#<em>串口</em>介绍以及简单<em><em>串口</em>通信</em>程序设计实现 周末,没事干,写个简单的<em><em>串口</em>通信</em>工具,也算是本周末曾来过,废话不多,直接到主题 <em>串口</em>介绍   串行接口简称<em>串口</em>,也称串行通信接口或串行通讯接口(通常指COM接口),是采用串行通信方式的扩展接口。(至于再详细,自己百度) <em>串口</em>应用:   工业领域使用较多,比如:数据采集,设备控制等等,好多都是用<em><em>串口</em>通信</em>来实现!你要是细心的话,你会发现,
C# 串口通讯Demo(VS2010)
一个简单的C# <em>串口</em>通讯Demo,可收发数据。
C#串口通信数据不完整
下面代码是我使用C#开发<em><em>串口</em>通信</em>写的代码,在实现<em><em>串口</em>通信</em>过程中,在数据接收线程中, 未加这条语句Thread.Sleep(50);我使用<em>串口</em>工具调试 ,<em><em>串口</em>通信</em>正常,但是在与实际单片机通信过程中,出现数据不完整现象,经过多方查询,发现模拟状态下<em><em>串口</em>通信</em>速率是理想状态,但是在实际通信过程中,<em><em>串口</em>通信</em>并不是理想状态,有速率限制。 因此在接收<em><em>串口</em>通信</em>时应该有一定的延时,这样给予<em>串口</em>充足时间接收收据,这...
C#中SerialPort类接收数据的多线程问题
学习<em>c#</em>进行<em>串口</em>读写的时候我发现:如果你期望发送一次接收一次,接着马上再发送一次接收一次。通过把发送接收的消息发送到终端,会先发送两次再接收数据,而这时候应该只能接收到一次的数据了。 sp.DataReceived += new SerialDataReceivedEventHandler(自定义方法); 原因如下: MSDN:从 SerialPort 对象接收数据时,将在辅助线程上引发 ...
c# 简单的串口通信 新手篇
最近自己闲着 自学了C# ,本人不是搞软件的 ,搞嵌入式的 ,经常要用<em>串口</em>调试工具来调试 ,有时候还要处理一些数据但是市面上的不能满足我的要求 ,正好一个项目需要学习C#,借此机会来开发一个<em>串口</em>  ,说不定对我也有用! 话不多说先看看成果! <em>串口</em>调试工具 功能:    通过<em>串口</em>设置设置相应的参数  ,<em>串口</em>检测  检测插上的<em>串口</em>号 ,发送与接收数据,HEX显示 ,定时发送,文件保存。 1...
简单的C#串口通讯例子(附源文件)
由于公司需求所以就查了一些资料写了个<em>串口</em>和设备通讯的 话说现在用<em>串口</em>的应该比较少了吧。 先上一张程序UI图 简单<em>串口</em>通讯必备的东西都在这里了。个人建议使用的时候先短接2-3口进行测试以免线都不通。 下面直接上源码,注释写的还是比较详细的相信还是很容易懂的。 (PS:我这里数据接收的结束符为16)/// /// 创建<em>串口</em>对象
串口通信】——把你的Read事件写“活”了
上篇博客中,给大家介绍了在<em><em>串口</em>通信</em>中的线程应用,解决接收数据的<em>问题</em>。但是在最后给大家提了3个<em>问题</em>。今天就给大家介绍一下第一个<em>问题</em>的处理方法,也就是——如果返回的数据的数据长度不同,如何写Read方法中的循环来读取完整的返回数据。          当然如果您没有看我的上篇博客,这里我再单独把read方法写一下: Private Sub Read()   Try   serialPort
C#窗体串口通讯界面编程
采用<em>c#</em>编程,完成了上位机界面与下位机<em>串口</em>通讯功能及界面设计,含完整代码及注释
串口通信中ReadFile和WriteFile的超时详解!
在用ReadFile和WriteFile读写串行口时,需要考虑超时<em>问题</em>。如果在指定的时间内没有读出或写入指定数量的字符,那么ReadFile或WriteFile的操作就会结束。要查询当前的超时设置应调用GetCommTimeouts函数,该函数会填充一个COMMTIMEOUTS结构。调用SetCommTimeouts可以用某一个COMMTIMEOUTS结构的内容来设置超时。 有两种超时:间隔超时和
串口通信——第一个数据异常现象的解决方法
一开始学<em><em>串口</em>通信</em>,套用的是郭天祥新概念的程序思路,可能那会也没仔细考虑到晶振跟初值的影响之大,所以在开始调试的时候PC出现了第一个数据重复而以后数据正常的现象(怀疑也是晶振跟初值设置的<em>问题</em>)。后来在几个月后的一次调试过程中,再次发现另一个<em>问题</em>:接收的第一个数据会出现错误(0x00 0xf0 0xff结果出现0x80 0xf0 0xff),检查发现SMOD没有进行初始化,然后再次看了下<em>关于</em>的<em><em>串口</em>通信</em>
C#做一个简单的进行串口通信的上位机
C#做一个简单的进行<em><em>串口</em>通信</em>的上位机 乱世中的单纯 发布于 1年前,共有 10 条评论 1、上位机与下位机         上位机相当于一个软件系统,可以用于接收数据、控制数据。即可以对接收到的数据直接发送操控命令来操作数据。上位机可以接收下位机的信号。下位机是一个控制器,是直接控制设备获取设备状况的计算机。上位机发出的命令首先给下位机,下位机再根据此命令解释成相应时序信号直接控制相
串口干扰引起的问题
在调试AB1601带指纹机的一块板子上,发现几种指纹机工作都不正常,而且故障现象还不一样,刚开始以为是指纹机的<em>问题</em>,但反复用厂家的测试软件直接通过usb接口测试或<em>串口</em>测试都没<em>问题</em>。经仔细检查和比较,发现AB1601上接了个用于查看打印消息的<em>串口</em>,而且在插拔指纹机的时候没有断开这个<em>串口</em>,试着把<em>串口</em>断开后再接上指纹机,通电后工作皆恢复正常。证明这个调试<em>串口</em>影响了指纹机的正常工作。避免的方法:1.不使用...
C#中串口通信编程[转载]
本文将介绍如何在.NET平台下使用C#创建<em><em>串口</em>通信</em>程序,.NET 2.0提供了<em><em>串口</em>通信</em>的功能,其命名 空间是System.IO.Ports。这个新的框架不但可以访问计算机上的<em>串口</em>,还可以和<em>串口</em>设备进行通信。 我们将使用标准的RS 232 C 在PC间通信。它工作在全双工模式下,而且我们不打算使用任何的握手 或流控制器,而是使用无modem连接。 命名空间 System
C#串口通信(解决中文传输和实现换行)
C#<em><em>串口</em>通信</em>(解决中文传输和实现换行),该版本解决了传输中文变成乱码、敲回车键不换行等<em>问题</em>
C#串口通信上位机(含源代码)
C#<em><em>串口</em>通信</em>上位机(含源代码),接收HEX和ASCII码可设置,并有仪表显示,波形显示
串口编程(VS2010)
1.准别工作 高版本的VS没有MSComm通讯控件,需要自己下载http://download.csdn.net/detail/axiqia/9466667。 解压后拷贝到: C:\Windows\System32(WIN7系统); C:\WINDOWS\system32(XP系统)。 注意:64位win7系统还需要将mscomm32.ocx文件复制到C:\Windows\SysWOW...
C#winform实现串口通信读取电子天平数据
1. 本文中所试用的是针对赛多利斯电子天平的称重数据读取,可试用赛多利斯电子天平的类型为SQP系列和BSA系列,两种类型的区别在波特率等的设置不同,其他相同。 点击开始实验,打开<em>串口</em>,准备读取数据,读取到的数据自动显示在改称重结果上; 具体实现代码:  SerialPort receivePort = null;  public delegate void UpdateTextEventH...
C#串口通信——协议格式
  转自:https://www.cnblogs.com/fyhui/articles/2477733.html   <em><em>串口</em>通信</em>之协议格式 缓存收到的所有数据,找到一条完整数据,分析数据,界面通知。   信令格式: 同步头 + 数据正文 + 同步尾 同步头 + 命令字 + 数据长度 + 数据正文 + 同步尾 同步头 + 地址码 + 命令字 + 数据长度 + 数据正文 + 同步尾 ...
c#实现串口通讯
1、<em>c#</em>实现简单的<em><em>串口</em>通信</em>2、实现需要的空间如下图,lable、button、textbox、serial、timer,如下图3、初始化<em>串口</em>初始化的内容包括指定<em>串口</em>的波特率、接受数据的函数、端口号等(1)波特率选择如下图,直接点击按钮的属性,设置波特率为96002、接受数据的函数,双击DataReceived后面的空格,自动关联,如果收到数据,就会进入这个函数3、端口号此处表示想要连接的对方的端口...
C#使用SerialPort和API串口的例子
一个集成了SerialPort和API方式实现<em><em>串口</em>通信</em>的例子.注意线程操作UI的部分图方便使用了不安全的代码,建议改为委托
matlab 串口通信 串口设置
matlab <em><em>串口</em>通信</em> <em>串口</em>设置,matlab 通过设置<em>串口</em>以及配置<em>串口</em>波特率 整理数据 完成<em>串口</em>发送工作
C# 串口通信源码
C# <em><em>串口</em>通信</em>源码
Java串口通信详解(转)
Java<em><em>串口</em>通信</em>详解(转)序言    说到开源,恐怕很少有人不挑大指称赞。学生通过开源代码学到了知识,程序员通过开源类库获得了别人的成功经验及能够按时完成手头的工程,商家通过开源软件赚到了钱……,总之是皆大欢喜。然而开源软件或类库的首要缺点就是大多缺乏详细的说明文档和使用的例子,或者就是软件代码随便你用,就是文档,例子和后期服务收钱。                              
C#通讯编程入门--串口数据接收发送实例
转自:http://www.cnblogs.com/bmbh/p/3795774.html 虚拟<em>串口</em>驱动工具,创建俩个虚拟<em>串口</em>,如图:   创建两个Console模拟<em>串口</em>的发送接收数据 C#<em>串口</em>数据接收发送,类空间: using System.IO.Ports;   C# 串行端口 接收数据,代码如下: /
c#串口通信(控制台程序)
本文介绍的是利用控制台进行<em><em>串口</em>通信</em>,网上有很多的文章都是使用winform来介绍<em><em>串口</em>通信</em>,有些文章并没有给出winform的UI界面,这需要我们去猜那个控件对于的代码了,这相当于费脑子。这是基于这个原因,我利用控制台程序讲解<em><em>串口</em>通信</em>的大概流程,有什么不对的地方,请多多指教。   由于我在同一台PC机上测试并且我手头上没有<em>串口</em>线,不然我可以利用COM线把PC机上的COM1口和COM2口接起来的,...
串口通讯以abc#方式发送,#为结束符, 返回abc。波特率:115200bps
#include #include #define uint unsigned int #define uchar unsigned char //定义控制LED灯的端口 #define LED1 P1_0 //定义LED1为P10口控制 #define LED2 P1_1 //函数声明 void Delayms(uint xms); //延时函数 v
C#串口通信实例(RS232SerialPort)
C#<em><em>串口</em>通信</em>实例(RS232SerialPort)
串口通信之数据接收处理1
<em><em>串口</em>通信</em>之数据接收处理1   如果通信物理设备连接如下图1所示,即计算机有1到多个<em>串口</em>,而每个<em>串口</em>设备下仅仅挂载1个采集器,那么协议就没必要地址码,协议可以是:同步头 + 命令字 + 数据长度 + 数据正文 + 校验码。此时各个<em><em>串口</em>通信</em>是互不相关的。                              接收数据可以采用一个队列,每当<em>串口</em>有数据,就直接进入数据队列,另一边再出队列
C#编写串口程序(详细教程)
https://wenku.baidu.com/view/8c6822f9a0116c175e0e4823.html
C# 解决串口接收数据不完整
使 用缓存机制完成。首先通过定义一个成员变量List buffer = new List (4096);用来存放所有的数据,在接收函数里,通过buffer.AddRange()方法不断地将接收到的数据加入到buffer中,并同时对 buffer中的数据进行检验,如果达到一定的长度并且校验结果正确(校验方法在发送方和接收方一致),再进行处理。具体代码如下:代码 private List buffer
C/C++串口通信(1)-同步操作
转自: 王柏元的博客 http://wangbaiyuan.cn/c-serial-communication-write-reading.html <em><em>串口</em>通信</em>方式:调用Windows的API函数两种操作方式: 1. 同步操作方式 API函数会阻塞直到操作完成以后才能返回(在多线程方式中,虽然不会阻塞主线程,但是仍然会阻塞监听线程); 2. 重叠操作方式(又称为异步操作方式)
C# 调用API 操作串口
本文转自:http://blog.csdn.net/wzwind/article/details/1898454   在调试ICU通信设备的时候,由于<em><em>串口</em>通信</em>老出现故障,所以就怀疑CF实现的SerialPort类是否有<em>问题</em>,所以最后决定用纯API函数实现<em>串口</em>读写。 先从网上搜索相关代码(关键字:C# API <em>串口</em>),发现网上相关的资料大约来源于一个版本,那就是所谓的msdn提供的样例代码(m
c#(csharp)串口通信程序
自己写的一个简单的测试程序,希望对于学习<em>c#</em><em><em>串口</em>通信</em>的有一定的启发作用,代码很简单,调用了一个三方的日志库,可以去LOgs文件夹下查看从<em>串口</em>接收到的数据
C#串口控件关闭时死机卡住
搞了三天的<em>串口</em>
C#串口通信程序SerialPort类
上篇文章主要是<em>关于</em><em><em>串口</em>通信</em>中单片机部分的程序编写。在实际应用中,常常还要有上位机的配合才能完成工作。写<em><em>串口</em>通信</em>的上位机程序,常常应用的编程语言有C++,VB,C#等。VB没有学过,C++编写窗口应用程序接触也不多,暑假自己看了一些C#的书,也有了一些了解,所以就用C#写窗口应用程序,用来作上位PC机的<em><em>串口</em>通信</em>程序。在写的过程中,主要参见了这篇博客http://blog.csdn.net/wuyaz
vs2008下的16进制串口通信,解决串口多帧少帧丢帧错帧问题
vs2008下的16进制<em><em>串口</em>通信</em>,解决<em>串口</em>多帧少帧丢帧错帧<em>问题</em>。
c#上位机串口通信助手源代码
非常适合初学者研究,功能齐全、智能好用,具体功能如下: 1软件打开时,自动检测有效COM端口 2 软件打开时,自动复原到上次<em>关闭</em>时的状态 3 不必<em>关闭</em><em>串口</em>,即可直接进行更改初始化设置内容(<em>串口</em>号、波特率、数据位、停止位、校验位),可按更改后的信息自动将<em>串口</em>重新打开 4 可统计接收字节和发送字节的个数 5 接收数据可按16进制数据和非16进制数据进行整体转换 6 可将接收到数据进行保存 7 可设置自动发送,发送时间可进行实时更改 8可按字符串、16进制字节、文件方式进行发送,字符串和16进制字节可分别进行存储,内容互不干扰 9 按16进制发送时,可自动校验格式,不会输错 10 可清空发送或接收区域的数据 欢迎对<em>c#</em>有兴趣的爱好者们,加入<em>c#</em>技术交流群(33647125)
串口的超时设置(加心得)
在WIN32  API编程中,除了DCB结构之外,还需要了解COMMTIMEOUTS结构.这个结构是为了读写<em>串口</em>的超时而设置的.  COMMTIMEOUTS结构如下:           typedef   struct   _COMMTIMEOUTS   {        DWORD   ReadIntervalTimeout;                 //任意相邻连个字符之
STM32F103串口通讯注意事项。
(1)通过<em>串口</em>不断发送数据 库函数中的 void USART_SendData(USART_TypeDef* USARTx, uint16_t Data); 函数不具备缓存作用,当我们需要连续不断发送一段数据时,我们需要等待前一次数据发送完成,放置数据丢失错误 void usart2_send_char(u8 _char) { /* 等待上一次发送完成*/ while( !(USA...
基于VS2013 C# 多串口通讯演示源代码
最近有个项目需要用到9个<em>串口</em>通讯,找了好多资料都不全,最后结合网上的资料写了一个全面的4组虚拟<em>串口</em>之间应答握手的范例,有需要的朋友可以拿去测试一下
VS2010中MSCOMM 串口通信控件的注册使用
VS2010本身并不自带MSCOMM控件,因此在Win7、win8/8.1系统中使用VS2010进行<em>串口</em>编程时, 在COM控件一栏中没法找到Microsoft communications control,version 6.0。     网上解决这个<em>问题</em>的文章很多,但尝试了很多种方法都没有解决,原因是很多文章都是没有 具体的给出具体的细节,导致有些操作没法进行。    
c#串口通信类,实现多线程
<em>c#</em><em><em>串口</em>通信</em>类,实现了多线程技术,和大家共同进步,共同学习
串口基本概念和C#串口编程例子
<em>串口</em>是计算机上一种非常通用设备通信的协议(不要与通用串行总线Universal Serial Bus或者USB混淆)。大多数计算机包含两个基于RS232的<em>串口</em>。<em>串口</em>同时也是仪器仪表设备通用的通信协议;很多GPIB兼容的设备也带有RS-232口。同时,<em><em>串口</em>通信</em>协议也可以用于获取远程采集设备的数据。 <em><em>串口</em>通信</em>的概念非常简单,<em>串口</em>按位(bit)发送和接收字节。尽管比按字节(byte)的并行通信慢,但是
文章热词 双目视觉问题 特征点问题 相机标定问题 最优化问题 统计学稳健估计问题
相关热词 c++ 关于unique的问题 c# 子窗体关闭时 c# 关闭释放串口 c#的串口不能关闭 学习python时遇到的问题 关于python培训班
我们是很有底线的