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

caohongtai 2009-06-10 11:51:40
如题
...全文
368 14 打赏 收藏 转发到动态 举报
AI 作业
写回复
用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可以使用,很好用的

111,094

社区成员

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

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

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