湿度传感器开发用的是tcp或者udp通信
/// <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; } } } |