c# 温湿度变送器传感器开发(一)

来源:互联网 发布:js中push 编辑:程序博客网 时间:2024/05/01 17:46

c# 温湿度传感器开发用的是tcp或者udp通信,这里介绍udp用法

代码就不上传了,想要可以私聊我,在开发过程中,不可避免出现问题,需要先调试走通,我是用的


设备是用的这款

https://s.click.taobao.com/w4mLMew


新建一个工程,直接发送请求数据命令

 /// <summary>        /// 发送信息        /// </summary>        /// <param name="obj"></param>        private void SendMessage(object obj)        {            string message = (string)obj;            //00 B0 D0 2A B7 3C FF 03 00 00 00 06            byte[] mybyte = new byte[12];            mybyte[0] = 0x00;            mybyte[1] = 0xB0;            mybyte[2] = 0xD0;            mybyte[3] = 0x2A;            mybyte[4] = 0xB7;            mybyte[5] = 0x3C;            mybyte[6] = 0xFF;            mybyte[7] = 0x03;            mybyte[8] = 0x00;            mybyte[9] = 0x00;            mybyte[10] = 0x00;            mybyte[11] = 0x06;            IPEndPoint remoteIpep = new IPEndPoint(                IPAddress.Parse(ConfigurationManager.AppSettings["IP"]), Int32.Parse(ConfigurationManager.AppSettings["Port"])); // 发送到的IP地址和目标端口号            udpcSend.Send(mybyte, mybyte.Length, remoteIpep);            udpcSend.Close();        }        private void sendMessage() {            // 实名发送            try            {                IPEndPoint localIpep = new IPEndPoint(             IPAddress.Parse(ip), Int32.Parse(ConfigurationManager.AppSettings["CurrentPort"])); // 本机IP,本机端口号                udpcSend = new UdpClient(localIpep);                Thread thrSend = new Thread(SendMessage);                thrSend.Start();            } catch {            }                   }

发送成功后,传感器会反馈给你结果,然后就是接收数据

 /// <summary>        /// 开关:在监听UDP报文阶段为true,否则为false        /// </summary>        bool IsUdpcRecvStart = false;        /// <summary>        /// 线程:不断监听UDP报文        /// </summary>        Thread thrRecv;        /// <summary>        /// 线程:监听是否停止工作        /// </summary>        Thread thrWork;        /// <summary>        /// 按钮:接收数据开关        /// </summary>        /// <param name="sender"></param>        /// <param name="e"></param>        private void btnRecv()        {            if (!IsUdpcRecvStart) // 未监听的情况,开始监听            {                IPEndPoint localIpep = new IPEndPoint(IPAddress.Any, Int32.Parse(ConfigurationManager.AppSettings["CurrentPort"])); // 本机IP和监听端口号                udpcRecv = new UdpClient(localIpep);                thrRecv = new Thread(ReceiveMessage);                thrRecv.Start();                IsUdpcRecvStart = true;                Trace.Write("UDP监听器已成功启动");                this.tbOut.AppendText("UDP监听器已成功启动"+"\n");            }            else                  // 正在监听的情况,终止监听            {                //thrRecv.Abort(); // 必须先关闭这个线程,否则会异常                //udpcRecv.Close();                //IsUdpcRecvStart = false;                //Trace.Write("UDP监听器已成功关闭");            }        }        public static string byteToHexStr(byte[] bytes)        {            string returnStr = "";            if (bytes != null)            {                for (int i = 0; i < bytes.Length; i++)                {                    returnStr += bytes[i].ToString("X2");                }            }            return returnStr;        }        /// <summary>        /// 接收数据        /// </summary>        /// <param name="obj"></param>        private void ReceiveMessage(object obj)        {            IPEndPoint remoteIpep = new IPEndPoint(IPAddress.Any, 0);            while (isOpen)            {                try                {                    byte[] bytRecv = udpcRecv.Receive(ref remoteIpep);                    dealData(bytRecv);                    string message = byteToHexStr(bytRecv);                    status = GetStatus.SUCCESS;                    //FileUtils.SaveFile("\\log\\logData.txt", message);                    //Trace.Write(message+"\n");                    //this.tbOut.AppendText(message);                }                catch (Exception ex)                {                    Trace.Write(ex.Message);                    break;                }            }        }