SIMULINK_A7DAC  1.0
Control of A7_DAC device
main.cpp
Go to the documentation of this file.
1 
2 /**
3 
4  \mainpage Программа управления генератором сигналов A7_DAC
5 
6  \section Main Основные функции и классы:
7 
8  <list type="unnumbered">
9  <item> BRDC_main() - точка входа
10  <item> TF_SimulinkA7Dac - основной класс теста
11  <item> TF_SimulinkShared - обмен с Simulink через разделяемую память
12  <item> TL_SharedMemoryWrapper - управление разделяемой памятью
13  <item> TF_A7DacCtrl - управление модулем A7_DAC
14  <item> TF_PLL - управление синтезатором частоты на модуле A7_DAC
15  <item> TF_DDS - управление выводом сигнала через ЦАП на модуле A7_DAC
16  </list>
17 
18  ### Назначение параметров S-Function sm_ctrl
19  <list type="unnumbered" >
20  <item> D0 - канал ЦАП 0 - частота сигнала
21  <item> D1 - канал ЦАП 0 - начальная фаза сигнала
22  <item> D2 - канал ЦАП 0 - амплитуда сигнала
23  <item> D3 - канал ЦАП 1 - частота сигнала
24  <item> D4 - канал ЦАП 1 - начальная фаза сигнала
25  <item> D5 - канал ЦАП 1 - амплитуда сигнала
26  <item> D6 - длина импульса в отсчётах тактовой частоты
27  <item> D7 - резерв
28  </list>
29 
30 */
31 
32 #include "stdafx.h"
33 #include <locale.h>
34 
35 #include "ConsoleTestApi.h"
36 #include "TableApi.h"
37 
38 
39 #include "TF_Test.h"
40 #include "TF_SimulinkA7Dac.h"
41 
43 
44 //
45 //=== Console
46 //
47 HANDLE hConsoleOut;
48 
49 
50 int BRDC_main(int argc, BRDCHAR* argv[])
51 {
52 
53  int isFirstCallStep=1;
54  COORD rCursorPosition;
55 
56  // анализ командной строки
57  setlocale( LC_ALL, "Russian" );
58 
59  //=== Console Settings
60  {
61  SMALL_RECT rWindow;
62  COORD rCoord;
63  BOOL bret;
64  CONSOLE_SCREEN_BUFFER_INFO csbiInfo;
65 
66  hConsoleOut = GetStdHandle( STD_OUTPUT_HANDLE );
67 
68  GetConsoleScreenBufferInfo(hConsoleOut, &csbiInfo);
69 
70  rCoord=csbiInfo.dwSize;
71  rCoord.X=120;
72 
73  rWindow=csbiInfo.srWindow;
74  rWindow.Right = rCoord.X-1;
75 
76 
77  bret=SetConsoleScreenBufferSize(hConsoleOut, rCoord);
78  bret=SetConsoleWindowInfo( hConsoleOut, TRUE, &rWindow );
79  }
80 
81 
82  char *asColumnName[256] = {" TEST_NAME ", " D0 ", " D1 ", " D2 ", " D3 ", " D4 ", " D5 ", " D6 ", " D7 " };
83  int i, j, k;
84 
86 
87 
88  // Разбор командной строки
89 
90  TParse arParse[] = {
91  {_BRDC("tstudio"), &g_isTStudio, PARSE_CMDLINE_DEC },
92  };
93 
94 
95  int nCnt = sizeof(arParse)/sizeof(TParse);
96 
97  ParseCommandLine(argc, argv, arParse, nCnt);
98 
99  printf("LOG:Start test.\n");
100 
102 
103  TF_Test *pTest=NULL;
104  TF_Test *pTest2=NULL;
105 
106 
107  try
108  {
109  int ret;
110 
111 
112  pTest = new TF_SimulinkA7Dac( argc, argv );
113  pTest2 = NULL;
114 
115 
116  pTest->Prepare();
117  if( pTest2 )
118  pTest2->Prepare();
119 
120 
121 
122  CreateTable(asColumnName, 9, g_isTStudio);
123 
124  Sleep( 10 );
125  pTest->Start();
126  Sleep( 10 );
127  if( pTest2 )
128  pTest2->Start();
129 
130 
131  //int key;
132  for( ; ; )
133  {
134  if( kbhit_ex( g_isTStudio ) )
135  {
136  int key=_getch();
137  if( key==0x1B )
138  {
139  printf("LOG:Stop test.\n");
140  pTest->Stop();
141  if( pTest2 )
142  pTest2->Stop();
143  BRDC_printf( _BRDC("\n\nОтмена\n") );
144  Sleep( 100 );
145  }
146 
147 
148 
149  }
150  ret=pTest->isComplete();
151  if( ret )
152  {
153  BRDC_printf( _BRDC("\n\nВыход\n") );
154  if( pTest2 )
155  {
156  ret=pTest2->isComplete();
157  if( ret )
158  break;
159  } else
160  {
161  break;
162  }
163 
164  }
165 
166 
167 
168  pTest->Step();
169  if( pTest2 )
170  pTest2->Step();
171  Sleep( 100 );
172  }
173  pTest->GetResult();
174  if( pTest2 )
175  pTest2->GetResult();
176 
177 
178  delete pTest; pTest=NULL;
179  delete pTest2; pTest2=NULL;
180 
181  //delete pBrd; pBrd=NULL;
182 
183  }
184  catch( BRDCHAR* str )
185  {
186  BRDC_printf( _BRDC("ERROR: %s \n"), str );
187  }
188  catch( ... )
189  {
190  BRDC_printf( _BRDC("ERROR: Неизвестная ошибка выполнения программы\n") );
191  }
192 
193 
194  if( 0==g_isTStudio )
195  {
196  printf( "\n Press any key\n" );
197  _getch();
198  }
199 
201 
202  return 0;
203 }
204 
virtual int isComplete(void)=0
Definition: TF_Test.h:5
void StartSignal(int isTStudio)
virtual void Stop(void)=0
virtual void Step(void)=0
void StdoutFlushAndSetBufNull()
HANDLE hConsoleOut
Definition: main.cpp:47
virtual void Prepare(void)=0
virtual void Start(void)=0
virtual void GetResult(void)=0
void StopSignal(int isTStudio)
void ParseCommandLine(int argc, BRDCHAR *argv[], TParse arParse[], int nCnt)
U32 g_isTStudio
Definition: main.cpp:42
int BRDC_main(int argc, BRDCHAR *argv[])
Definition: main.cpp:50
S32 CreateTable(char *pColumnName[], U32 nCount, U08 isTStudio)
Definition: TableApi.cpp:25
int kbhit_ex(int isFlg)