C#读写XML⽂档通讯算法⾃定义协议/*
* API说明⽂档
* 本⽂档共包含五个类:
* XML⽂件操作类->XMLConcrol
* 串⼝通讯类 ->ComTransmit
* ⽹络通讯类 ->NetTransmit
* 算法类 ->Algorithm
* 通讯协议类 ->Protocol
*********************************************************
* XML⽂件操作类->XMLConcrol说明:
*
* 原型:public void LoadFile()
* 功能:加载配置⽂件。如默认配置⽂件不存在,则新建⼀个
* 输⼊参数:⽆
* 输出参数:⽆
* 返回值:⽆
*
* 原型:public void readNode(string nodeName,ref float k,ref float b)
* 输⼊参数: 节点名称 nodeName 类型 string
* 输出参数: 标校系数 k 类型 ref float
* 标校常数 b 类型 ref float
* 返回值:⽆
*
* 原型:public void addNode(string nodeName, float k, float b)
* 功能:增加指定名称的节点 标定模板⼀阶线性:y=kx+b
* 输⼊参数: 节点名称 nodeName 类型 string
* 标校系数 k 类型 float
* 标校常数 b 类型 float
* 输出参数:⽆
* 返回值:⽆
阳兵卓*
* 原型:public void replaceNode(string nodeName, float k, float b)
* 功能:替换指定名称的节点 标定模板⼀阶线性:y=kx+b
* 输⼊参数: 节点名称 nodeName 类型 string
* 标校系数 k 类型 float
* 标校常数 b 类型 float
* 输出参数:⽆
* 返回值:⽆
*
* 原型:public void nodeList(ref ArrayList nodeList, ref int nodeNum)
* 功能:获取所有节点的名称列表
* 输⼊参数:⽆
* 输出参数:节点名称列表 nodeList 类型 ref ArrayList
* 节点列表长度 nodeNum 类型 ref int
* 返回值:⽆
*
* 原型:public int removeNode(string nodeName)
读取配置文件失败* 功能:删除指定名称的节点
* 输⼊参数: 节点名称 nodeName 类型 string
* 输出参数:⽆
* 返回值:删除节点个数
*********************************************************
* 串⼝通讯类->ComTransmit说明:
*
* 原型:public void InitCom(string comPort,int rate)
* 功能:初始化串⼝
* 输⼊参数:串⼝名 comPort 类型 string
* 波特率 rate 类型 int
*
* 原型:public void comWrite(string text)
* 功能:串⼝发送
* 输⼊参数:名称 text 类型 string
*
* 原型:public void comWrite(byte[] text)
* 功能:串⼝发送
* 输⼊参数:名称 text 类型 byte[]
*
* 原型:public void comRead(ref byte[] text)
* 功能:串⼝接收
* 输出参数:名称 text 类型 ref byte[]
*
* 原型:public void comRead(ref string text)
* 功能:串⼝接收
* 输出参数:名称 text 类型 ref string
*********************************************************
* ⽹络通讯类->NetTransmit说明:
*
* 原型:public void startServer(byte[] ServerAddress)
* 功能:创建⼀个服务器
* 输⼊参数:服务器IP地址 ServerAddress 类型 byte[]
* 例:byte[] ServerAddress=new byte[]{192,168,0,1} *
* 原型:public void startServer(string ServerAddress)
* 功能:创建⼀个服务器
* 输⼊参数:服务器IP地址 ServerAddress 类型 string
放假去哪里玩好* 例:string ServerAddress="192.168.0.1";
*
* 原型:public bool serverReciveData(ref string msg)
* 功能:服务器接受来⾃客户端的数据
* 输出参数:名称 msg 类型 ref string
* 返回值:是否读取成功 成功 true 失败 false
*
* 原型:public bool serverReciveData(ref byte[] msg)
* 功能:服务器接受来⾃客户端的数据
* 输出参数:名称 msg 类型 ref byte[]
* 返回值:是否读取成功 成功 true 失败 false
*
* 原型:public void serverSendData(byte[] msg)
* 功能:服务器发送数据到客户端
* 输⼊参数:名称 msg 类型 byte[]
* 返回值:⽆
*
* 原型:public void serverSendData(string msg)
* 功能:服务器发送数据到客户端
* 输⼊参数:名称 msg 类型 string
* 返回值:⽆
*
* 原型:public void startClient(byte[] ServerAddress)
* 功能:建⽴⼀个客户端
* 输⼊参数:服务器IP地址 ServerAddress 类型 byte[]
* 例:byte[] ServerAddress=new byte[]{192,168,0,1}
*
* 原型:public void startClient(string ServerAddress)
* 功能:建⽴⼀个客户端
* 输⼊参数:服务器IP地址 ServerAddress 类型 string
* 例:string ServerAddress="192.168.0.1"
*
* 原型:public bool clientReciveData(ref string msg)
* 功能:客户端接受来⾃服务器的数据
* 输出参数:名称 msg 类型 ref string
* 返回值:是否读取成功 成功 true 失败 false
*
* 原型:public bool clientReciveData(ref byte[] msg)
* 功能:客户端接受来⾃服务器的数据
* 输出参数:名称 msg 类型 ref byte[]
* 返回值:是否读取成功 成功 true 失败 false
*
* 原型:public void clientSendData(byte[] msg)
* 功能:客户端发送数据到服务器
吴君如演过的鬼片* 输⼊参数:名称 msg 类型 byte[]
* 返回值:⽆
*
* 原型:public void clientSendData(string msg)
* 功能:客户端发送数据到服务器
* 输⼊参数:名称 msg 类型 string
* 返回值:⽆
*********************************************************
* 算法类->Algorithm说明:
*
* 原型:public uint flaotToHex(float f)
* 功能:浮点数转换为IEEE754格式整数
* 输⼊参数:名称 f 类型 float
* 返回值:符合IEEE754的⽆符号整形
*
* 原型:public string flaotToHexString(float f)
* 功能:浮点数转换为IEEE754格式⼗六进制字符串
* 输⼊参数:名称 f 类型 float
* 返回值:符合IEEE754的⼗六进制字符串
*
* 原型:public float hexTofloat(uint hex)
* 功能:符合IEEE754的⽆符号整形转换为浮点数
* 输⼊参数:名称 hex 类型 uint
* 返回值:浮点数
*
* 原型:public float hexStringTofloat(string hex)
* 功能:符合IEEE754的⼗六进制字符串转换为浮点数
各种操作系统* 输⼊参数:名称 hex 类型 string
* 返回值:浮点数
*
* 原型:public void curveFitting(double[] x, double[] y, int n, ref double[] a, int m)
* 功能:切⽐雪夫曲线拟合
* 输⼊参数:X轴坐标数组 x 类型 double[]
* Y轴坐标数组 y 类型 double[]
* 数组取样点数 n 类型 int
* 拟合阶数 m 类型 int m=拟合阶数+1 如:⼀阶拟合 m=2 则:y=a0+a1*x
* 输出参数:拟合系数 a 类型 ref double[] 数组长度=m+1 如:⼀阶拟合 double[] a=new double[3] 还原后为y=a[0]+a[1]*x 最⼤均⽅差存在a[2]⾥
* y=a[0]+a[1]*x+a[2]*x^2+a[3]*x^3 ……………………
*
*********************************************************
* 通讯协议类->Protocol说明:
*
* 原型:public string analysis(string order)
* 功能:解析指令
* 输⼊参数:⽤户指令 order 类型 string
* 查询指令:
* 返回所有节点名称 “node list ?”
* 读取指定节点的值 “read node ? nodeName”
* 设置指令:
* 增加节点 “add node #nodeName #k #b”
* 更新指定名称的节点 “replace node #nodeName #k #b”
* 删除指定名称的节点 “remove node #nodeName”
* 返回值:返回查询指令的结果字符串
*/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.IO.Ports;
using System.Xml;
using System.Collections;
using System.Net;
using System.Net.Sockets;
namespace ConfigFileReadWrite
{
//XML⽂件操作类
public class XMLConcrol
{
/
/⽂件名,默认为当前可执⾏⽂件⽬录下l
String fileName = System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase+"l"; XmlDocument xml = new XmlDocument();
/*
* 功能:加载配置⽂件。如默认配置⽂件不存在,则新建⼀个
* 输⼊参数:⽆
* 输出参数:⽆
* 返回值:⽆
*/
public void LoadFile()
{
FileInfo fileInfo = new FileInfo(fileName);
if (!fileInfo.Exists)
{
XmlNode node = xml.CreateXmlDeclaration("1.0", "gb2312", "");石红杏最后结局
xml.AppendChild(node);
XmlNode root = xml.CreateElement("root");
xml.AppendChild(root);
xml.Save(fileName);
}
xml.Load(fileName);
}
/
*
* 功能:读取指定节点值 标定模板⼀阶线性:y=kx+b
* 输⼊参数: 节点名称 nodeName 类型 string
* 输出参数: 标校系数 k 类型 ref float
* 标校常数 b 类型 ref float
* 返回值:⽆
*/
public void readNode(string nodeName,ref float k,ref float b)
{
XmlNode root = xml.SelectSingleNode("root");
if (xml.SelectSingleNode("root").ChildNodes.Count > 0)
{
XmlNode nodeOne = root.SelectSingleNode(nodeName);
k = (float)Convert.ToDouble((nodeOne.SelectSingleNode("k")).InnerText);
b = (float)Convert.ToDouble((nodeOne.SelectSingleNode("b")).InnerText); }
}
/*
* 功能:增加指定名称的节点 标定模板⼀阶线性:y=kx+b
* 输⼊参数: 节点名称 nodeName 类型 string
* 标校系数 k 类型 float
* 标校常数 b 类型 float
* 输出参数:⽆
* 返回值:⽆
*/
public void addNode(string nodeName, float k, float b)
{
XmlNode root = xml.SelectSingleNode("root");
XmlElement newNode = xml.CreateElement(nodeName);
XmlElement inNewNode1 = xml.CreateElement("k");
XmlElement inNewNode2 = xml.CreateElement("b");
inNewNode1.InnerText = Convert.ToString(k);
inNewNode2.InnerText = Convert.ToString(b);
root.AppendChild(newNode);
newNode.AppendChild(inNewNode1);
newNode.AppendChild(inNewNode2);
xml.Save(fileName);
}
/*
* 功能:替换指定名称的节点 标定模板⼀阶线性:y=kx+b
* 输⼊参数: 节点名称 nodeName 类型 string
* 标校系数 k 类型 float
* 标校常数 b 类型 float
发布评论