C# SerialPort 串口通讯

qianhe_he 2010-02-22 10:19:18
我用VS 2005 C#写串口 在打开串口就有问题 帮忙看看啊

public partial class Form1 : Form
{
myCom1 comm = new myCom1();
parameter p = new parameter();
public Form1()
{
InitializeComponent();

}



public class myCom1
{
public event SerialDataReceivedEventHandler Received;
public event SerialErrorReceivedEventHandler Error;

public bool ReceiveEventFlag = false; //接收事件是否有效 false表示有效


public SerialPort SpCom1 ;
public SerialPort SpCom2 ;
//初始化串口
public myCom1()
{
SpCom1 = new SerialPort("COM1", 19200, Parity.None, 8, StopBits.One);
SpCom1.RtsEnable = true;
SpCom1.ReadTimeout = 3000;
SpCom1.DataReceived += new SerialDataReceivedEventHandler(DataReceived1);
SpCom1.ErrorReceived += new SerialErrorReceivedEventHandler(ErrorEvent);

SpCom2 = new SerialPort("COM2", 19200, Parity.None, 8, StopBits.One);
SpCom2.RtsEnable = true;
SpCom2.ReadTimeout = 3000;
SpCom2.DataReceived += new SerialDataReceivedEventHandler(DataReceived2);
SpCom2.ErrorReceived += new SerialErrorReceivedEventHandler(ErrorEvent);


}

~myCom1()
{
Close1();
Close2();
}
// public SerialPort SpCom1 = new SerialPort("COM1", 19200, Parity.None, 8, StopBits.One);
//public SerialPort SpCom2 = new SerialPort("COM2", 19200, Parity.None, 8, StopBits.One);

//打开串口
public void Open1()
{

if (!SpCom1.IsOpen)
SpCom1.Open();
}

public void Open2()
{

if (!SpCom2.IsOpen)
SpCom2.Open();
}

private void Form1_Load(object sender, EventArgs e)
{
this.MaximizeBox = false;

// comm.Open1();
}
//打开串口
private void Bt_Open_Click(object sender, EventArgs e)
{
comm.Open1();

comm.Open2();
}



在监控器中显示发送两遍

Read:

Baud rate set to 19200

StopBits: 1 stop bit, Parity: No parity, WordLength: 8

Baud rate set to 19200

StopBits: 1 stop bit, Parity: No parity, WordLength: 8

Port closed

write:

Port opened

Baud rate set to 19200

StopBits: 1 stop bit, Parity: No parity, WordLength: 8

Baud rate set to 19200

StopBits: 1 stop bit, Parity: No parity, WordLength: 8

Port closed
...全文
198 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
zbwmx 2010-02-23
  • 打赏
  • 举报
回复
我这里和你的一样,只要没有影响使用,就先放放吧,慢慢找答案,呵呵
qianhe_he 2010-02-22
  • 打赏
  • 举报
回复
影响使用 。 com1 和com2 都是打开了两次 帮忙想想办法啊
zbwmx 2010-02-22
  • 打赏
  • 举报
回复
其实也没必要深究这个吧,只要不影响你使用就可以了啊。不过我还真的没有搞懂为什么是2次, 呵呵
walkghost 2010-02-22
  • 打赏
  • 举报
回复
引用 6 楼 kingdomgps 的回复:
额的神啊
你自己写的
comm.Open1();
comm.Open2();

那肯定就显示两遍了撒
一遍是com1,一遍是com2啊

你只写Open1试试

UP。
兰州你打开了两次啊。
星云一点 2010-02-22
  • 打赏
  • 举报
回复
写得比较乱 有一些地方可能不严谨
注册失败 2010-02-22
  • 打赏
  • 举报
回复
额的神啊
你自己写的
comm.Open1();
comm.Open2();

那肯定就显示两遍了撒
一遍是com1,一遍是com2啊

你只写Open1试试
oneatree 2010-02-22
  • 打赏
  • 举报
回复
YANJIU 需啊飞
qianhe_he 2010-02-22
  • 打赏
  • 举报
回复
问题是串口发送了两遍初始化的东西 应该是一边
yilaozhuang 2010-02-22
  • 打赏
  • 举报
回复
还是说清楚有什么问题,不然看的太费劲
zbwmx 2010-02-22
  • 打赏
  • 举报
回复
RtsEnable 设为false。

还有 是不是可以把代码贴全啊?
qianhe_he 2010-02-22
  • 打赏
  • 举报
回复
奥 可能是因为我改了一些默认的SerialPort 的设置的原因吧 我改了其他的地方 不影响使用了但是还是两次
zbwmx 2010-02-22
  • 打赏
  • 举报
回复
不管你怎么调试都是2次的,我已经试过了。可是我这里不影响使用啊。
兔子-顾问 2010-02-22
  • 打赏
  • 举报
回复
单步调试
回复内容太短了!

110,536

社区成员

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

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

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