学习C Sharp主要的目的就是为了给项目做一个PC端的界面,并且通过串口和所用的CC2430之间通信。
C#里面的串口类非常好用,这里就不详细说了。。
下面是接收端的事件
private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{
FileStream Save = new FileStream(@"E:/received.dat", FileMode.Append, FileAccess.Write);
Byte[] array = new byte[1024];
int count = serialPort1.BytesToRead;
serialPort1.Read(array, 0, count);
Save.Write(array, 0, count);
Save.Close();
}
这里所有的操作都是同步的,异步的我还没研究过。。
下面是发送端的代码:
private void button1_Click(object sender, EventArgs e)
{
Byte[] arry = new Byte[100];
try
{
serialPort1.Open();
// serialPort2.Open();
// if (serialPort1.IsOpen) MessageBox.Show("Serial 1 opened");
}
catch
{
MessageBox.Show("Port one open Failed");
}
FileInfo file = new FileInfo(@"E:/test.BMP");
FileStream Send = new FileStream(@"E:/test.BMP", FileMode.Open, FileAccess.ReadWrite);
for (int i = 0; i < Send.Length/100; i++)
{
Send.Read(arry, 0, 100);
//线程挂起250mS
// System.Threading.Thread.SpinWait(250);
//Thread.sleep(int)也能使程序挂起。。不过容易让人感觉程序失去响应
serialPort1.Write(arry, 0, 100);
} //每次向串口发送100个字节,最后再把不足100字节的结尾给发送过去
Send.Read(arry, 0,(int) (Send.Length%100));
serialPort1.Write(arry, 0, (int)(Send.Length % 100));
serialPort1.Close();
Send.Close();
}