地磅称量系统之(60) 接收地磅发送过来的数据显示在LCD上

 

让知识更加联贯 让技术走进生活
我的博客        我的程序 我的网络
               ------郑紫至
               E-mail:zhengzizhi@yahoo.com.cn
地磅称量系统
60.
打开端口
        private void FrmWtBill_Load(object sender, EventArgs e)
        {
            db = new WtBillMappingDataContext();
            var WtBills = from a in db.WtBills
                          orderby a.BillNo
                          select a;
            BindData();
            this.bindingSource1.DataSource = WtBills;
            //InitColumn() 放在提供数据源控件之后初始化这样每列次序会按照我们预期的顺序排列。
            // 不使用编程方式来实现每列的属性也可以,在dataGridView1上直接编辑每列的属性。
            InitColumn();
            // 如果COM口关闭了,就打开它
            if (this.serialPort1.IsOpen == false) { this.serialPort1.Open(); }
        }
 
关闭端口
        private void FrmWtBill_FormClosed(object sender, FormClosedEventArgs e)
        {
            // 本窗口关闭后连同COM口一起关闭
            if (this.serialPort1.IsOpen != false) { this.serialPort1.Close(); }
        }
注释掉测试代码
       private void timer1_Tick(object sender, EventArgs e)
        {
            //Random rdm = new Random();
            //this.lcd1.LCDShowStringValue = rdm.Next(0,999999).ToString();
            //this.lcd1.LCDShowStringValue = DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss");
            //this.labelUnit.Text = string.Empty;// 隐藏 KG 字符
        }
接收COM口数据并在LCD控件上显示出来
        private void serialPort1_DataReceived(object sender,
System.IO.Ports.SerialDataReceivedEventArgs e)
        {
            // 等待100毫秒(0.1秒)接收数据,这个数据不是随便挑选的
            // 对于不同的硬件设备和不同配置的电脑,设置太大或者太小
            // 可能没有数据显示在LCD上,可能显示的数据是正确结果后面
            // 几位数据也可能是正确结果前面数据的几位,我以前在现场
            // 调试的时候试过,这个数据大概在80~120之间随便挑个数据
            // 就能正常接收串口发过来的数据
            System.Threading.Thread.Sleep(100);
            // 我在超级终端中数了一下一次完整的数据发送一共有16位
            // 为了确定有没有特殊的不可见字符,我稍微把下面这个字节
            // 数组定义的大了一点点,选择了一个20,然后调试程序过程中
            // 发现后面有一个空格字符,故把这种型号的设备定义为17位的
            byte[] SavingBytesFromComPort = new byte[17];
            this.serialPort1.Read(SavingBytesFromComPort, 0, 17);
            // 定义一个去掉字节后面7位和前4位的字符数组,只要截取需要重量数据
            char[] BytesToChars = new char[SavingBytesFromComPort.Length-7-4];
            // 从序号4、5、6、7、8、9的字节开始截取,并转换成字符
            for(int i=4; i< SavingBytesFromComPort.Length-7; i++)
            {
                BytesToChars[i] = Convert.ToChar(SavingBytesFromComPort[i]);
            }
            // 最终将字符数组转换字符串,并将结果在LCD控件上显示出来。
            string ShowResult = new string(BytesToChars);
            this.lcd1.LCDShowStringValue = ShowResult;
        }

 

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值