标题:c#串口通信问题
只看楼主
贾丹丹
Rank: 2
等 级:论坛游民
帖 子:19
专家分:25
注 册:2011-7-27
结帖率:100%
已结贴  问题点数:40 回复次数:17 
c#串口通信问题
using System;
using System.Collections.Generic;
using
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using
namespace comtry0
{
  public partial class Form1 : Form
  {
  public Form1()
  {
  InitializeComponent();
  }

  private void Form1_Load(object sender, EventArgs e)
  {

  }

  private void button1_Click(object sender, EventArgs e)
  {
  SerialPort SerialPort1 = new SerialPort();
  SerialPort1.PortName = "COM1";
  SerialPort1.BaudRate = 115200;
  SerialPort1.DataBits = 8;
  SerialPort1.Parity = Parity.None ;
  SerialPort1.StopBits = StopBits.One ;
  SerialPort1.ReadTimeout = 1000;
  SerialPort1.Open();
  byte[] date = Encoding.Unicode.GetBytes(textBox1.Text);
  string str = Convert.ToBase64String(date);
  SerialPort1.WriteLine(str);
  MessageBox.Show("数据发送成功");
  SerialPort1.Close();
  }

  private void button2_Click(object sender, EventArgs e)
  {
  SerialPort SerialPort1 = new SerialPort();
  SerialPort1.PortName = "COM1";
  SerialPort1.BaudRate = 115200;
  SerialPort1.DataBits = 8;
  SerialPort1.Parity = Parity.None;
  SerialPort1.StopBits = StopBits.One;
  SerialPort1.ReadTimeout = 1000;
  SerialPort1.Open();
  byte[] date = Convert.FromBase64String(SerialPort1.ReadLine());
  textBox2.Text = Encoding.Unicode.GetString(date,0,date.Length);
  SerialPort1.Close();
  MessageBox.Show("数据接收成功");
  }
这是我写的在wince6下的串口发送和接收的设备应用程序,问题(1)当向pc机上的串口调试助手发送数据时,串口调试助手可以接收到数据,但不是我所发送的数据;问题(2)利用串口调试助手向我编写的程序发送数据时,接收不到数据。请高人指点,我刚刚开始学习这么语言,最好能说的详细些。
搜索更多相关主题的帖子: private public class using 
2011-08-10 15:54
guang
Rank: 4
来 自:广东深圳
等 级:贵宾
威 望:13
帖 子:1414
专家分:285
注 册:2006-4-3
得分:10 
1、改用Write方法直接写入字节数组试试
2、使用DataReceived方法接收数据

不相信未作牺牲竟先可拥有,只相信靠双手找到我的欲求!!
我的博客:http://liao5930.blog.
2011-08-10 17:05
贾丹丹
Rank: 2
等 级:论坛游民
帖 子:19
专家分:25
注 册:2011-7-27
得分:0 
谢谢,我去试试啊。
2011-08-11 08:19
贾丹丹
Rank: 2
等 级:论坛游民
帖 子:19
专家分:25
注 册:2011-7-27
得分:0 
不行啊,或者哪位高人有串口接收显示的程序,传给我学习参考下,QQ1105871845
2011-08-11 09:57
zhoufeng1988
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:北京
等 级:贵宾
威 望:27
帖 子:1432
专家分:6329
注 册:2009-5-31
得分:30 
我试了下,直接用WriteLine和ReadLine就可以了。直接传string就可以了啊。但我的不是WINCE,我是Windows。我想应该不会有问题吧?

串口打开一次就可以了。用完了记得关闭。
注意检测一下串口的波特率等参数是否一致,如果不一致会导致乱码。

SerialPort_VS2005.rar (33.25 KB)
2011-08-11 12:50
贾丹丹
Rank: 2
等 级:论坛游民
帖 子:19
专家分:25
注 册:2011-7-27
得分:0 
第一个问题解决了,有人能告诉我怎样使用DataReceived方法接收和显示数据吗?网上搜了一些,不过都不知道该这么用。。帮帮忙
2011-08-11 17:13
贾丹丹
Rank: 2
等 级:论坛游民
帖 子:19
专家分:25
注 册:2011-7-27
得分:0 
5楼的朋友你好,非常感谢你提供源程序给我!我在这边跑了你给的程序的时候,运行没有问题,可是当我点接收按钮的时候窗口就直接死掉了。我现在的程序也存在这个问题不知道哪位高人能够接着解答。
2011-08-11 17:23
zhoufeng1988
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:北京
等 级:贵宾
威 望:27
帖 子:1432
专家分:6329
注 册:2009-5-31
得分:0 
这是同步串口的问题。程序会停在接收串口数据方法调用中,知道收到数据为止。
可以考虑用异步串口。网上有一些资料。
2011-08-11 17:42
贾丹丹
Rank: 2
等 级:论坛游民
帖 子:19
专家分:25
注 册:2011-7-27
得分:0 
在窗口应用程序中,当我写入this.txtReceiveData.AppendText(this.serialPort.ReadLine())时,error list 会提醒说 'System.Windows.Forms.TextBox' does not contain a definition for 'AppendText',是不是我这不能用'AppendText'啊?
2011-08-11 17:45
zhoufeng1988
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:北京
等 级:贵宾
威 望:27
帖 子:1432
专家分:6329
注 册:2009-5-31
得分:0 
DataReceived不是方法,是一个事件,是指当串口收到数据时触发的事件。这个千万不要搞错了。
网上有不少资料啊?

还有使用异步方式调用接收串口数据方法、或者专门开辟一个线程来接收串口数据也可以。
2011-08-11 17:53



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-347243-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.177594 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved