using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO.Ports;
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)利用串口调试助手向我编写的程序发送数据时,接收不到数据。请高人指点,我刚刚开始学习这么语言,最好能说的详细些。

解决方案 »

  1.   

    你把发和收2根线短起来,再断点一下,看看情况在什么地方,CE和PC上程序都是一样的
      

  2.   

    pc上用的是串口调试助手,arm 上是我编写的设备应用程序,用来收发通过串口传来的数据。
      

  3.   

    我以前在PC上的串口程序弄到CE上一样的可以用咯
      

  4.   

    问题(1)当向pc机上的串口调试助手发送数据时,串口调试助手可以接收到数据,但不是我所发送的数据;

    你把你的数据转换成base64了,你说串口助手会主动帮你把base64的数据转换成你要的数据吗?我看不会。你直接吧byte数据发送的串口就好了,不要转换成base64,或者你把base64编码的数据自己在程序中转换一下。另外即使不转换成base64编码格式的数据,在串口调试助手里,也不一定能是你想要的数据,它是二进制显示的,你可以把这个数据和你自己转换后的二进制数据比对一下看看是否相同。
    问题(2)利用串口调试助手向我编写的程序发送数据时,接收不到数据。请高人指点,我刚刚开始学习这么语言,最好能说的详细些。

    你看看自己的代码,数据发送完就关闭串口了,串口调试助手给你发过来数据,你能收到吗?想收到串口助手发的数据,你的设备串口必须一直开着。软件启动后,就把串口打开,在串口的DataRevice事件里,可以接受到数据的。这个例子是以前在wince5上写和串口gprs模块通讯的例子。
    参考
      

  5.   

    或者哪位高人有串口接收显示的程序,传给我学习参考下,QQ1105871845 ,最好是用IO.Ports的
      

  6.   

      void SP_DataReceived(object sender, SerialDataReceivedEventArgs e)
            {
                int bytesCanRead=SP.BytesToRead;
                if (bytesCanRead > 0)
                {
                    string s = SP.ReadExisting();
                    textBox2.Text = s;.....提示需要独立的线程            }
            }
    现在串口接收做到这了,又跳出来独立线程,有人知道怎么做吗?是不是还挺难的啊,还没接触过,请高人们继续指导。谢谢谢谢!
      

  7.   

    textBox2.Text 这个用委托去处理吧
    textbox2.invoke(new Eventh..(del..
    {
    textbox2.text=..
    }));
    你把PC的发送线和PDA的接受线连起来,PDA的发送连接PC的接受就可以玩了
      

  8.   

    哈哈,太好啦!成功接收并显示啦!用了lfqsy的方法!谢谢啊!好激动!
    这个帖子最后最后的一个问题,pc机上的串口调试助手是循环发送数据的,这句textbox2.text=s,只能显示当前的数据,原先的数据都会被覆盖,要用什么语句才能实现在文本框把每次循环发送的数据都显示出来呢?
      

  9.   

     哈哈,用这个就行啦!textBox2.Text+=s;