求C#的串口通信例子,用MSCOMM控件的

caohongtai 2009-06-10 11:51:40
如题
...全文
358 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
caohongtai 2009-06-12
  • 打赏
  • 举报
回复
我开了线程接数据了,但是我的界面还是反应慢,如果串口发的速度特别快,还是无响应,用调试助手就不会出这问题,所以肯定是我程序的错。在csdn的下载里搜到了C#的串口助手源代码,但是积分不够,下不了……
睡神在睡觉 2009-06-11
  • 打赏
  • 举报
回复
直接用微软的SerialPort类

看看MSDN的SerialPort类说明,基本没必要用MSCOMM
龙宜坡 2009-06-11
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 caohongtai 的回复:]
谢谢各位,程序我基本写好了,但是有一个问题就是如果对方给我连续的发送数据,我的程序界面会拖不动,是不是因为接收数据和界面是在一个线程里的缘故?
[/Quote]

是的,再开一个线程接收数据
dai78 2009-06-11
  • 打赏
  • 举报
回复
用Serport控件
龙宜坡 2009-06-11
  • 打赏
  • 举报
回复
goga21cn@126.com,给我发邮件,发给你!
  • 打赏
  • 举报
回复
对的SERIALPORT
wt_sanlian 2009-06-11
  • 打赏
  • 举报
回复
如果是.net2.0 的话,直接用微软的SerialPort类
caohongtai 2009-06-11
  • 打赏
  • 举报
回复
谢谢各位,程序我基本写好了,但是有一个问题就是如果对方给我连续的发送数据,我的程序界面会拖不动,是不是因为接收数据和界面是在一个线程里的缘故?
龙宜坡 2009-06-11
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 sleep0110 的回复:]
直接用微软的SerialPort类

看看MSDN的SerialPort类说明,基本没必要用MSCOMM

[/Quote]

要看具体情况!

我以前用.NET2.0带的SerialPort控件实现串口发送接收数据,但是总是丢失数据或发送失败的一些情况,头疼了好久!

后来改用MSCOMM32后就非常好了,至今都没有出现过问题!

MSCOMM32是以前VB6.0带的一个用C++写的控件!
好像.NET对底层硬件的操作和以前的不一样了!
龙宜坡 2009-06-11
  • 打赏
  • 举报
回复
caohongtai@163.com已发!
lyyce@163.com已发!
duping9626 2009-06-11
  • 打赏
  • 举报
回复
添加mscomm控件(COM组件:MSCOMM32.OCX)

//初始化控件
public static void InitAxSign(ref AxMSCommLib.AxMSComm AxMSComm1)
{
AxMSComm1.RThreshold=9; //卡长度
AxMSComm1.CommPort = 1; //端口1
AxMSComm1.RThreshold = 10; //卡长度
AxMSComm1.InBufferSize = 10;
AxMSComm1.Settings = "9600,n,8,1"; //速率,奇偶效验
AxMSComm1.PortOpen = true; //打开端口
AxMSComm1.InputLen = 0;
AxMSComm1.InBufferCount = 0;

this.AxMSComm1.OnComm += new System.EventHandler(this.AxMSComm1_OnComm);
}

//读取数据(卡号)
private void AxMSComm1_OnComm(object sender, System.EventArgs e)
{

if(this.AxMSComm1.CommEvent!=1 && this.AxMSComm1.PortOpen==true)
{
string strCardNo;
strCardNo = "";
strCardNo = this.AxMSComm1.Input.ToString().Replace(" ",""); //去除空格
strCardNo = strCardNo.Replace("\n","").Replace("\r",""); //去除控制字符
strCardNo = strCardNo.Replace("?","").Replace("s","").Replace("A","").Replace(";",""); //去除其他字
}
}
CSharpEx 2009-06-10
  • 打赏
  • 举报
回复
别用这个,微软有串口的Class可以使用,很好用的
书名:《Visual C#.NET串口通信及测控应用典型实例》(电子工业出版社.李江全.邓红涛.刘巧.李伟) PDF格式扫描版,全书分为8章,共369页。2012年5月出版。 全书压缩打包成3部分,这是第3部分 内容简介 本书从工程应用的角度出发,通过8个典型应用实例,包括PC与PC、PC与单片机、PC与PLC、PC与远程I/O模块、PC与智能仪器、PC与无线数传模块、Pc与USB数据采集模块等组成的测控系统,利用SerialPort控件和MSComm控件编写C#.NET串口通信程序,并对计算机测控系统中的4类典型应用((模拟量输入(AI)、模拟量输出(AO)、数字量输入(DI)和数字量输出(DO)的程序设计方法进行了详细的讲解。 目 录 第1章 PC与PC串口通信 1.1 串口通信概述 1.1.1 串口通信的基本概念 1.1.2 RS-232C接口标准 1.1.3 RS-422/485接口标准 1.1.4 串口通信线路连接 1.1.5 PC中的串行端口 1.1.6 虚拟串口的使用 1.2 VC++.NET串行通信控件与API函数 1.2.1 MSComm控件的使用 1.2.2 SerialPort控件的使用 1.2.3 串行通信API函数 1.3 PC与PC串口通信实例 1.3.1 两台PC串口通信 1.3.2 一台PC双串口互通信 第2章 PC与单片机串口通信 2.1 典型单片机开发板简介 2.1.1 单片机测控系统的组成 2.1.2 单片机开发板B的功能 2.1.3 单片机开发板B的主要电路 2.2 PC与单片机串口通信实例 2.2.1 PC与单个单片机串口通信 2.2.2 PC与多个单片机串口通信 2.3 PC与单片机串口通信测控应用实例 2.3.1 模拟量输入 2.3.2 模拟量输出 2.3.3 开关量输入 2.3.4 开关量输出 第3章 PC与西门子PLC串口通信 3.1 西门子PLC模拟量扩展模块与通信协议 3.1.1 西门子PLC模拟量输入模块 3.1.2 西门子PLC PPI通信协议 3.2 PC与西门子PLC串口通信测控应用实例 3.2.1 模拟量输入 3.2.2 模拟量输出 3.2.3 开关量输入 3.2.4 开关量输出 第4章 PC与三菱PLC串口通信 4.1 三菱PLC特殊功能模块与通信协议 4.1.1 FX2N系列PLC的特殊功能模块 4.1.2 三菱PLC编程口通信协议 4.2 PC与三菱PLC串口通信测控应用实例 4.2.1 模拟量输入 4.2.2 模拟量输出 4.2.3 开关量输入 4.2.4 开关量输出 第5章 PC与分布式I/O模块串口通信 5.1 典型分布式I/O模块简介 5.1.1 集散控制系统的结构与特点 5.1.2 ADAM4000远程数据采集控制系统 5.1.3 ADAM4000系列模块简介 5.1.4 ADAM4000系列模块的软件安装 5.2 PC与分布式I/O模块串口通信测控应用实例 5.2.1 模拟量输入 5.2.2 模拟量输出 5.2.3 数字量输入 5.2.4 数字量输出 第6章 PC与智能仪器串口通信 6.1 典型智能仪器简介 6.1.1 智能仪器的结构与特点 6.1.2 XMT-3000A型智能仪器的通信协议 6.2 PC与智能仪器串口通信测控应用实例 6.2.1 PC与单台智能仪器温度测控 6.2.2 PC与多台智能仪器温度测控 第7章 PC与无线数据传输模块串口通信 7.1 典型无线数传模块简介 7.1.1 无线数传技术概述 7.1.2 DTD46X系列无线数传模块 7.2 PC与无线数传模块串口通信测控应用实例 7.2.1 设计任务 7.2.2 线路连接 7.2.3 利用C51语言实现基于DS18B20的单片机温度测控 7.2.4 利用汇编语言实现基于DS18B20的单片机温度测控 7.2.5 利用VC++.NET实现PC与无线数传模块温度测控 第8章 USB串行总线模块测控应用 8.1 USB总线在数据采集系统中的应用 8.1.1 USB总线及其数据采集系统的特点 8.1.2 采用USB传输的数据采集系统 8.1.3 典型USB数据采集模块及应用 8.1.4 VC++.NET数据采集与控制的方式 8.2 PC与USB数据采集模块测控应用实例 8.2.1 模拟量输入 8.2.2 模拟量输出 8.2.3 数字量输入 8.2.4 数字量输出 参考文献

110,535

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧