用线程是一种方式,也可以用自带的组件是异步的,如果不用组件用API写串口,应该启用两个线程,用作读写。
以下代码是可以用来学习的
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Threading;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1 mainform;
public Form2 f;
private bool show_or_not = true; //是否显示接收和发送
private byte[] send = new byte[50]; //要发送的字节
private byte[] receive = new byte[50]; //要接收的字节
private byte sendnum; //需要发送的数据个数
private byte receivenum; //需要返回的数据个数
Thread trd; //开一个线程
private delegate void DelegateFunciton();
public Form1()
{
InitializeComponent();
}
private void CreateHeadersAndFillListview()
{
listView1.Columns.Add("数据大小", 77, HorizontalAlignment.Left);
listView1.Columns.Add("数据项名称",140, HorizontalAlignment.Left);
listView1.Columns.Add("标识编码", 75, HorizontalAlignment.Right);
}
private void PaintListView()
{
listView1.BeginUpdate();
listView1.Items.Add("0", "00001234", 0);
listView1.Items[0].SubItems.Add("正向有功功率");
listView1.Items[0].SubItems.Add("0x9010");
listView1.Items.Add("1", "00001234", 0);
listView1.Items[1].SubItems.Add("费率1正向有功功率");
listView1.Items[1].SubItems.Add("0x9011");
listView1.Items.Add("2", "00001234", 0);
listView1.Items[2].SubItems.Add("费率2正向有功功率");
listView1.Items[2].SubItems.Add("0x9012");
listView1.Items.Add("3", "00001234", 0);
listView1.Items[3].SubItems.Add("费率3正向有功功率");
listView1.Items[3].SubItems.Add("0x9013");
listView1.Items.Add("4", "00001234", 0);
listView1.Items[4].SubItems.Add("费率4正向有功功率");
listView1.Items[4].SubItems.Add("0x9014");
listView1.Items.Add("5", "00001234", 0);
listView1.Items[5].SubItems.Add("反向有功功率");
listView1.Items[5].SubItems.Add("0x9020");
listView1.Items.Add("6", "00001234", 0);
listView1.Items[6].SubItems.Add("费率1反向有功功率");
listView1.Items[6].SubItems.Add("0x9021");
listView1.Items.Add("7", "00001234", 0);
listView1.Items[7].SubItems.Add("费率2反向有功功率");
listView1.Items[7].SubItems.Add("0x9022");
listView1.Items.Add("8", "00001234", 0);
listView1.Items[8].SubItems.Add("费率3反向有功功率");
listView1.Items[8].SubItems.Add("0x9023");
listView1.Items.Add("9", "00001234", 0);
listView1.Items[9].SubItems.Add("费率4反向有功功率");
listView1.Items[9].SubItems.Add("0x9024");
listView1.Items.Add("10", "00001234", 0);
listView1.Items[10].SubItems.Add("反向无功功率");
listView1.Items[10].SubItems.Add("0x9120");
listView1.Items.Add("11", "00001234", 0);
listView1.Items[11].SubItems.Add("费率1反向无功功率");
listView1.Items[11].SubItems.Add("0x9121");
listView1.Items.Add("12", "00001234", 0);
listView1.Items[12].SubItems.Add("费率2反向无功功率");
listView1.Items[12].SubItems.Add("0x9122");
listView1.Items.Add("13", "00001234", 0);
listView1.Items[13].SubItems.Add("费率3反向无功功率");
listView1.Items[13].SubItems.Add("0x9123");
listView1.Items.Add("14", "00001234", 0);
listView1.Items[14].SubItems.Add("费率4