我刚接触这个串口,现在有一个问题是怎么发送和处理读取的数据?好比:"02000200348>" 转换成 "02 30 32 30 30 30 32 30 30 33 34 38 03 3E"这样的形式?这一串是从“串口调试助手”上得到的

解决方案 »

  1.   

    这是《C#编程范例宝典》上的例子,自己参考一下
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;using System.Runtime.InteropServices;namespace Ex13_01
    {
        public partial class Form1 : Form
        {
            
            public Form1()
            {
                InitializeComponent();
            }        private void button1_Click(object sender, EventArgs e)
            {
                serialPort1.PortName = "COM1";
                serialPort1.BaudRate = 9600;
                serialPort1.Open();
                byte[] data = Encoding.Unicode.GetBytes(textBox1.Text);
                string str = Convert.ToBase64String(data);
                serialPort1.WriteLine(str);
                MessageBox.Show("数据发送成功!","系统提示");
            }        private void button2_Click(object sender, EventArgs e)
            {
                byte[] data = Convert.FromBase64String(serialPort1.ReadLine());
                textBox2.Text = Encoding.Unicode.GetString(data);
                serialPort1.Close();
                MessageBox.Show("数据接收成功!","系统提示");
            }
        }
    }
      

  2.   

    HOHO,后面的是以空格分析的收到的字节流。
    至于编码则很简单:
    byte[] rawdata = new byte[50];
    int k = sp.Receive(rawdata);  //乱写的,假定数据接收到了
    string s = Convert.ToString(rawdata);  //这里得到的字节流不是以空格分割的,而是连续的如:023032303030
    //自己再分割一下:
    string s2 = "";
    for(int i = 0;i<s.Length;i=i+2)
    {
        s2+=s[i]+s[i+1]+" ";
    }
    上面写了一个大概:)
    还有其它方法也可以:)
      

  3.   

    看过,可是我公司里的发送数据是ascii码的还是16进hex的。
      

  4.   

    串口助手收到的数据是这样的“02 30 32 30 30 30 32 30 30 33 34 38 03 3E”
    我在程序里写成这样
            private void serialPort1_DataReceived_1(object sender, SerialDataReceivedEventArgs e)
            {
                try
                {
                     int buffersize =4;
                    byte[] data = new byte[buffersize];
                    listBox1.Items.Add( serialPort1.Read(data,0,buffersize));               
                }
                catch (Exception ex)            {                MessageBox.Show(ex.ToString());
                }
            }
    收到的却是4
             4
             4
             2
    不知道是怎么处理的?