tst_max.cpp

  name="google_ads_frame" marginwidth="0" marginheight="0" src="http://pagead2.googlesyndication.com/pagead/ads?client=ca-pub-5572165936844014&dt=1194442938015&lmt=1194190197&format=336x280_as&output=html&correlator=1194442937843&url=file%3A%2F%2F%2FC%3A%2FDocuments%2520and%2520Settings%2Flhh1%2F%E6%A1%8C%E9%9D%A2%2FCLanguage.htm&color_bg=FFFFFF&color_text=000000&color_link=000000&color_url=FFFFFF&color_border=FFFFFF&ad_type=text&ga_vid=583001034.1194442938&ga_sid=1194442938&ga_hid=1942779085&flash=9&u_h=768&u_w=1024&u_ah=740&u_aw=1024&u_cd=32&u_tz=480&u_java=true" frameborder="0" width="336" scrolling="no" height="280" allowtransparency="allowtransparency"> #include <windows.h>
#include "tst_max.h"
#if defined (win32)
   #define IS_WIN32 TRUE
#else
   #define IS_WIN32 FALSE
#endif

HINSTANCE hInst;        // current instance
LPCTSTR lpszAppName = "Generic";
LPCTSTR lpszTitle =   "Generic Application";
BOOL RegisterWin95(CONST WNDCLASS* lpwc);

int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
 {
   MSG msg;
   HWND hWnd;
   WNDCLASS wc;

   wc.style          = CS_HREDRAW | CS_VREDRAW;
   wc.lpfnWndProc    = (WNDPROC)WndProc;
   wc.cbClsExtra     = 0;
   wc.cbWndExtra     = 0;
   wc.hInstance      = 0;
   wc.hIcon          = LoadIcon(hInstance, lpszAppName);
   wc.hCursor        = LoadCursor(NULL, IDC_ARROW);
   wc.hbrBackground  = (HBRUSH)(COLOR_WINDOW+1);
   wc.lpszMenuName   = lpszAppName;
   wc.lpszClassName  = lpszAppName;

   if(!RegisterWin95(&wc))
      return false;
   hInst = hInstance;
   hWnd = CreateWindow (lpszAppName,
                        lpszTitle,
                        WS_OVERLAPPEDWINDOW,
                        CW_USEDEFAULT, 0,
                        CW_USEDEFAULT, 0,
                        NULL,
                        NULL,
                        hInstance,
                        NULL
                       );
   if(!hWnd)
      return false;
   ShowWindow(hWnd, nCmdShow);
   UpdateWindow(hWnd);
   while(GetMessage(&msg, NULL, 0,0))
    {
      TranslateMessage(&msg);
      DispatchMessage(&msg);
    }
   return(msg.wParam);
 }

BOOL RegisterWin95(CONST WNDCLASS* lpwc)
 {
   WNDCLASSEX wcex;

   wcex.style           = lpwc->style;
   wcex.lpfnWndProc     = lpwc->lpfnWndProc;
   wcex.cbClsExtra      = lpwc->cbClsExtra;
   wcex.cbWndExtra      = lpwc->cbWndExtra;
   wcex.hInstance       = lpwc->hInstance;
   wcex.hIcon           = lpwc->hIcon;
   wcex.hCursor         = lpwc->hCursor;
   wcex.hbrBackground   = lpwc->hbrBackground;
   wcex.lpszMenuName    = lpwc->lpszMenuName;
   wcex.lpszClassName   = lpwc->lpszClassName;
   wcex.cbSize          = sizeof(WNDCLASSEX);
   wcex.hIconSm         = LoadIcon(wcex.hInstance, "SMALL");
   return RegisterClassEx(&wcex);
 }

LRESULT CALLBACK WndProc( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
 {
   switch(uMsg)
    {
      case WM_COMMAND:
         switch(LOWORD(wParam))
          {
            case IDM_TEST :
               ShowWindow(hWnd, SW_SHOWMAXIMIZED);
               break;
            case IDM_EXIT :
               DestroyWindow(hWnd);
               break;
          }
         break;
      case WM_DESTROY :
         PostQuitMessage(0);
         break;
      default:
         return (DefWindowProc(hWnd, uMsg, wParam, lParam));
    }
   return(0L);
 }

 

在这段代码中,如果事件发生,就会让蜂鸣器响,但是我希望在此基础上·,让同一个事件只响6次,我应该怎么修改代码 int buzzer_manage::timer_check() { /* static int cnt = 0; cnt ++; if (cnt % 30 == 0) tst_ptz(); */ //if (m_event_manage.if_event_happen()) int event_type = 0; int event_channel = 0; if(m_event_manage.if_event_happen(&event_type, &event_channel)) { int skip_trigger = 0; // 跳过触发蜂鸣器 printf(" \n libcore buzzer_manage event_happen channel = %d zzz ***********************\n",event_channel); //获取当前时间 time_t timep; struct tm *local_new; core_system_time_t_get(&timep); local_new = gmtime(&timep); int buzmastenable = 0; //buzzer总使能开关 core_system_read_int((char *)"system",(char *)"buzzeer_master_enable",&buzmastenable); buzzer_new_config_t buzzconfig; memset(&buzzconfig, 0, sizeof(buzzer_new_config_t)); core_camera_buzzer_get(event_channel, &buzzconfig); if(event_type == eActionSource_Motion) //如果发生的事件是移动侦测事件 { skip_trigger = 1; //在事件中默认跳过触发 if(event_channel >= 0) { if(buzmastenable && buzzconfig.enable && buzzconfig.motion_enable) { if (buzzconfig.schedule[local_new->tm_wday][local_new->tm_hour] == 1) { printf("\n libcore motion_event sdkapi_buzzer sounds event_channel = %d zzz *****************************\n",event_channel); skip_trigger = 0; } else printf("\n libcore motion_event buzzer not in schedule channel = %d zzz *****************************\n",event_channel); } else printf("\n libcore motion_event buzzer not enable channel = %d zzz *****************************\n",event_channel); } } else if(event_type == eActionSource_Body) //如果发生的事件是人形侦测事件 else if(event_type == eActionSource_Videolost)//如果发生的事件是视频丢失事件 if(skip_trigger == 0) { ::sdkapi_buzzer(100); } } return 0; }
03-08
<think>首先,用户的问题是:“fvcom运行文件tst_run.dat和chn_run.nml区别”。我需要用中文回答这个问题。问题似乎是关于FVCOM(一个海洋流体动力学模型)的运行文件:tst_run.dat和chn_run.nml的区别。 回顾我的知识:FVCOM使用不同的运行文件来配置模型。常见的文件包括运行控制文件(如run.dat或类似),但用户提到了tst_run.dat和chn_run.nml。 - tst_run.dat:这可能是一个特定的运行控制文件,用于测试(tst可能代表test)。在FVCOM中,运行文件通常包含模型参数、网格信息、边界条件等。 - chn_run.nml:.nml后缀表明这是一个Namelist文件。Namelist是Fortran中常见的输入文件格式,用于设置参数。chn可能代表channel或其他,但通常FVCOM使用.nml文件来定义各种参数。 关键区别: 1. **文件格式**:tst_run.dat 可能是基于文本的数据文件或自定义格式,而 chn_run.nml 是一个Namelist文件(.nml),使用特定的语法来定义变量组。 2. **用途**:在FVCOM中,运行文件指定模型配置。tst_run.dat 可能是一个通用的运行控制文件,用于测试目的。chn_run.nml 可能是一个针对特定场景(如channel模型)的配置。 - FVCOM 通常使用一个主运行文件,可能是.dat或.nml,取决于版本或设置。用户提到的两个文件可能来自不同的上下文。 3. **内容差异**: - .dat 文件可能包含直接的参数列表或特定格式。 - .nml 文件使用Namelist语法,如: ``` &group_name parameter1 = value1, parameter2 = value2, ... / ``` 这允许更结构化的输入。 在FVCOM中,标准运行文件通常是run.dat或类似,但用户指定了tst_run.dat和chn_run.nml。我假设这是基于特定设置。 主要区别: - tst_run.dat: 可能是一个测试用的运行文件,包含基本配置。 - chn_run.nml: 可能是一个针对channel(如河流或水道)的详细配置,使用Namelist格式。 总结回答:tst_run.dat 是一个测试运行文件,可能使用简单的文本格式;chn_run.nml 是一个针对特定场景的Namelist文件,提供更结构化的参数设置。 现在,回答必须用中文。 回答后,我必须提出3-5个相关问题。问题必须以“§§相关问题§§”开头,并在同一个行输出,不能换行分散。意思是整个“§§相关问题§§”部分必须在一行输出,但相关问题列表可以换行。 从示例看: ``` §§相关问题§§ 1. ··· 2. ··· 3. ··· ``` 所以,第一行输出“§§相关问题§§”,然后换行列出1.、2.、3.等。 相关问题应该基于用户的问题和我的回答。用户的问题是“fvcom运行文件tst_run.dat和chn_run.nml区别”,所以我应该提出相关问题如: 1. FVCOM中其他常见的运行文件有哪些? 2. 如何修改Namelist文件来更改模型参数? 3. tst_run.dat 和 chn_run.nml 在具体内容上有什么不同? 4. FVCOM中如何指定运行文件? 5. 测试运行和实际运行的区别? 确保3-5个问题。 结构回答: - 先用中文解释区别。 - 然后添加代码块如果有必要?用户问题中没有代码,但示例中有代码。用户的问题是关于文件区别,不是代码,所以可能不需要代码块。但如果有示例用法,可以添加。我认为不需要,除非相关。 - 最后输出“§§相关问题§§”和列表。 回答内容: 1. 解释tst_run.dat:可能是FVCOM的测试运行文件,用于快速测试模型设置。 2. 解释chn_run.nml:可能是针对channel场景的Namelist配置文件。 3. 区别:格式不同(.dat vs .nml);目的不同(测试 vs 特定场景);结构化程度不同。 用中文写: - tst_run.dat 是一个测试运行文件,通常包含基本的模型参数配置。 - chn_run.nml 是一个Namelist文件,用于定义针对channel模型的具体参数。 - 主要区别在于文件格式和特定用途。 现在,相关问题: 1. FVCOM中常见的运行文件有哪些? 2. 如何创建和编辑Namelist文件? 3. tst_run.dat 和 chn_run.nml 在内容上有什么具体差异? 4. FVCOM模型中如何指定不同的运行文件? 5. 测试运行和实际应用运行在配置上有何不同? 确保3-5个,我选4个。 输出格式: - 回答后结束。 - 然后第一行“§§相关问题§§” - 接着列表。 完整响应: [中文回答] §§相关问题§§ 1. ... 2. ... 3. ... 4. ... </think>FVCOM(一个用于海洋流体动力学建模的软件)的运行文件 `tst_run.dat` 和 `chn_run.nml` 主要区别在于文件格式、用途和内容结构: 1. **文件格式差异**: - `tst_run.dat`:通常是一个基于文本的.dat文件,使用自定义或简单的键值对格式(如纯文本参数列表)。它易于手动编辑,但不强制结构化。 - `chn_run.nml`:是一个Namelist文件(.nml后缀),遵循Fortran的Namelist输入格式。它使用特定的语法(如 `&group_name` 块)来组织参数,提高可读性和维护性。 2. **用途差异**: - `tst_run.dat`:文件名中的 "tst" 表示测试(test),常用于快速测试模型的基本运行配置(如简单网格设置或基本边界条件)。它聚焦于验证模型启动时的兼容性。 - `chn_run.nml`:文件名中的 "chn" 可能代表通道(channel),用于特定场景如河流或水道模拟。它包含更详细的参数配置(如物理过程设置、时间步长优化),适用于实际应用场景。 3. **内容结构差异**: - `tst_run.dat`:内容较为简单,往往是直接参数赋值(如 `GRID_FILE = 'grid.dat'`);适合初学者或快速原型开发。 - `chn_run.nml`:采用分组结构(示例代码),允许模块化定义变量: ```fortran &PARAMETERS TIME_STEP = 10.0, GRID_TYPE = 'channel', / ``` 这增强了参数的灵活性和错误检查能力。 总结:`tst_run.dat` 侧重于测试友好性和简易性,而 `chn_run.nml` 提供高级结构化和场景定制功能;选择取决于模拟需求(测试 vs 实际应用)。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值