using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Newtonsoft.Json.Linq;
using WebSocket4Net;
namespace Kjmonitor{
public partial class MainForm : Form{
public MainForm(){
InitializeComponent();
//读取ini配置文件
iniReader("config.ini");
iniReader("type.ini");
iniReader("state.ini");
iniReader("exstate.ini");
iniReader("switch_io_d.ini");
iniReader("switch_io_c.ini");
}
//读取ini配置文件-----------------------------begin-------------------------------------------------------
MainForm config = null;
MainForm typeIni = null;
MainForm stateIni = null;
MainForm exstateIni = null;
MainForm switch_io_dIni = null;
MainForm switch_io_cIni = null;
//煤矿名称
string cs_mine_code = "";
int Enable = 0;
private void iniReader(string filename){
if(filename.Equals("config.ini")){
config = new MainForm("./config.ini");
}else if(filename.Equals("type.ini")){
typeIni = new MainForm("./type.ini");
}else if(filename.Equals("state.ini")){
stateIni = new MainForm("./state.ini");
}else if(filename.Equals("exstate.ini")){
exstateIni = new MainForm("./exstate.ini");
}else if(filename.Equals("switch_io_d.ini")){
switch_io_dIni = new MainForm("./switch_io_d.ini");
}else if(filename.Equals("switch_io_c.ini")){
switch_io_cIni = new MainForm("./switch_io_c.ini");
}
//煤矿名称
cs_mine_code = config.ReadValue("煤矿代码","CS_MINE_CODE");
Enable = int.Parse(config.ReadValue("数据传输","Enable"));
}
//读取ini文件
// 声明INI文件的写操作函数 WritePrivateProfileString()
[System.Runtime.InteropServices.DllImport("kernel32")]
private static extern long WritePrivateProfileString(string section, string key, string val, string filePath);
// 声明INI文件的读操作函数 GetPrivateProfileString()
[System.Runtime.InteropServices.DllImport("kernel32")]
private static extern int GetPrivateProfileString(string section, string key, string def, System.Text.StringBuilder retVal, int size, string filePath);
private string sPath = null;
public MainForm(string path){
this.sPath = path;
}
public string ReadValue(string section, string key){
// 每次从ini中读取多少字节
System.Text.StringBuilder temp = new System.Text.StringBuilder(255);
// section=配置节,key=键名,temp=上面,path=路径
GetPrivateProfileString(section, key, "", temp, 255, sPath);
return temp.ToString();
}
//------------------------------------------------------------------end-----------------------------------------------------------------------------
//连接websocket-------------------------------begin-----------------------------------------------
void MainFormLoad(object sender, EventArgs e){
InitUI();
//首先判断列表框中的项是否大于0
if(logReveal.Items.Count > 0 )
{
//清空所有项
logReveal.Items.Clear();
}
}
private void websocket_MessageReceived(object sender, MessageReceivedEventArgs e){
MessageReceivedEventArgs responseMsg = (MessageReceivedEventArgs)e; //接收服务端发来的消息
string strMsg = responseMsg.Message;
recieveMessage(strMsg);
}
private void websocket_Closed(object sender, EventArgs e){
//websocket.Send("一个客户端 下线");
}
void websocket_Opened(object sender, EventArgs e){
Log("websocket_Opened");
//websocket.Send("一个客户端 上线");
}
//-------------------------------end-----------------------------------------------
//websocket获取数据并生成文件
private WebSocket websocket = null;
private string strSendText = string.Empty;
//测点定义
string CMD101 = "";
//控制定义
string CMD102 = "";
//区域定义
string CMD103 = "";
//工作面定义
string CMD104 = "";
//位置定义
string CMD105 = "";
//增量数据
string CMD106 = "";
List<string> listFiveMinuter = new List<string>();
Boolean bStart106 = false;
long lLastTime = 0;
Boolean bStart30 = false;
long lLastTime30 = 0;
//接收websocket数据
public void recieveMessage(string jsonText){
var obj = Newtonsoft.Json.Linq.JObject.Parse(jsonText);
var id = obj["CMD_ID"].ToString();
if(id.Equals("101")){
CMD101 = jsonText;
}else if(id.Equals("102")){
CMD102 = jsonText;
}else if(id.Equals("103")){
CMD103 = jsonText;
}else if(id.Equals("104")){
CMD104 = jsonText;
}else if(id.Equals("105")){
CMD105 = jsonText;
}else if(id.Equals("106")){
CMD106 = jsonText;
}
if(!CMD101.Equals("")&&!CMD102.Equals("")&&!CMD106.Equals("")){
//获取数据生成时间
string cs_data_time = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss",new System.Globalization.DateTimeFormatInfo());
//测点定义数据 hashtable
InitCMD101(cs_data_time);
//控制定义数据 hashtable
InitCMD102();
CMD102 = "";
}
if(!CMD101.Equals("")&&!CMD106.Equals("")){
//获取数据生成时间
string cs_data_time = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss",new System.Globalization.DateTimeFormatInfo());
//增量数据106初始化
InitCMD106(cs_data_time);
//全量数据存入hashtable
InitCMD_all();
long lCurrentTime30 = (DateTime.Now.ToUniversalTime().Ticks - 621355968000000000) / 10000000;
if(!bStart30){
lLastTime30 = (DateTime.Now.ToUniversalTime().Ticks - 621355968000000000) / 10000000;
bStart30 = true;
}
if(bStart30 && ((lCurrentTime30-lLastTime30)>=long.Parse(config.ReadValue("rtdata生成时间","EnableTime")))){
lLastTime30 = lCurrentTime30;
//if(Enable==0){
//模拟量显示文件
createAnalogDisplay(cs_data_time);
//开关量显示文件
createSwitchDisplay(cs_data_time);
//分站状态显示文件
createSubstationDisplay(cs_data_time);
//开关量状态变化累计时间统计
createSwitchStateChange();
//分站状态
createSubstationState(cs_data_time);
//}
}
listFiveMinuter.Add(CMD106);
long lCurrentTime = (DateTime.Now.ToUniversalTime().Ticks - 621355968000000000) / 10000000;
if(!bStart106){
lLastTime = (DateTime.Now.ToUniversalTime().Ticks - 621355968000000000) / 10000000;
bStart106 = true;
}
if(bStart106 && ((lCurrentTime-lLastTime)>=long.Parse(config.ReadValue("rtdata生成时间","intervalTime")))){
lLastTime = lCurrentTime;
//if(Enable==0){
createListFiveData();
createFiveMinuteData();
//}
}
}
}
//接收数据并存入本地hashtable------------------------------begin--------------------------------------
//测点定义数据
Hashtable CMD101_Hash = new Hashtable();
private void InitCMD101(string time){
CMD101_Hash.Clear();
JObject obj = Newtonsoft.Json.Linq.JObject.Parse(CMD101);
JArray content = (JArray)obj["CONTENT"];
for(int i=0;i<content.Count;i++){
JArray content1 = (JArray)content[i];
string[] data = new string[content1.Count+1];
for(int j=0;j<content1.Count;j++){
data[j] = content1[j].ToString();
}
data[content1.Count] = time;
string code = formatToThree(data[26])+data[23]+formatToTwo(data[24]);
if (CMD101_Hash.ContainsKey(code)){
CMD101_Hash.Remove(code);
}
CMD101_Hash.Add(code,data);
}
}
...
//全量数据
Hashtable CMD_all_Hash = new Hashtable();
private void InitCMD_all() {
CMD_all_Hash.Clear();
foreach (string key in CMD101_Hash.Keys){
string[] data = (string[])CMD101_Hash[key];
//安装地点
string ss_transducer_point = getSs_transducer_point(key);
//获取数据生成时间
string time = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss",new System.Globalization.DateTimeFormatInfo());
//{值、传感器名称、状态、扩展状态、安装地点、分站编号、传感器编号、时间}
string[] strs = {data[46],data[41],data[44],data[45],ss_transducer_point,data[26],data[24],time};
CMD_all_Hash.Add(key, strs);
}
//增量数据解析
JObject obj = Newtonsoft.Json.Linq.JObject.Parse(CMD106);
JArray content = (JArray)obj["CONTENT"];
for(int i=0;i<content.Count;i++){
JArray content1 = (JArray)content[i];
string[] data = new string[content1.Count];
for(int j=0;j<content1.Count;j++){
data[j] = content1[j].ToString();
}
string code = formatToThree(data[3]) + data[0] + formatToTwo(data[1]);
string[] data1 = (string[])CMD_all_Hash[code];
string name = data1[1];
string point = data1[4];
//获取数据生成时间
string time = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss",new System.Globalization.DateTimeFormatInfo());
//{值、传感器名称、状态、扩展状态、安装地点、分站编号、传感器编号、时间}
string[] strs = {data[5],name,data[6],data[2],point,data1[5],data1[6],time};
if (CMD_all_Hash.ContainsKey(code)){
CMD_all_Hash.Remove(code);
}
CMD_all_Hash.Add(code, strs);
}
}
//五分钟数据list
private void createListFiveData(){
List<string> list_value = new List<string>();
List<string> list_state = new List<string>();
//测点定义数据101的数值、状态集合
foreach (string key in CMD101_Hash.Keys){
if (key.Contains("A")){
string[] data = (string[])CMD101_Hash[key];
string strs = key +","+ data[46];
list_value.Add(strs);
string states = key +","+ data[44]+","+ data[45];
list_state.Add(states);
}
}
//增量数据106的数值、状态集合
foreach (string jsonList in listFiveMinuter){
JObject obj = Newtonsoft.Json.Linq.JObject.Parse(jsonList);
JArray content = (JArray)obj["CONTENT"];
for(int i=0;i<content.Count;i++){
JArray content1 = (JArray)content[i];
string[] data = new string[content1.Count];
for(int j=0;j<content1.Count;j++){
data[j] = content1[j].ToString();
}
if(data[0].Equals("A")){
string ss_transducer_code = formatToThree(data[3])+data[0]+formatToTwo(data[1]);
string strs = ss_transducer_code +","+ data[5];
list_value.Add(strs);
string states = ss_transducer_code +","+ data[6]+","+ data[2];
list_state.Add(states);
}
}
}
createCodeValHash(list_value);
createCodeStateHash(list_state);
}
//键值hashtable
Hashtable key_val_Hash = new Hashtable();
private void createCodeValHash(List<string> list){
key_val_Hash.Clear();
foreach(string list_value in list){
string[] sArray=list_value.Split(',') ;
string key = sArray[0];
string value = sArray[1];
if (!key_val_Hash.ContainsKey(key)) {
List<float> list1 = new List<float>();
list1.Add(float.Parse(value));
key_val_Hash.Add(key,list1);
}else {
List<float> list1 = (List<float>)key_val_Hash[key];
list1.Add(float.Parse(value));
key_val_Hash.Remove(key);
key_val_Hash.Add(key,list1);
}
}
getAvgMaxMin();
list = new List<string>();
}
//求平均值
Hashtable key_avg_Hash = new Hashtable();
private void getAvgMaxMin(){
key_avg_Hash.Clear();
foreach (string key in key_val_Hash.Keys){
List<float> list = (List<float>)key_val_Hash[key];
float sum = 0;
foreach(float list_value in list){
sum += list_value;
}
List<float> list_val = new List<float>();
float ss_analog_avgvalue = sum/list.Count;
float ss_analog_maxvalue = list.Max();
float ss_analog_minvalue = list.Min();
list_val.Add(ss_analog_avgvalue);
list_val.Add(ss_analog_maxvalue);
list_val.Add(ss_analog_minvalue);
key_avg_Hash.Add(key,list_val);
}
}
//状态hashtable
Hashtable key_state_Hash = new Hashtable();
Hashtable key_exstate_Hash = new Hashtable();
private void createCodeStateHash(List<string> list_state){
key_state_Hash.Clear();
key_exstate_Hash.Clear();
foreach(string list in list_state){
string[] sArray=list.Split(',') ;
string key = sArray[0];
string state = sArray[1];
string exstate = sArray[2];
if (!key_state_Hash.ContainsKey(key)) {
List<int> list1 = new List<int>();
list1.Add(int.Parse(state));
key_state_Hash.Add(key, list1);
} else {
List<int> list1 = new List<int>();
list1.Add(int.Parse(state));
key_state_Hash.Remove(key);
key_state_Hash.Add(key, list1);
}
if (!key_exstate_Hash.ContainsKey(key)) {
List<int> list1 = new List<int>();
list1.Add(int.Parse(exstate));
key_exstate_Hash.Add(key, list1);
} else {
List<int> list1 = new List<int>();
list1.Add(int.Parse(exstate));
key_exstate_Hash.Remove(key);
key_exstate_Hash.Add(key, list1);
}
}
}
//接收数据并存入本地hashtable------------------------------end--------------------------------------
//分钟数据
Boolean ftp_boo = true;
private void createFiveMinuteData(){
//获取数据生成时间
string cs_data_time = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss",new System.Globalization.DateTimeFormatInfo());
string rowStr = "";
foreach (string key in CMD_all_Hash.Keys){
if (key.Contains("A")){
//{值、传感器名称、状态、扩展状态、安装地点、分站编号、传感器编号}
string[] data = (string[])CMD_all_Hash[key];
//分站编号
int ss_station_code = int.Parse(data[5]);
//描述(安装地点)
string ss_transducer_point = data[4];
//传感器编号
int ss_transducer_code = int.Parse(data[6]);
//类型
string ss_transducer_type = typeIni.ReadValue("传感器类型",data[1]);
//平均值
List<float> list = (List<float>)key_avg_Hash[key];
//平均值
float ss_transducer_avg = 0;
//最大值
float ss_transducer_max = 0;
//最小值
float ss_transducer_min = 0;
for(int i = 0;i<list.Count;i++){
//平均值
ss_transducer_avg = list[0];
//最大值
ss_transducer_max = list[1];
//最小值
ss_transducer_min = list[2];
}
//状态
string ss_transducer_state = "";
//断线、调试、断电
string state_break = "";
string state_debug = "";
string state_outage = "";
//临时状态
string state_temporary = "";
int state = 0;
int exstate = 0;
List<int> list_state = (List<int>)key_state_Hash[key];
for(int i = 0;i<list_state.Count;i++){
state = list_state[i];
string hex = Convert.ToString(state,16);
if(hex.Equals("fe")||hex.Equals("f8")||hex.Equals("f9")){
state_break = stateIni.ReadValue("状态","A-"+hex);
}else{
state_temporary = stateIni.ReadValue("状态","A-"+hex);
}
}
List<int> list_exstate = (List<int>)key_exstate_Hash[key];
for(int i = 0;i<list_exstate.Count;i++){
exstate = list_exstate[i];
string[] str_a = bitChannel(exstate);
if (exstate == 0){
state_temporary = exstateIni.ReadValue("扩展状态","A-正常");
}
if (str_a[0].Equals("1")){
state_debug = exstateIni.ReadValue("扩展状态","A-调试");
}
if (str_a[1].Equals("1")){
state_outage = exstateIni.ReadValue("扩展状态","A-断电");
}
if (str_a[2].Equals("1")){
state_temporary = exstateIni.ReadValue("扩展状态","A-报警");
}
if (str_a[3].Equals("1")){
state_temporary = exstateIni.ReadValue("扩展状态","A-预警");
}
if (str_a[4].Equals("1")){
state_temporary = exstateIni.ReadValue("扩展状态","A-伪数据");
}
if (str_a[5].Equals("1")){
state_temporary = exstateIni.ReadValue("扩展状态","A-异常数据");
}
}
if(!state_outage.Equals("")){
ss_transducer_state = state_outage;
}else{
if(!state_debug.Equals("")){
ss_transducer_state = state_debug;
}else {
if(!state_break.Equals("")){
ss_transducer_state = state_break;
}else{
ss_transducer_state = state_temporary;
}
}
}
rowStr += cs_mine_code+","+ss_station_code+","+ss_transducer_point+","+ss_transducer_code+","+
ss_transducer_type+","+ss_transducer_avg+","+ss_transducer_max+","+
ss_transducer_min+","+ss_transducer_state+","+ cs_data_time+"\r\n";
}
}
// 关联文件
string filename = config.ReadValue("文件目录","fileReserve")+"\\分钟数据.txt";
//创建或覆盖文件
Log("分钟数据文件!");
System.IO.File.WriteAllText(@filename, rowStr, Encoding.UTF8);
string ret = ftpUpload(filename);
if(ret.Equals("success")){
Enable += 2;
Log("ftp上传成功!");
//ftp上传缓存文件
ftpBufferFile();
}else{
ftp_boo = true;
Log("ftp上传失败!");
string time = DateTime.Now.ToString("yyyyMMddHHmmss",new System.Globalization.DateTimeFormatInfo());
filename = config.ReadValue("文件目录","fileReserveBuffer")+"\\分钟数据"+time+".txt";
System.IO.File.WriteAllText(@filename, rowStr, Encoding.UTF8);
}
rowStr = "";
listFiveMinuter.Clear();
}
//通用函数--------------------------------begin-----------------------------------
//获取安装地点
private string getSs_transducer_point(string key){
string[] data = (string[])CMD101_Hash[key];
//安装地点
string ss_transducer_point = "";
string point_str = config.ReadValue("地点","AddrOrWNameOrRName");
if(point_str.Equals("addr")){
ss_transducer_point = data[21];
}else if(point_str.Equals("wname")){
if(getProperty_workarea(data[42])!=null){
ss_transducer_point = getProperty_workarea(data[42])[3];
}
}else if(point_str.Equals("rname")){
if(getProperty_workarea(data[42])!=null&&getProperty_area(getProperty_workarea(data[42])[1])!=null){
ss_transducer_point = getProperty_area(getProperty_workarea(data[42])[1])[2];
}
}
return ss_transducer_point;
}
//区域定义(获取安装地点数据--区域)
private string[] getProperty_area(string str){
JObject obj = Newtonsoft.Json.Linq.JObject.Parse(CMD103);
JArray content = (JArray)obj["CONTENT"];
for(int i=0;i<content.Count;i++){
JArray content1 = (JArray)content[i];
string[] data = new string[content1.Count];
for(int j=0;j<content1.Count;j++){
data[j] = content1[j].ToString();
}
if(data[1].Equals(str)){
return data;
}
}
return null;
}
//工作面定义(获取安装地点数据--工作面)
private string[] getProperty_workarea(string str){
JObject obj = Newtonsoft.Json.Linq.JObject.Parse(CMD104);
JArray content = (JArray)obj["CONTENT"];
for(int i=0;i<content.Count;i++){
JArray content1 = (JArray)content[i];
string[] data = new string[content1.Count];
for(int j=0;j<content1.Count;j++){
data[j] = content1[j].ToString();
}
if(data[2].Equals(str)){
return data;
}
}
return null;
}
//获取测点类型为A时对应的状态
private string getState_A(string state,string exstate){
string ss_transducer_status = "";
int status = int.Parse(state);
string hex = Convert.ToString(status,16);
ss_transducer_status = stateIni.ReadValue("状态","A-"+hex);
double exstatus = double.Parse(exstate);
int exstate1 = (int) exstatus;
string[] str_a = bitChannel(exstate1);
if (exstate1 == 0){
ss_transducer_status = exstateIni.ReadValue("扩展状态","A-正常");
}
if (str_a[0].Equals("1")){
ss_transducer_status = exstateIni.ReadValue("扩展状态","A-调试");
}
if (str_a[1].Equals("1")){
ss_transducer_status = exstateIni.ReadValue("扩展状态","A-断电");
}
if (str_a[2].Equals("1")){
ss_transducer_status = exstateIni.ReadValue("扩展状态","A-报警");
}
if (str_a[3].Equals("1")){
ss_transducer_status = exstateIni.ReadValue("扩展状态","A-预警");
}
if (str_a[4].Equals("1")){
ss_transducer_status = exstateIni.ReadValue("扩展状态","A-伪数据");
}
if (str_a[5].Equals("1")){
ss_transducer_status = exstateIni.ReadValue("扩展状态","A-异常数据");
}
return ss_transducer_status;
}
...
//检测传感器状态
private string[] bitChannel(int ctbit){
string[] channel = new string[8];
for (int i = 0; i < channel.Length; i++){
if((ctbit&0x1)==1){
channel[i]="1";
}else{
channel[i]="0";
}
ctbit = ctbit>>1;
}
return channel;
}
//转换数据格式
private string formatToThree(string str){
return double.Parse(str).ToString("000");
}
private string formatToTwo(string str){
return double.Parse(str).ToString("00");
}
//ftp上传
private string ftpUpload(string filename){
string url = config.ReadValue("ftp","ftpurl");
string file = config.ReadValue("ftp","file");
string username = config.ReadValue("ftp","username");
string password = config.ReadValue("ftp","password");
FtpHelper ftp = new FtpHelper(url,file,username,password);
string ret = ftp.Upload(filename);
return ret;
}
//ftp上传缓存文件
private void ftpBufferFile(){
if(ftp_boo){
Log("ftp上传缓存成功!");
string path = config.ReadValue("文件目录","filename_buffer");
DirectoryInfo folder = new DirectoryInfo(path);
foreach (FileInfo file in folder.GetFiles("*.txt")){
ftpUpload(file.FullName);
}
DeleteFolder(path);
ftp_boo = false;
}
}
//清空缓存中文件
private static void DeleteFolder(string dir){
foreach (string d in Directory.GetFileSystemEntries(dir)){
if (File.Exists(d)){
FileInfo fi = new FileInfo(d);
if (fi.Attributes.ToString().IndexOf("ReadOnly") != -1)
fi.Attributes = FileAttributes.Normal;
File.Delete(d);//直接删除其中的文件
}else{
DirectoryInfo d1 = new DirectoryInfo(d);
if (d1.GetFiles().Length != 0){
DeleteFolder(d1.FullName);//递归删除子文件夹
}
Directory.Delete(d);
}
}
}
void MonitorBtnClick(object sender, EventArgs e){
FolderBrowserDialog path = new FolderBrowserDialog();
path.ShowDialog();
this.fileReserve.Text = path.SelectedPath;
}
void FileReserveBufferBtnClick(object sender, EventArgs e){
FolderBrowserDialog path = new FolderBrowserDialog();
path.ShowDialog();
this.fileReserveBuffer.Text = path.SelectedPath;
}
void LogRevealSelectedIndexChanged(object sender, EventArgs e){
}
void SaveClick(object sender, EventArgs e){
int isNull = textIsNull();
generateIni();
if(isNull==0){
this.save.Enabled =false;
connectWebsocket();
Log("保存成功!");
}
}
//生成config.ini文件
private void generateIni(){
ConfUtil.WritePrivateProfileString("煤矿代码","CS_MINE_CODE", this.minecode.Text);
ConfUtil.WritePrivateProfileString("IP地址(KJ66的IP地址)","URL", this.url.Text);
ConfUtil.WritePrivateProfileString("端口号","PORT", this.port.Text);
ConfUtil.WritePrivateProfileString("rtdata生成时间","intervalTime", this.intervalTime.Text);
ConfUtil.WritePrivateProfileString("rtdata生成时间","EnableTime", this.enableTime.Text);
ConfUtil.WritePrivateProfileString("地点","AddrOrWNameOrRName", this.point.Text);
ConfUtil.WritePrivateProfileString("ftp","ftpurl", this.ftpurl.Text);
ConfUtil.WritePrivateProfileString("ftp","file", this.ftpfile.Text);
ConfUtil.WritePrivateProfileString("ftp","username", this.ftpusername.Text);
ConfUtil.WritePrivateProfileString("ftp","password", this.ftppassword.Text);
ConfUtil.WritePrivateProfileString("文件目录","fileReserve", this.fileReserve.Text);
ConfUtil.WritePrivateProfileString("文件目录","fileReserveBuffer", this.fileReserveBuffer.Text);
string str = config.ReadValue("煤矿代码","CS_MINE_CODE");
}
//websocket连接
private void connectWebsocket(){
string url = config.ReadValue("IP地址(KJ66的IP地址)","URL");
string port = config.ReadValue("端口号","PORT");
websocket = new WebSocket("ws://"+url+":"+port);
websocket.Opened += websocket_Opened;
websocket.Closed += websocket_Closed;
websocket.MessageReceived += websocket_MessageReceived;
websocket.Open();
}
//config.ini页面初始化
private void InitUI()
{
this.minecode.Text = ConfUtil.GetProfileString("煤矿代码","CS_MINE_CODE");
this.url.Text = ConfUtil.GetProfileString("IP地址(KJ66的IP地址)","URL");
this.port.Text = ConfUtil.GetProfileString("端口号","PORT");
this.intervalTime.Text = ConfUtil.GetProfileString("rtdata生成时间","intervalTime");
this.enableTime.Text = ConfUtil.GetProfileString("rtdata生成时间","EnableTime");
this.point.Text = ConfUtil.GetProfileString("地点","AddrOrWNameOrRName");
this.enableState.Text = ConfUtil.GetProfileString("数据传输","Enable");
this.ftpurl.Text = ConfUtil.GetProfileString("ftp","ftpurl");
this.ftpfile.Text = ConfUtil.GetProfileString("ftp","file");
this.ftpusername.Text = ConfUtil.GetProfileString("ftp","username");
this.ftppassword.Text = ConfUtil.GetProfileString("ftp","password");
this.fileReserve.Text = ConfUtil.GetProfileString("文件目录","fileReserve");
this.fileReserveBuffer.Text = ConfUtil.GetProfileString("文件目录","fileReserveBuffer");
this.minecode.Focus();
}
//输入框不可为空
private int textIsNull(){
if (this.minecode.Text.Trim().Equals("")) {
Log("煤矿代码不能为空");
this.minecode.Focus();
return 1;
}
...
}
//listBox输出日志
private delegate void DoLog(string msg);//代理
private void Log(string msg){
if (this.InvokeRequired){
DoLog doLog = new DoLog(Log);
this.Invoke(doLog, new object[] { msg });
}else{
if (logReveal.Items.Count > 20) {
logReveal.Items.RemoveAt(0);
}
msg = DateTime.Now.ToLocalTime().ToString() + " " + msg;
logReveal.Items.Add(msg);
}
}
}
}实现效果