电子称串口编程

        private const int BaudRate = 600; // 电子称波特率
        private SerialPort sp = null;
        private const string PortName = "COM1";//端口号
        private delegate void UpdateTextEventHandler(string data);//定义委托
        private event UpdateTextEventHandler textChanged;//定义事件

     private void initPort()
        {
            sp = new SerialPort();
            try
            {
                sp.PortName = PortName;//端口号
                sp.BaudRate = BaudRate; //波特率
                sp.DataBits = 8;//数据位 8位
                sp.Parity = Parity.None;//无奇偶校验位 
                sp.DtrEnable = true;
                sp.RtsEnable = true;
                sp.DataReceived += new SerialDataReceivedEventHandler(sp_DataReceived);
                textChanged += new UpdateTextEventHandler(SerialPortTest_textChanged);
                if (!sp.IsOpen)
                {
                    sp.Open();
                }
            }
            catch (Exception ex)
            {
                FunctionsUI.CreateErrorDialog(ex);
            }
        }


        /// <summary>
        /// 发送数据请求命令
        /// </summary>
        private void sendDataRequest()
        {
            byte[] arrByte = new byte[2];
            //发送命令 1BH+70H  与电子称通讯,读取电子称数据,16进制
            arrByte[0] = Convert.ToByte(0x1B);
            arrByte[1] = 0x70;
            sp.Write(arrByte, 0, 2);
            byte[] buffer = new byte[sp.BytesToRead];
        }

      //返回数据,对数据进行处理
        void SerialPortTest_textChanged(string data)
        {
       //TODO
        }


        void sp_DataReceived(object sender, SerialDataReceivedEventArgs e)
        {
            try
            {
                System.Threading.Thread.Sleep(500);//如果时间短了可能读取数据不完整
                byte[] buffer = new byte[sp.BytesToRead];
                sp.Read(buffer, 0, buffer.Length);
                string data = System.Text.Encoding.ASCII.GetString(buffer);
                txtWight.Invoke(textChanged, new string[] { data }); //通过Invoke调用事件
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }

        }


        /// <summary>
        /// 关闭串口
        /// </summary>
        public void DisposeProt()
        {
            if (sp != null && sp.IsOpen)
            {
                sp.Close();
            }
        }
</pre><pre name="code" class="csharp">

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值