Лабораторная работа: 2019 - Лаба 5
Описание
Характеристики лабораторной работы
Список файлов
//====================================== ========================================
//
// Title: Labwork 5
// Purpose: A short description of the application.
//
// Created on: 15.11.2019 at 10:01:12 by Gennady Kuzin.
// Copyright: NSU. All Rights Reserved.
// Hello. This code was written by Nikita P. and Vitaly V. It is our gift to future students of physical //department. Good luck!
//====================================== ========================================
//====================================== ========================================
// Include files
#include <ansi_c.h>
#include <cvirte.h>
#include <userint.h>
#include <tsani.h>
#include "Labwork 5.h"
#include "toolbox.h"
//====================================== ========================================
// Constants
#define N 256
#define M 30
//====================================== ========================================
// Types
int a = 0, b = 0, c = 0, e = 0, r = 0, d, q = 0;
const n = N;
double x ,y;
double result[4];
double bufir5[N],bufir6[N],bufir7[N],bufir8[N], X[N], Y[N],Z[N],T[N];
//====================================== ========================================
// Static global variables
static int panelHandle;
//====================================== ========================================
// Static functions
//====================================== ========================================
// Global variables
//====================================== ========================================
// Global functions
double* COUNT_COORDE(){
double u1 = 0, u2 = 0, u3 = 0, u4 = 0;
for (int p = 0; p<n; p++){
if (u1<bufir5[p]){
u1 = bufir5[p];
//result[0]=u1;
}
if (u2<bufir6[p]){
u2 = bufir6[p];
//result[1]=u2;
}
if (u3<bufir7[p]){
u3 = bufir7[p];
//result[2]=u3;
}
if (u4<bufir8[p]){
u4 = bufir8[p];
//result[3]=u4;
} }
result[0] = 3/3.6*5*(u2+u3-u1-u4)/(u1+u2+u3+u4);
result[1] = 3/3.6*5*(u4+u3-u1-u2)/(u1+u2+u3+u4);
return result;
}
void Read(){
if (b==0){
scopeStartRead("0", bufir5, N);
scopeStartRead("1", bufir6, N);
scopeStartRead("2", bufir7, N);
scopeStartRead("3", bufir8, N);
DeleteGraphPlot(panelHandle, PANEL_GRAPH, -1, VAL_IMMEDIATE_DRAW);
COUNT_COORDE();
SetCtrlVal(panelHandle, PANEL_X_COORD,x);
SetCtrlVal(panelHandle, PANEL_Y_COORD,y);
PlotY(panelHandle, PANEL_GRAPH, bufir5, N, VAL_DOUBLE, VAL_THIN_LINE, VAL_SOLID_SQUARE, VAL_SOLID, 1, VAL_RED);
PlotY(panelHandle, PANEL_GRAPH, bufir6, N, VAL_DOUBLE, VAL_THIN_LINE, VAL_SOLID_SQUARE, VAL_SOLID, 1, VAL_YELLOW);
PlotY(panelHandle, PANEL_GRAPH, bufir7, N, VAL_DOUBLE, VAL_THIN_LINE, VAL_SOLID_SQUARE, VAL_SOLID, 1, VAL_WHITE);
PlotY(panelHandle, PANEL_GRAPH, bufir8, N, VAL_DOUBLE, VAL_THIN_LINE, VAL_SOLID_SQUARE, VAL_SOLID, 1, VAL_GREEN);}
else{
scopeStartRead("0", bufir5, M);
scopeStartRead("1", bufir6, M);
scopeStartRead("2", bufir7, M);
scopeStartRead("3", bufir8, M);
DeleteGraphPlot(panelHandle, PANEL_GRAPH, -1, VAL_IMMEDIATE_DRAW);
X[r]= (COUNT_COORDE())[0];
Y[r]= (COUNT_COORDE())[1];
double c[2];
c[0] = X[r];
c[1] = Y[r];
//Z[r]= (COUNT_COORDE())[2];
//T[r]= (COUNT_COORDE())[3];
PlotStripChart (panelHandle, PANEL_SC, c, 2, 0, 0, VAL_DOUBLE);
//PlotStripChart(panelHandle, PANEL_SC, c, 1,1,0, VAL_DOUBLE);
if (q==0){
PlotOval (panelHandle, PANEL_GRAPH_3, -3, -3, 3, 3, VAL_RED, VAL_TRANSPARENT); }
//PlotPoint (panelHandle, PANEL_GRAPH_3, c[0], c[1], VAL_SOLID_CIRCLE, VAL_YELLOW);
if (q!=0){DeleteGraphPlot(panelHandle, PANEL_GRAPH_3, d, VAL_IMMEDIATE_DRAW);}
d = PlotPoint (panelHandle, PANEL_GRAPH_3, c[0], c[1], VAL_SOLID_CIRCLE, VAL_YELLOW);
q = 2;
DeleteGraphPlot(panelHandle, PANEL_GRAPH_2, -1, VAL_IMMEDIATE_DRAW);
PlotY(panelHandle, PANEL_GRAPH_2, X, N, VAL_DOUBLE, VAL_THIN_LINE, VAL_SOLID_SQUARE, VAL_SOLID, 1, VAL_RED);
PlotY(panelHandle, PANEL_GRAPH_2, Y, N, VAL_DOUBLE, VAL_THIN_LINE, VAL_SOLID_SQUARE, VAL_SOLID, 1, VAL_YELLOW);
//PlotY(panelHandle, PANEL_GRAPH_2, Z, N, VAL_DOUBLE, VAL_THIN_LINE, VAL_SOLID_SQUARE, VAL_SOLID, 1, VAL_WHITE);
//PlotY(panelHandle, PANEL_GRAPH_2, T, N, VAL_DOUBLE, VAL_THIN_LINE, VAL_SOLID_SQUARE, VAL_SOLID, 1, VAL_GREEN);
//MasXY(e);
SetCtrlVal(panelHandle, PANEL_X_COORD,x);
SetCtrlVal(panelHandle, PANEL_Y_COORD,y);
PlotY(panelHandle, PANEL_GRAPH, bufir5, M, VAL_DOUBLE, VAL_THIN_LINE, VAL_SOLID_SQUARE, VAL_SOLID, 1, VAL_RED);
PlotY(panelHandle, PANEL_GRAPH, bufir6, M, VAL_DOUBLE, VAL_THIN_LINE, VAL_SOLID_SQUARE, VAL_SOLID, 1, VAL_YELLOW);
PlotY(panelHandle, PANEL_GRAPH, bufir7, M, VAL_DOUBLE, VAL_THIN_LINE, VAL_SOLID_SQUARE, VAL_SOLID, 1, VAL_WHITE);
PlotY(panelHandle, PANEL_GRAPH, bufir8, M, VAL_DOUBLE, VAL_THIN_LINE, VAL_SOLID_SQUARE, VAL_SOLID, 1, VAL_GREEN);
}
}
void INITPXI()
{ double f;
scopeSlot(5);
scopeFrequency(NULL, 60*1e6, N);
scopeVertical("0", 2, SCOPE_50_OHM);
scopeVertical("1", 2, SCOPE_50_OHM);
scopeVertical("2", 2, SCOPE_50_OHM);
scopeVertical("3", 2, SCOPE_50_OHM);
scopeTrigger(NULL, 0.2, SCOPE_POSITIVE);
portOut(0,r);
scopeStatus();
}
void SEPARATER()
{ double f;
scopeSlot(5);
scopeFrequency("PFI1", 10*1e6, M);
scopeVertical("0", 5, SCOPE_50_OHM);
scopeVertical("1", 5, SCOPE_50_OHM);
scopeVertical("2", 5, SCOPE_50_OHM);
scopeVertical("3", 5, SCOPE_50_OHM);
scopeVertical("7", 5, SCOPE_50_OHM);
scopeTrigger("7", 0.5, SCOPE_POSITIVE);
portMask(0,0xff);
portOut(0, 12);
scopeStart(M);
scopeStatus();
b = 1;
}
/// HIFN The main entry-point function.
int main (int argc, char *argv[])
{
int error = 0;
/* initialize and load resources */
nullChk (InitCVIRTE (0, argv, 0));
errChk (panelHandle = LoadPanel (0, "Labwork 5.uir", PANEL));
/* display the panel and run the user interface */
errChk (DisplayPanel (panelHandle));
errChk (RunUserInterface ());
Error:
/* clean up */
DiscardPanel (panelHandle);
return 0;
}
//====================================== ========================================
// UI callback function prototypes
/// HIFN Exit when the user dismisses the panel.
int CVICALLBACK panelCB (int panel, int event, void *callbackData,
int eventData1, int eventData2)
{
if (event == EVENT_CLOSE)
QuitUserInterface (0);
return 0;
}
int CVICALLBACK COMMANDBUTTON (int panel, int control, int event,
void *callbackData, int eventData1, int eventData2) {
switch (event) {
case EVENT_COMMIT:
break;
case EVENT_LEFT_CLICK:
if (a==0)
{a= 1;
INITPXI();
}
else{
a = 0;
scopeClose();}
break;
}
return 0;
}
int CVICALLBACK TIMER (int panel, int control, int event,
void *callbackData, int eventData1, int eventData2) {
switch (event) {
case EVENT_TIMER_TICK:
if (a == 1){
Read();
}
break;
case EVENT_DISCARD:
break;
}
return 0;
}
int CVICALLBACK COMMANDBUTTON_2 (int panel, int control, int event,
void *callbackData, int eventData1, int eventData2) {
switch (event) {
case EVENT_COMMIT:
break;
case EVENT_LEFT_CLICK:
if (a==0)
{a= 1;
SEPARATER();
//portOut(0,5000);
}
else{
a = 0;
scopeClose();}
break;
}
return 0;
}
int CVICALLBACK OK (int panel, int control, int event,
void *callbackData, int eventData1, int eventData2) {
switch (event) {