MessageBox(NULL, L"打开Analog_data.txt出错", L"ERROR", MB_OK);
//若打开出错,则弹出对话框提示出错
   else if(stream_Analog)
   {
      fseek( stream_Analog, 0L, SEEK_SET ); // 将文件指针指定位置
      while((! fs_Analog.eof())&&Num_Analog_Data<Analog_MAX_NUM)        
      {    //一行一行循环读入,直至文件读完
          fscanf_s(stream_Analog,"%s", Analog[Num_Analog_Data].devName, _countof( Analog[Num_Analog_Data].devName));//所属设备编码数据
          fscanf_s(stream_Analog,"%s", Analog[Num_Analog_Data].name, _countof( Analog[Num_Analog_Data].name));//变量监测点代码
          fscanf_s(stream_Analog,"%s", Analog[Num_Analog_Data].desc, _countof( Analog[Num_Analog_Data].desc));//变量描述
         fscanf_s(stream_Analog,"%d", &Analog[Num_Analog_Data].type);//变量类型
      fscanf_s(stream_Analog,"%f", &Analog[Num_Analog_Data].uLimit1);//一级上限值
      fscanf_s(stream_Analog,"%f", &Analog[Num_Analog_Data].dLimit1);//一级下限值
      fscanf_s(stream_Analog,"%f", &Analog[Num_Analog_Data].uLimit2);//二级上限值
      fscanf_s(stream_Analog,"%f", &Analog[Num_Analog_Data].dLimit2);//二级下限值
          fscanf_s(stream_Analog,"%f", &Analog[Num_Analog_Data].coef);//变量系数          fscanf_s(stream_Analog,"%d", &Analog[Num_Analog_Data].soundFlag);//告警标志
      fscanf_s(stream_Analog,"%d", &Analog[Num_Analog_Data].comChannel);//通信频道号      fscanf_s(stream_Analog,"%d", &Analog[Num_Analog_Data].comNo);//通信编号
      fscanf_s(stream_Analog,"%f", &Analog[Num_Analog_Data].sim_ref);//仿真基准值
      fscanf_s(stream_Analog,"%f", &Analog[Num_Analog_Data].sim_coef);//仿真系数

      Num_Analog_Data++;
      }
      fclose( stream_Analog );
   }      
       return TRUE;
}

3.4.2 语音播报线程的建立
如下如下为线程创建程序和线程服务程序代码
int ThreadProcTest(LPVOID lpParameter)
{
    while(glThreadFlag)//线程运行标志
    {
    Read_Alarm();//语音播报子程序
        Sleep(1000);
    }
    return 0;
}
int CreateAppThreadTeat()   //线程构建函数
{
    SECURITY_ATTRIBUTES  secAttr;
    DWORD id=0;
    secAttr.nLength = sizeof(SECURITY_ATTRIBUTES);  //长度
    secAttr.bInheritHandle = false;    //继承句柄
    secAttr.lpSecurityDescriptor = NULL;  //安全描述
    glAppTreadHandle = CreateThread(&secAttr,0,(LPTHREAD_START_ROUTINE)ThreadProcTest,NULL,0,&id);   //创建线程句柄
    return 0;
}
 
3.5  告警生产算法
3.5.1 模拟量
模拟量告警事件生成算法的数据传递如图3.4:
上一篇:AT89S51单片机的车载应答器设计方案
下一篇:89C52单片机LED点阵视屏动画显示系统设计

STM32的4G太阳能电站监控系统设计+PCB电路图

水下遥控机器人ROV监控系...

OpenCv+QT楼宇视频监控系统设计

基于C#的船舶岸电监控系统设计

PLC某泵站自动控制系统上...

Labview600吨船损管监控系统...

基于AIS的海上船舶监控系统设计+源程序

多元化刑事简易程序构建探讨【9365字】

浅谈传统人文精神茬大學...

谷度酒庄消费者回访调查问卷表

拉力采集上位机软件开发任务书

浅谈新形势下妇产科护理...

《醉青春》导演作品阐述

高校网球场馆运营管理初探【1805字】

中国古代秘书擅权的发展和恶变

国内外无刷直流电动机研究现状

辩护律师的作证义务和保...