这是《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 {
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("数据接收成功!","系统提示");
}
}
}
至于编码则很简单:
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]+" ";
}
上面写了一个大概:)
还有其它方法也可以:)
我在程序里写成这样
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
不知道是怎么处理的?