使用线程接收串口接收数据,DLT645 2007 智能电表抄表代码

用线程是一种方式,也可以用自带的组件是异步的,如果不用组件用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

  • 5
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值