基于多串口ETH005设备的Socket网络编程
来源:互联网 发布:淘宝松下18650锂电池 编辑:程序博客网 时间:2024/06/05 16:15
利用多串口设备进行Socket网络编程
1、安装多串口服务器ETH005软件。软件下载地址:http://download.csdn.net/detail/taomanman/6762173
2、打开ETH005软件,点击“扫描”,如下图:
3、会搜索到设备的IP地址,修改串口COM1的串口波特率为9600,通讯方式修改为485通信,远程IP修改成192.168.0.2,然后点击“连接”,如下图:
4、连接完成后,点击“配置”,如下图:
5、点击“读取配置信息”,如下图:
6、打开串口调试助手,配置远程主机和远程端口号信息,然后连接网络,然后输入十六进制数,然后发送,接收区会将结果输出,如下图:
开始编程:使用Socket进行网络编程,发送指令,获取数据
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
1、 建立Socket连接
Socket newclient = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);IPEndPoint ie = new IPEndPoint(IPAddress.Parse("192.168.0.18"), 50001);try{ newclient.Connect(ie);} catch (SocketException e){ MessageBox.Show("连接服务器失败:" + e.Message); return;}ThreadStart myThreaddelegate = new ThreadStart(ReceiveMsg);myThread = new Thread(myThreaddelegate);myThread.Start();
2、 发送指令
///<summary>///发送温湿度数据///</summary>public void SendWSD(){ string wsd = "01 03 00 00 00 03 05 cb"; int m_length = wsd.Length; byte[] data = new byte[m_length]; //十六进制字符串转换成字符数组(01 03 00 00 00 03 05 cb) data = ConvertHelper.strToToHexByte(wsd); int i = newclient.Send(data, data.Length, 0); //showMsg("温湿度发送消息为:" + wsd + "\r\n");} public static class ConvertHelper{ ///<summary> /// 16进制字符串转字节数组 ///</summary> ///<param name="hexString"></param> ///<returns></returns> public static byte[] strToToHexByte(string hexString) { hexString = hexString.Replace(" ", ""); if ((hexString.Length % 2) != 0) hexString += " "; byte[] returnBytes = new byte[hexString.Length / 2]; for (int i = 0; i < returnBytes.Length; i++) returnBytes[i] = Convert.ToByte(hexString.Substring(i * 2, 2).Trim(), 16); return returnBytes; } ///<summary> ///字节数组转16进制字符串 ///</summary> ///<param name="bytes"></param> ///<returns></returns> 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="hex"></param> ///<returns></returns> public static string Hex2Ten(string hex) { int ten = 0; for (int i = 0, j = hex.Length - 1; i < hex.Length; i++) { ten += HexChar2Value(hex.Substring(i, 1)) * ((int)Math.Pow(16, j)); j--; } return ten.ToString(); }}
3、 接收数据
///<summary> ///接收消息 ///</summary> public void ReceiveMsg() { while (true) { byte[] data = new byte[1024]; int recv = newclient.Receive(data); string stringdata = Encoding.UTF8.GetString(data, 0, recv); //将所读取的字符串转换为字节数组 byte[] content = Encoding.ASCII.GetBytes(stringdata); if (recv <= 0) break; string hexString = ConvertHelper.byteToHexStr(content); string sd = hexString.Substring(6, 4); string wd = hexString.Substring(10, 4); //showMsg("温湿度接收到的返回值串为:" + hexString + "\r\n"); //处理后的温湿度数值 double csd = double.Parse(ConvertHelper.Hex2Ten(sd)) / 100; double cwd = (double.Parse(ConvertHelper.Hex2Ten(wd)) - 27315) / 100; showMsg("湿度值为:" + csd + "% 采集时间:[" + System.DateTime.Now.ToString("yyyy-MM-dd HH:mm") + "]\r\n"); showMsg("温度值为:" + cwd + "℃ 采集时间:[" + System.DateTime.Now.ToString("yyyy-MM-dd HH:mm") + "]\r\n"); } } ///<summary> ///显示消息 ///</summary> ///<param name="msg"></param> public void showMsg(string msg) { { //在线程里以安全方式调用控件 if (receiveMsg.InvokeRequired) { MyInvoke _myinvoke = new MyInvoke(showMsg); receiveMsg.Invoke(_myinvoke, new object[] { msg }); } else { receiveMsg.AppendText(msg); } } }
0 0
- 基于多串口ETH005设备的Socket网络编程
- 网络编程----基于TCP的socket编程
- 基于Socket网络编程
- 基于Socket网络编程
- 基于Socket网络编程
- 网络编程 基于Socket的多文件传输程序实现(一)
- 基于Win Socket的网络编程基础
- 基于Socket的java网络编程
- 基于Udp的Socket网络编程
- 基于Socket的Java网络编程
- 基于TCP的socket编程网络掉线重连
- 基于UDP的windows网络Socket编程
- 基于Socket的java网络编程
- 基于Socket的java网络编程
- 基于Socket的JAVA网络编程
- 基于Socket的java网络编程
- 基于Socket的java网络编程
- 基于Socket的java网络编程
- 任意两点间距离 Floyed 算法
- 使用PullToRefresh实现下拉刷新和上拉加载
- 十七周项目---排序
- clr via C#笔记(1)
- 给Android虚拟机AVD加一个虚拟内存卡
- 基于多串口ETH005设备的Socket网络编程
- CSS透明属性详解
- 中国阶层实力分析
- 在Dreamweaver中tpa,tppabs标签批量清除
- 17周项目五(2)。换分币
- Qt学习--关于Qt项目中.pro文件解析
- CentOS查看内核版本,位数,版本号
- DOM4J使用
- Hive-数据仓库